Skip to content

Latest commit

 

History

History
198 lines (117 loc) · 10.5 KB

workflow.md

File metadata and controls

198 lines (117 loc) · 10.5 KB

Build Status DOI

Simple workflow for insect ontology development

Multispecies insect anatomy ontologies are used as bases for robust knowledge bases for specific anatomical terms (Yoder et al. 2010, HAO Portal), improve the accessibility of morphology descriptions (Balhoff et al. 2014), and are useful for improving the modeling of discrete morphological characters in phylogenetic context (Tarasov 2020).

There are two major reasons why insects are poorly represented amongst multispecies anatomy ontologies: lack of a base insect anatomy ontology and the lack of infrastructure to build such resource.

In this document, we outline a simple workflow for creating/editing insect ontologies using Protégé and the ontology development kit.

The first thing you need to do is to install the Ontology Development Kit. Instructions for this are in the README file at https://github.com/INCATools/ontology-development-kit.

Follow the steps carefully. This will create a file system in your computer with all the necessary files to create and run your ontology, ready to be uploaded to GitHub, in a mostly automated way. This process might require some preparation and troubleshooting, especially if you are installing the ODK on a Windows machine, and if you are not experienced with or set up for working on GitHub from your computer. Once your files are created in your computer, it is important that you read the instructions on the README-editors.md file within your src/ontology/ folder. You want to upload this initial version of your files into a GitHub repository and make a clone of it. You will be editing the cloned repository, specifically, the AISM-ODK/src/ontology/AISM-edit.owl file. Any edits should only be made to files within this particular folder. You will be editing this owl file in your computer using Protégé, for which you need some initial settings:

Setup Protégé to auto generate IRI-s:

File > Preferences > New entities

Specified IRI: http://purl.obolibrary.org/obo/

Set language to ‘en’, digit count to 7

Start number should be the first number of the range that you have been assigned. If you don't have a range of designated numbers, contact the project manager.

Importing terms from existing ontologies:

Setup a new import

  1. add imports to src/ontology/aism-odk.yaml

import_group: products: - id: ro - id: uberon - id: pato - id: bspo

  1. in terminal sh run.sh make update_repo (in src/ontology)

$ sh run.sh make update_repo

  1. open aism-edit.owl in text editor to add import statement:

Prefix(:=<http://purl.obolibrary.org/obo/aism.owl#>)

Prefix(dce:=<http://purl.org/dc/elements/1.1/>)

Prefix(owl:=<http://www.w3.org/2002/07/owl#>)

Prefix(rdf:=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>)

Prefix(xml:=<http://www.w3.org/XML/1998/namespace>)

Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)

Prefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>)

Prefix(dcterms:=<http://purl.org/dc/terms/>)

Ontology(<http://purl.obolibrary.org/obo/aism.owl> Import(<http://purl.obolibrary.org/obo/aism/imports/bspo_import.owl>) Import(<http://purl.obolibrary.org/obo/aism/imports/pato_import.owl>) Import(<http://purl.obolibrary.org/obo/aism/imports/ro_import.owl>) Import(<http://purl.obolibrary.org/obo/aism/imports/uberon_import.owl>) Annotation(dce:description "Ontology about the skeletomuscular system of insects") Annotation(dce:title "Anatomy Ontology of Insect Skeletomuscular System") Annotation(dcterms:license <CC-BY>)

  1. open catalog-v001.xml in text editor and add import statement

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <catalog prefer="public" xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">

<uri id="User Entered Import Resolution" name="http://purl.obolibrary.org/obo/aism/imports/uberon_import.owl" uri="imports/uberon_import.owl"/> <uri id="User Entered Import Resolution" name="http://purl.obolibrary.org/obo/aism/imports/uberon_import.obo" uri="imports/uberon_import.obo"/> <uri id="User Entered Import Resolution" name="http://purl.obolibrary.org/obo/aism/imports/bspo_import.owl" uri="imports/bspo_import.owl"/> <uri id="User Entered Import Resolution" name="http://purl.obolibrary.org/obo/aism/imports/bspo_import.obo" uri="imports/bspo_import.obo"/> <uri id="User Entered Import Resolution" name="http://purl.obolibrary.org/obo/aism/imports/pato_import.owl" uri="imports/pato_import.owl"/> <uri id="User Entered Import Resolution" name="http://purl.obolibrary.org/obo/aism/imports/pato_import.obo" uri="imports/pato_import.obo"/> <uri id="User Entered Import Resolution" name="http://purl.obolibrary.org/obo/aism/imports/ro_import.owl" uri="imports/ro_import.owl"/> <uri id="User Entered Import Resolution" name="http://purl.obolibrary.org/obo/aism/imports/ro_import.obo" uri="imports/ro_import.obo"/>

  1. In the terminal sh run.sh make imports/obi_import.owl

$ ./run.sh make all_imports

  1. open maxo-edit.owl in Protégé and run reasoner to look for unsatisfiable classes.

Once imports are set up

  1. Find your term online and copy its IRI

In Protégé: add subclass

Which opens a new window:

  1. Paste your link to the Name field and click OK

The term will now be listed under Thing. You don’t need to worry about annotations or placement of items newly added to your ontology, as the next step will take care of this for you. Keep adding a few more terms in this fashion.

  1. Save the AISM.owl file and run the following script in the terminal in the src/ontology folder:

./run.sh make all_imports

or

sh run.sh make imports/cl_import.owl

to import full specific ontologies.

The latter is recommended if numerous ontologies, including bigger ones (like PR, protein ontology) are used, as the system will not import all but the selected ontology (in that case CL, the cell ontology).

If you try to import from a larger ontology (like PR, protein ontology) the process might take an extreme long time and might eventually be terminated (like when I tried to import resilin from PR). In this case, it is perhaps best to simply start with step 7 (importing only the specific term you need without importing the full ontology), so the term will have an IRI, but will just hang on Thing.

Annotations

Each term should contain a series of annotations which will be the way to link the term to references, authors, and other sorts of information. These annotations are added using Protégé during the ontology editing process.

Each term should at least have an ‘rdfs: label’ and a ‘definition’. Ideally, each term should include a reference for the definition that is being used. AISM incorporates plenty of Annotation properties for these purposes.

To add annotations to an existing term click on the plus sign on the left side of the annotations tab.

This will open the ‘Annotations for AnnotationAssertion’ window to choose what kind of annotation will be added. Click on the plus sign, which opens the ‘Create annotation’ window.

Choose ‘definition’ to add a natural language verbatim definition for the term. Type the definition in the white box on the right side panel, choose the appropriate language for it, and click OK.

You can add annotations to the annotations. For instance, let's add an author for this definition. Go to the annotation that you want to add details to and click on the closest ‘@’ symbol on the right side.

Which will open the ‘Annotations for AnnotationAssertion’ window. Click on the plus sign.

On the new window choose ‘dc:contributor’, add the name of the person on the panel on the right, and press OK.

Press OK again in the ‘Annotations for AnnotationAssertion’ window, and your new annotation should appear under the definition.

Additional resources can be found at: https://go-protege-tutorial.readthedocs.io/en/latest/

Contact

Please use this GitHub repository's Issue tracker to request new terms/classes or report errors or specific concerns related to the ontology.

Acknowledgements

This ontology repository was created using the ontology starter kit