Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

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)