Skip to content

Import ORCIDIO

Adding an ORCIDIO import to your ontology with ODK

The Open Researcher and Contributor Identifier (ORCID) is a global, unambiguous way to identify a researcher. ORCID URIs (e.g., https://orcid.org/0000-0003-4423-4370) can therefore be used to unambigously and actionably attribute various aspects of ontology terms in combination with DC Terms or IAO predicates. However, URIs themselves are opaque and it is difficult to disambiguate to which person an ORCID corresponds when browsing an ontology (e.g., in Protégé).

ORCIDIO is an ontology that declares ORCID URIs as named individuals and associates basic metadata (e.g., name, description) to each such that tools like Protégé can display a human-readable label rather than the URI itself as in the following example.

In this guide, we discuss how to add ORCIDIO to your ODK setup.

1. Include ORCIDIO as an import into the ODK config file

In your ODK configuration (e.g. src/ontology/myont-odk.yaml), add the following to the import_group:

import_group:
  annotation_properties:
    - rdfs:label
    - dc:description
    - dc:source
    - IAO:0000115
  products:
    - id: orcidio
      mirror_from: https://w3id.org/orcidio/orcidio.owl
      module_type: filter
      base_iris:
        - https://orcid.org/

The list of annotation properties, in particular dc:source, is important for the filter module to work (ORCIDIO relies heavily on axiom annotations for provenance).

2. Update your catalog

TODO: "as usual" should be re-written to cross-link to another guide about updating the catalog (or don't say as usual to keep this more self-contained) As usual, add a statement into your catalog (src/ontology/catalog-v001.xml):

 <uri name="http://purl.obolibrary.org/obo/ro/imports/orcidio_import.owl" uri="imports/orcidio_import.owl"/>

3. Update the edit file

TODO: "as usual" should be re-written to cross-link to another guide about updating the edit file (or don't say as usual to keep this more self-contained) As usual, add an imports declaration to your edit file (src/ontology/myont-edit.owl):

Import(<http://purl.obolibrary.org/obo/ro/imports/orcidio_import.owl>)

TODO: link to explanation of base merging strategy Note: This is not necessary when using the base merging strategy (you will know what this means when you do use it).

4. Configure your seed:

Add a new SPARQL query: src/sparql/orcids.sparql. This is used to query for all ORCIDs used in your ontology.

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix owl: <http://www.w3.org/2002/07/owl#>
SELECT DISTINCT ?orcid
WHERE {
  VALUES ?property {
    <http://purl.org/dc/elements/1.1/creator>
    <http://purl.org/dc/elements/1.1/contributor>
    <http://purl.org/dc/terms/creator>
    <http://purl.org/dc/terms/contributor> 
  }
  ?term ?property ?orcid . 
  FILTER(isIRI(?term))
}

Next, overwrite your ORCID seed generation to using this query by adding the following to your src/ontology/myont.Makefile (not Makefile!):

$(IMPORTDIR)/orcidio_terms_combined.txt: $(SRCMERGED)
    $(ROBOT) query -f csv -i $< --query ../sparql/orcids.sparql $@.tmp &&\
    cat $@.tmp | sort | uniq >  $@

For your specific use-case, it may be necessary to tweak this SPARQL query, for example if your ORCIDs are used on axiom annotation level rather than entity annotation level.

5. Updating Config and ORCIDIO

Now run to apply your ODK changes:

sh run.sh make update_repo

This will update a number of files in your project, such as the autogenerated Makefile.

Lastly, update your ORCIDIO import to apply the changes:

sh run.sh make refresh-orcidio

Commit all the changes to a branch, wait for continuous integration to finish, and enjoy your new ORCIDIO import module.