Page History
Warning |
---|
UNMAINTAINED. This documentation has been moved to the official DSpace documentation at COAR Notify - LDN Services |
Table of Contents | ||
---|---|---|
|
Introduction
The Arcadia-funded COAR Notify Project is developing and accelerating community adoption of a standard, interoperable, and decentralised approach to linking research outputs hosted in the distributed network of repositories with resources from external services such as overlay-journals and open peer review services, using linked data notifications. As part of this project, COAR is funding the development of platforms and systems to support the exchange of linked data notifications across partner organisations and the workflows to manage notifications in those platforms and systems. As the largest adopted repository platform in the World one of the first platforms to be addressed is DSpace the implementation of which has been entrusted to 4Science.
The application can receive and send LDN messages concerning items with external systems. The LDN system is the protocol of message exchanging; the Quality Assurance system is the mechanism used to approve or reject item updates.
How to enable
Configuration properties involved:
ldn.enabled = true|false | true => message is received and managed the server responds with an HTTP 202 code |
ldn.notify.inbox = <ldn inbox endpoint> | where the ldn inbox rest service is mapped on the current DSpace instance. IE: ${dspace.server.url}/ldn/inbox |
coar-notify.ip-range.enabled = true|false | enables the validation against the IP of received ldn message against the registered range |
Relation with the Quality Assurance Correction Service
The LDN system, as a message exchanging i/o system, has an inbox and an outbox. Every LDN message refers to a Notify Service: all the Notify Services are configured manually from the admin application form. A Notify Service is just like an authority labelled on LDN messages.
...
The match between LDN message type and the QAEvent topic (suddenly created by the evaluation of the ldn message from the queue) is configured onto ldn-coar-notify.xml spring file. Every Processor owns a list of actions. An action is often an email to be sent and an action to create the qa event. The LDN processor receives the QAEvent topic as a parameter and creates the relative QAEvent.
LDN Autodiscovery mechanism
Third party system can retrieve the location of the repository LDN InBox via the LDN autodiscovery mechanism, nevertheless to be able to interact with DSpace they need to be approved by a Repository Administrators and listed in the LDN Services Directory (see next paragraph); otherwise their messages will be flagged as untrusted and not processed at all.
LDN Services Directory (Registering Services)
Anchor | ||||
---|---|---|---|---|
|
...
Name: a label for the Notify Service used on the UI |
Description: the description of the Notify Service - add details here |
Service URL: the url of the remote Notify Service. This is mostly used as a descriptive URL when sending notification to an external system. The service URL must not be confused with the inbox url. As said this url is descriptive so we expect the main application URL to be added here |
Level of Trust: floating point number value accepted between 0 and 1. This value is used to assign to the service a TRUST value that describes how much reliable the external service is. This value is not used if the automatic processing of QA Events is disabled Check the configuration file dspace/config/spring/api/qaevents.xml to enable the automatic approval When the automatic approval is configured the trust value of the LDN Service is check against configured score thresholds. Thresholds for automatic Approval/Rejection/Ignoring can be set. Also within a specified range QA Events will need a manual approval |
Service IP Range: two IP addresses expected as minimum and maximum. This range is used to validate the received LDN Messages. When the LDN notification doesn't match the configured IP Range the notification is stored as UNTRUSTED |
LDN Inbox URL: this is the url used to send the LDN Notifications. This url is also used when a notification is received to retrieve the registered LDN service it belongs to This URL must is unique among the registered LDN Services |
Inbound Pattern: the section for Inbound pattern is the section which describes what operations/actions are supported by the external service The pattern itself can be selected from the dropdown as there's a list of pattern. To better understand pattern usage please The item filter is used to describe which item can be processed for the current LDN Service/Inbound pattern. The automatic flag when set to true the ldn message exchange is performed automatically right after the item submission has finished. |
LDN Inbox queueing
LDN incoming messages are stored into the ldn_message database table. As far as the property ldn.enabled is true and the incoming json is valid, the LDN Message is stored on the table. Together with the storage of the record, the queue status of the message is initialized. The queue_status column of the table contains the status of the LDN message inside the queue. All the possible queue_status values are described into the java class org.dspace.app.ldn.LDNMessageEntity as integer constants.
...
Please consider that this means that the corresponding QAEvent is not automatically created as soon as the LDN Message is received.
The QA Event related to the LDN Notification will be created only once the notification is successfully processed by the extractor (LDN queue status set to QUEUE_STATUS_PROCESSED).
Notify status boxes
Considering these possible scenarios here at: COAR Notify Protocol: Example Scenarios
...
When Offer message has been followed by a related Announce incoming message, the box shown is blue! It is blue because receiving an Announce means - then the message is extracted - we produce a new QA Event. As every QA Event it is shown on Item Page and myDSpace page.
Configuring automatic QA evaluation using the Level of Trust
Score is a number 0 < # < 1.
If the proper configuration is enabled an automatic check for approval of QAEvents is run once the LDN message is extracted.
On qaevents.xml file the bean qaScoreEvaluation we can configure three different boundaries to automatically approve/reject/ignore the level of trust:
...
This feature must not be confused with the automatic triggering for LDN Inbound pattern
Sending LDN Notifications during the submission of an item
In the example below it is shown the submission of an Item with a new section for COAR-Notify.
In this section we can manually choose ldn-services (which were not marked as automatic) in order to ask for Review, Endorsement and Ingest to external services.
If No (non-automatic) pattern has been configured for the LDN Service this service will not be displayed in any of the dropdown.
Automatic Inbound pattern triggering
When adding new LDN Inbound pattern to a LDN Service we can select if a pattern has to be automatic or not.
...
- No action is required during the submission to select the LDN Service for a specific pattern
- The service in not even listed in the COAR notify step of the submission
Item filters for Inbound pattern
When adding inbound pattern to a service we have the possibility to add an item-filter for each described pattern
...
Has one Bitstream = the item must have exactly one bundle named "ORIGINAL";
Item is public = anonymous user can see/read the item;
Title starts with pattern = the dc.title metadata of the item must start with 'Pattern';
Type equals dataset = the dc.type metadata of the item must be 'Dataset';
Type equals dataset = the dc.type metadata of the item must be 'Journal Article';
item-filter.xml has all item filters declarations: only the ones declared inside the ldnItemFilters map are shown.
The LDN Consumer
The LDN Consumer is the consume responsible for generating the outgoing LDN Notification.
...
event.consumer.ldnmessage.class = org.dspace.app.ldn.LDNMessageConsumer event.consumer.ldnmessage.filters = Item+Install |
---|
Understanding the structure of the LDN Notification
The LDN Notification includes some important section many of these if improperly set might led to errors in evaluations on the notification
Let's take a deeper look at the LDN Notification structure
@context
The context section is the same for any LDN Notification
|
---|
actor
This section describes the actor which performs the request
This is a descriptive section and doesn't include important information
|
---|
context
This is one of the most important section.
In this section we have a description of the Item being involved in the LDN Notification
...
|
---|
id
The identifier of the LDN notification (Each notification has a different id)
"id": "urn:uuid:94ecae35-dcfd-4182-8550-22c7164fe23f" |
---|
inReplyTo
This field is used to reply to other LDN notification so that the system knows if the current notification is a response
"inReplyTo": "urn:uuid:0370c0fb-bb78-4a9b-87f5-bed307a509dd" |
---|
object
This is a descriptive section of the received Review, Endorsement etc..
...
|
---|
origin
This is an important section since it is used (for incoming notifications) to determine the service among the registered ones.
If the service is not recognized as registered the notification is untrusted
...
|
---|
target
This section is used to describe the target system involved in the notification workflow
|
---|
type
This type section is important since it's determining how to process/evaluate any received notification
|
---|
...
Testing
Request Endorsement (LDN Message on item submission)
Let's configure a new Notify Service such as:
...
Create a new Community: | |
Create a new Collection inside the community created above. It is important for this community to have no Entity Type set. Take a look into the item-submission.xml file for the "traditional" steps sequence configuration. Here we've set the coarnotify-step! The traditional step sequence is used as the default, and the default is used for Collection with no entity type associated. If the coar-notify step is needed for every collection possible, the entry-step must be added onto every <submission-process> described into item-submission.xml | |
Create a new Item, select the collection created above. As expected we see the COAR Notify section: here it is the ldn request configuration: comboes for Review, Endorsement and Ingest are filled with the corresponding configured LDN Services. For this example we see only one value for the Endorsement combo (see the Inbound Pattern configured onto the Notify Service named NotifyService Score0.123 - first screenshot of this paragraph) A new LDN Message of type Offer: Endorsement Action is stored and enqueued! As soon as the Extractor manages it, it is enrouted to the Processor configured at ldn-coar-notify.xml (as one of the <outcomingProcessors>). The processor is the bean named outcomingAnnounceEndorsementAction, which lists the SendLDNMessageAction. So, it is only at this point, when the action SendLDNMessageAction is executed - that the notification is sent out to the external Notify Service. To whom the notification is sent out? To the url configured as the LDN Inbox property of the Notify Service (see above: https://notify-inbox.info/inbox/). | |
as soon as our Offer is correctly received on the Notify Service side, the Notify Service has to provide us - asynchronously as a separate Acknowledge LDN message - the Acceptance or Rejection of the Endorsement we offered. When Acceptance is received: The Acknowledge LDN Message - when received - is managed by the Processor configured into the bean named acceptAckAction. When Rejection is received: The Acknowledge LDN Message - when received - is managed by the Processor configured into the bean named rejectAckAction. | Until an Acknowledge or an Announce is received for this item, on the item page you can see the upper yellow window as: |
at time of writing COAR service for test purposes is responding an HTTP 500 as we sent the Offer. This error did not exist back in December 2023 when we firstly developed the LDN implementation. |
Testing Announce Review against current repository
Let's trigger an Request Review (see COAR official pattern documentation here).
...
Let's accept it with a click on the Green Check.
Go back to the item page to see the new Review metadata!
Postman Collection for testing COAR-Notify Feature
Here’s the Postman collection for all test scenarios:
...