Page History
Publication Claim
Scenario 2: A new researcher joins the institution and logins for the first time in the repository. The publication claim services found most of their publications in the OpenAIRE network and prompts for import. The researcher reviews the list, confirms the authorship and imports the publication saving a significant amount of (often publicly payed) time. Moreover, the authorship confirmation will come back later to OpenAIRE offering useful information about the data quality and potential enrichment. The same applies for publications authored by researchers in different institutes, having the data in multiple repositories makes the data more reliable and raises the chance to get more information and content from any of the authors.
...
The service has been designed to be independent from a specific provider or implementation so that it can be easily extended and maintained over time. Moreover, multiple providers can be active at the same time improving the chance to save researchers time.
In the original plan an integration with the ReCiter open source platform was originally planned but over the phase 2 we found that the internal data structure of ReCiter was too tight to the PubMed Article Model to be adapted to work with the data provided by the openAIRE Research Graph within the budget limit and for such reason we switched to a direct integration with the openAIRE Research Graph This feature currently only supports the OpenAIRE Research Graph via the Publication REST API. Other good (future) candidates to be integrated via such framework are ORCID or commercial databases via their authors' IDs.
Data source
Enabling Publication Claim
In order to use Publication Claim, you MUST first enable:
No additional settings are required, but this feature only works for users who have a Researcher Profile established, and when Quality Assurance is enabled.
Data source
The OpenAIRE Publication The openAIRE Publication REST API are used to retrieve publication that could be authored by researcher at the Institution. The openAIRE OpenAIRE Publication REST API are queried using the names known by the repository for its researchers, the retrieve list is later reduced passing identified publications to a pipeline of JAVA classes that can promote or reject his inclusion in the suggestion list. Publications previously discarded by the researcher are automatically filter out avoiding to re-present the same publication again and again.
...
Two external source providers, openAIRE Publications By Title and By Author have been defined according to the standard DSpace 7 External Sources framework. It is activated in the config/spring/api/external-services.xml
as follow
...
Three endpoints have been designed to interact with the publication claim service. They are documented in our REST Contract.
/api/integration/suggestionsources
to provide access to summary information about the available suggestion from each source (openaire, orcid, etc.)/api/integration/suggestiontargets
to provide access to summary information about the available suggestions for a specific researcher/api/integration/suggestions
to provide access to the detailed suggestions so that they can be reviewed and managed by the repository manager or the researcher to whom they related
/api/integration/suggestionsources
Suggestion Sources Endpoints
Back to the list of all defined endpoints
Main Endpoint
/api/integration/suggestionsources
It returns a paginated list of suggestion sources. All the sources are returned regardless to the existence or less of suggestions. This endpoint is reserved to administrators
single entry
GET api/integration/suggestionsources/<:source-key>
It returns the data from a specific source. This endpoint is reserved to administrators
sample for a source /api/integration/suggestionsources/reciter
{
"id": "reciter",
"total": 2,
"type": "suggestionsource",
"_links": {
"suggestiontargets": {
"href": "https://dspace7.4science.cloud/server/api/integration/suggestiontargets/search/findBySource?source=reciter"
},
"self": {
"href": "https://dspace7.4science.cloud/server/api/integration/suggestionsources/reciter"
}
}
}
Attributes
- the id attribute is the key that identify the source
- the total attribute is the number of target with suggestions. It can be 0 if there are no target with suggestions
Exposed links:
- suggestiontargets: link to the suggestion targets entries
Status codes:
- 200 Ok - if the operation succeed
- 401 Unauthorized - if you are not authenticated
- 403 Forbidden - if you are not logged in with sufficient permissions
- 404 Not found - if the source doesn't exist or is not active in the system (when 403 doesn't apply)
/api/integration/suggestiontargets
Suggestion Targets Endpoints
Back to the list of all defined endpoints
Main Endpoint
/api/integration/suggestiontargets
Unsupported. The suggestion targets can be retrieved only by source or by target, see the search methods below.
single entry
GET api/integration/suggestiontargets/source:target-id
It returns the data from one target. This endpoint is accessible to the owner of the target profile and to the administrators
sample for a suggestion /api/integration/suggestiontargets/scopus:nhy567-9d6d-ty67-b905-fef0f8cae26
{
"id": "scopus:nhy567-9d6d-ty67-b905-fef0f8cae26",
"display": "Digilio, Giuseppe",
"source": "scopus",
"total": 3,
"type": "suggestiontarget",
"_links": {
"target": {
"href": "https://dspace7.4science.cloud/server/api/core/items/nhy567-9d6d-ty67-b905-fef0f8cae26"
},
"suggestions": {
"href": "https://dspace7.4science.cloud/server/api/integration/suggestions/search/findByTargetAndSource?target=nhy567-9d6d-ty67-b905-fef0f8cae26"
},
"self": {
"href": "https://dspace7.4science.cloud/server/api/integration/suggestiontargets/scopus:nhy567-9d6d-ty67-b905-fef0f8cae26"
}
}
}
Attributes
- the display attribute is the preferred name of the linked Person
- the source attribute is the key that identifies the source of the suggestion
- the total attribbute is the number of related suggestions. Must be greater than 0
Exposed links:
- target: link to the items that represent the person to whom the suggestions are proposed
- suggestions: link to the suggestions entries
Status codes:
- 200 Ok - if the operation succeed
- 401 Unauthorized - if you are not authenticated
- 403 Forbidden - if you are not logged in with sufficient permissions
- 404 Not found - if there are no suggestions for the requested profile (when 403 doesn't apply)
Search methods
findBySource
/api/integration/suggestiontargets/search/findBySource?source=<:source>
The supported parameters are:
- page, size see pagination
- source: mandatory, the key that identify the source to query
It returns the list of targets with their suggestion count for the specified source. Only targets that have at least one suggestion are returned. This endpoint is reserved to administrators
Example:
{
"_embedded": {
"suggestiontargets": [
{
"id": "reciter:gf3d657-9d6d-4a87-b905-fef0f8cae26",
"display": "Bollini, Andrea",
"source": "reciter",
"total": 31,
"type": "suggestiontarget",
"_links": {
"target": {
"href": "https://dspace7.4science.cloud/server/api/core/items/gf3d657-9d6d-4a87-b905-fef0f8cae26"
},
"suggestions": {
"href": "https://dspace7.4science.cloud/server/api/integration/suggestions/search/findByTargetAndSource?target=gf3d657-9d6d-4a87-b905-fef0f8cae26c&source=reciter"
},
"self": {
"href": "https://dspace7.4science.cloud/server/api/integration/suggestiontargets/reciter:gf3d657-9d6d-4a87-b905-fef0f8cae26"
}
}
},
{
"id": "reciter:nhy567-9d6d-ty67-b905-fef0f8cae26",
"display": "Digilio, Giuseppe",
"source": "reciter",
"total": 12,
"type": "suggestiontarget",
"_links": {
"target": {
"href": "https://dspace7.4science.cloud/server/api/core/items/nhy567-9d6d-ty67-b905-fef0f8cae26"
},
"suggestions": {
"href": "https://dspace7.4science.cloud/server/api/integration/suggestions/search/findByTargetAndSource?target=nhy567-9d6d-ty67-b905-fef0f8cae26&source=reciter"
},
"self": {
"href": "https://dspace7.4science.cloud/server/api/integration/suggestiontargets/reciter:nhy567-9d6d-ty67-b905-fef0f8cae26"
}
}
}
]
},
"_links": {
"self": {
"href": "https://dspace7.4science.cloud/server/api/integration/suggestiontargets/search/findBySource?source=reciter"
}
},
"page": {
"size": 20,
"totalElements": 2,
"totalPages": 1,
"number": 0
}
}
Status codes:
- 200 Ok - if the operation succeed
- 400 Bad Request - if the source parameter is missing
- 401 Unauthorized - if you are not authenticated
- 403 Forbidden - if you are not logged in as an administrator
findByTarget
/api/integration/suggestiontargets/search/findByTarget?target=<:target-uuid>
The supported parameters are:
- page, size see pagination
- target: mandatory, the uuid that identify the target profile
It returns the list of targets with their suggestion count for the specified profile. Only suggestion targets that have at least one suggestion are returned. This endpoint is reserved to administrators and the owner of the target profile
Example:
{
"_embedded": {
"suggestiontargets": [
{
"id": "reciter:gf3d657-9d6d-4a87-b905-fef0f8cae26",
"display": "Bollini, Andrea",
"source": "reciter",
"total": 31,
"type": "suggestiontarget",
"_links": {
"target": {
"href": "https://dspace7.4science.cloud/server/api/core/items/gf3d657-9d6d-4a87-b905-fef0f8cae26"
},
"suggestions": {
"href": "https://dspace7.4science.cloud/server/api/integration/suggestions/search/findByTargetAndSource?target=gf3d657-9d6d-4a87-b905-fef0f8cae26c&source=reciter"
},
"self": {
"href": "https://dspace7.4science.cloud/server/api/integration/suggestiontargets/reciter:gf3d657-9d6d-4a87-b905-fef0f8cae26"
}
}
},
{
"id": "scopus:gf3d657-9d6d-4a87-b905-fef0f8cae26",
"display": "Bollini, Andrea",
"source": "scopus",
"total": 11,
"type": "suggestiontarget",
"_links": {
"target": {
"href": "https://dspace7.4science.cloud/server/api/core/items/gf3d657-9d6d-4a87-b905-fef0f8cae26"
},
"suggestions": {
"href": "https://dspace7.4science.cloud/server/api/integration/suggestions/search/findByTargetAndSource?target=gf3d657-9d6d-4a87-b905-fef0f8cae26&source=scopus"
},
"self": {
"href": "https://dspace7.4science.cloud/server/api/integration/suggestiontargets/scopus:gf3d657-9d6d-4a87-b905-fef0f8cae26"
}
}
}
]
},
"_links": {
"self": {
"href": "https://dspace7.4science.cloud/server/api/integration/suggestiontargets/search/findByTarget?target=gf3d657-9d6d-4a87-b905-fef0f8cae26"
}
},
"page": {
"size": 20,
"totalElements": 2,
"totalPages": 1,
"number": 0
}
}
Status codes:
- 200 Ok - if the operation succeed
- 204 No Content - if no suggestion targets are available for the specified profile
- 400 Bad Request - if the target parameter is missing or invalid
- 401 Unauthorized - if you are not authenticated
- 403 Forbidden - if you are not logged in with sufficient permissions
/api/integration/suggestions
Suggestions Endpoints
Back to the list of all defined endpoints
Main Endpoint
/api/integration/suggestions
Unsupported. The suggestions can be retrieved only by source and target or via direct link, see the single entry and search method below.
single entry
GET api/integration/suggestions/<:suggestion-id>
It returns the data from one suggestion. The suggestion-id is a String generated by the source, as it must be unique for source, target and identified object to be imported it is usually represented by a combination of such elements
sample for a suggestion /api/integration/suggestions/reciter:gf3d657-9d6d-4a87-b905-fef0f8cae26:24694772
{
"id": "reciter:gf3d657-9d6d-4a87-b905-fef0f8cae26:24694772",
"display": "publication one",
"source": "reciter",
"score": "62.7",
"external-source-uri": "https://dspace7.4science.cloud/server/api/integration/reciterSourcesEntry/pubmed/entryValues/24694772",
"evidences": {
"acceptedRejectedEvidence": {
"score": "2.7",
"notes": "some notes, eventually empty or null"
},
"authorNameEvidence": {
"score": "0",
"notes": "some notes, eventually empty or null"
},
"journalCategoryEvidence": {
"score": "6",
"notes": "some notes, eventually empty or null"
},
"affiliationEvidence": {
"score": "23.7",
"notes": "some notes, eventually empty or null"
},
"relationshipEvidence": {
"score": "9",
"notes": "some notes, eventually empty or null"
},
"educationYearEvidence": {
"score": "3.6",
"notes": "some notes, eventually empty or null"
},
"personTypeEvidence": {
"score": "4",
"notes": "some notes, eventually empty or null"
},
"articleCountEvidence": {
"score": "6.7",
"notes": "some notes, eventually empty or null"
},
"averageClusteringEvidence": {
"score": "7",
"notes": "some notes, eventually empty or null"
}
},
"metadata": {
"dc.identifier.uri": [
{
"value": "https://publication/0000-0003-3681-2038",
"language": null,
"authority": null,
"confidence": -1,
"place": -1
}
],
"dc.title" : [
{
"value" : "publication one",
"language" : null,
"authority" : null,
"confidence" : -1
}
],
"dc.date.issued" : [
{
"value" : "2010-11-03",
"language" : null,
"authority" : null,
"confidence" : -1
}
]
},
"type": "suggestion",
"_links": {
"target": {
"href": "https://dspace7.4science.cloud/server/api/core/items/gf3d657-9d6d-4a87-b905-fef0f8cae26"
},
"self": {
"href": "https://dspace7.4science.cloud/server/api/integration/suggestions/reciter:gf3d657-9d6d-4a87-b905-fef0f8cae26:24694772"
}
}
}
Search methods
Get suggestions by a given target
/api/integration/suggestions/search/findByTargetAndSource?target=:target-uuid&source=:source-key[&size=10&page=0]
It returns the list of suggestions and corresponding evidence from a specific source for the requested individual/target
The supported parameters are:
- page, size see pagination. Data can be sorted by trust desc (default) or asc. Please note that the sort parameter must use the word trust instead than score for the sorting as score have a reserved meaning
- target: mandatory, the uuid associated with your target profile
- source: mandatory, the key of the source that you want to query for suggestion
Return codes:
- 200 OK - if the operation succeed
- 400 Bad Request - if the uuid parameter is missing or invalid
sample for a search /server/api/integration/suggestions/search/findByTargetAndSource?target=gf3d657-9d6d-4a87-b905-fef0f8cae26c&source=reciter
{
"_embedded": {
"reciterSourceEntries": [
{
"id": "24694772",
"display": "publication one",
"source": "reciter",
"external-source-uri": "https://dspace7.4science.cloud/server/api/integration/reciterSourcesEntry/pubmed/entryValues/24694772",
"evidences": {
"acceptedRejectedEvidence": {
"score": "2.7",
"notes": "some notes, eventually empty or null"
},
"authorNameEvidence": {
"score": "0",
"notes": "some notes, eventually empty or null"
},
"journalCategoryEvidence": {
"score": "6",
"notes": "some notes, eventually empty or null"
},
"affiliationEvidence": {
"score": "xxx",
"notes": "some notes, eventually empty or null"
},
"relationshipEvidence": {
"score": "9",
"notes": "some notes, eventually empty or null"
},
"educationYearEvidence": {
"score": "3.6",
"notes": "some notes, eventually empty or null"
},
"personTypeEvidence": {
"score": "4",
"notes": "some notes, eventually empty or null"
},
"articleCountEvidence": {
"score": "6.7",
"notes": "some notes, eventually empty or null"
},
"averageClusteringEvidence": {
"score": "7",
"notes": "some notes, eventually empty or null"
}
},
"metadata": {
"dc.identifier.uri": [
{
"value": "https://publication/0000-0003-3681-2038",
"language": null,
"authority": null,
"confidence": -1,
"place": -1
}
],
"dc.title" : [
{
"value" : "publication one",
"language" : null,
"authority" : null,
"confidence" : -1
}
],
"dc.date.issued" : [
{
"value" : "2010-11-03",
"language" : null,
"authority" : null,
"confidence" : -1
}
]
},
"type": "suggestion",
"_links": {
"target": {
"href": "https://dspace7.4science.cloud/server/api/core/items/gf3d657-9d6d-4a87-b905-fef0f8cae26"
},
"self": {
"href": "https://dspace7.4science.cloud/server/api/integration/suggestions/reciter:gf3d657-9d6d-4a87-b905-fef0f8cae26c:24694772"
}
}
}
]
},
"_links": {
"self": {
"href": "https://dspace7.4science.cloud/server/api/integration/suggestions/search/findByTargetAndSource?target=gf3d657-9d6d-4a87-b905-fef0f8cae26c&source=reciter"
}
},
"page": {
"size": 20,
"totalElements": 1,
"totalPages": 1,
"number": 0
}
}
Import suggestion
See the WorkspaceItem endpoint for details on how to import a suggestion
Discard suggestion
DELETE api/integration/suggestions/<:suggestion-id>
This discard the given suggestion. The endpoint is restricted to owners of the suggestion target and administrators
Status codes:
- 204 No content - if the operation succeed
- 401 Unauthorized - if you are not authenticated
- 403 Forbidden - if you are not logged in with sufficient permissions
- 404 Not found - if the suggestion doesn't exist (or was already discarded)