All SWO classes should have a minimum level of annotation. Some older classes do not yet have all required annotation, as the updating of these classes to the minimum requirements is ongoing.
- ID and label: These are basic requirements. If the class is a new SWO class, the ID should be autogenerated by the web service set up for that purpose. The label should be a string and have a clear, human-understandable meaning. If the class is an imported class, it should have the ID and label provided by that external ontology.
- Definition: External classes and SWO classes both should have natural language definitions, but are handled slightly differently. The definition is put under the definition annotation label (IAO_0000115).
- External classes: SWO editors often wish to provide their own definition for external terms which provides more context for how the term is used within this ontology. In such cases an annotation property, SWO definition (SWO_0000144), is added to a second definition annotation. The SWO-specific definition is stored in the SWO file where the concept is modelled most fully. For example, the official definition for IAO algorithm (IAO_0000064) is stored within swo_core.owl, while the SWO-specific annotation is within swo_algorithm.owl:
- SWO classes: Each SWO term should have a suitable natural language definition. The SWO definition annotation on the main definition annotation is not necessary in these cases, as the term originates from this ontology.
- Definition source: Any time a definition is added, the source of that definition should also be added (IAO_0000119). There can be 1 or more definition source annotations. For instance (as shown in the annotation for the software class), if Robert Stevens modified a wikipedia definition to get an appropriate SWO definition, both Robert and the wikipedia link are included as separate definition sources.
- synonyms: Synonyms can be used to provide alternative names for classes, where appropriate.
- Examples of usage: Example classes, whether internal or external, should not go in the definition itself, but placed in an example of usage annotation (IAO_0000112).
- creator: The creator annotation defines who created the class for SWO, and is only used for SWO classes and not external ones. However, in the past it has not been consistently used and is therefore not present for all classes. Definition source is used for the name of the ontologist who created the definition or modified a base definition from elsewhere. Creator is the name of the ontologist who created the class/property/individual itself, and should be used for new objects.
Requirements for Deprecated Classes, Properties and Individuals
Deprecated objects in the ontology need additional annotation to mark when and why they were obsoleted. Deprecated classes should have all axioms removed and refactored as a subclass of obsolete SWO class. Deprecated individuals/instances are refactored to be instances of obsolete SWO class. Deprecated object properties are refactored to become sub-properties of obsolete object property (there are no deprecated data properties as of the writing of this post). All deprecated objects in the ontology should have the following annotations added to whatever annotation already existed:
- owl#deprecated: The boolean annotation flag deprecated needs to be set to true. Many ontology editors such as Protege provide a graphical representation of this flag to show at a glance which classes are obsoleted (Protege crosses out the name of the class in the class hierarchy tab).
- contributor: Use http://purl.org/dc/elements/1.1/contributor to mark which ontologist deprecated the class/property/individual. The phrase used should be of the style “Marked as obsolete by [insert your name here].”
- obsoleted in version: Use http://www.ebi.ac.uk/efo/obsoleted_in_version to mark the object with whichever the next release (point release or full release as appropriate) of the ontology will be, e.g. “0.4”.
- reason for obsolescence: Use http://www.ebi.ac.uk/efo/reason_for_obsolescence to provide a natural language explanation as to precisely why this class was deprecated.