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
):
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:
This will update a number of files in your project, such as the autogenerated Makefile
.
Lastly, update your ORCIDIO import to apply the changes:
Commit all the changes to a branch, wait for continuous integration to finish, and enjoy your new ORCIDIO import module.