Principle: Relations (principle 7)
- Overview
- Open (principle 1)
- Common Format (principle 2)
- URI/Identifier Space (principle 3)
- Versioning (principle 4)
- Scope (principle 5)
- Textual Definitions (principle 6)
- Relations (principle 7)
- Documentation (principle 8)
- Documented Plurality of Users (principle 9)
- Commitment To Collaboration (principle 10)
- Locus of Authority (principle 11)
- Naming Conventions (principle 12)
- Notification of Changes (principle 13)
- Guidelines (principle 14)
- Maintenance (principle 16)
- Stability of Term Meaning (principle 19)
- Responsiveness (principle 20)
GO TO: Recommendations/Requirements | Implementation | Examples/Counter‑Examples | Criteria for Review | Feedback/Discussion
Summary
Existing relations MUST be reused. New relations SHOULD be submitted to the Relations Ontology (RO).
Purpose
To facilitate interoperability between multiple ontologies, especially with respect to logical inference, because a reasoner can only detect logical inconsistencies between ontologies and infer new axioms if the ontologies use the same relations (aka object properties).
Recommendations and Requirements
For any given relation need, each OBO ontology MUST reuse a relation from the Relations Ontology (RO) or other ontology if the appropriate relation already exists, rather than declaring new a relation that holds the same meaning. Where it makes sense for an ontology to declare a new relation in its own ID space and there is a RO relation that is logically a super-property of the new relation, the new relation MUST be asserted to be a sub-property of the RO relation. In such cases, it is requested that there still be coordination with RO, for example in the form of an issue submitted to the RO tracker.
Implementation
Reusing relations
‘Reuse’ means that the actual existing-relation PURL is used. Ontology developers should be aware that (in rare instances) relations can evolve over time and previous relations might become obsolete. This means developers should monitor the state of the relations they use. The Relations Ontology MUST be the first source for appropriate relations, and ontology developers SHOULD, with due diligence, search RO for needed relations. If a necessary relation cannot be found within RO, then the developers MUST search other OBO ontologies for reasonable candidates using, for example, an ontology search engine such as Ontobee or OLS.
Creating New Relations
An effort to specify a domain and range for the relation SHOULD be made, though caution is advised to ensure that each is neither too broad nor too specific. The appropriate home for a new relation will depend on multiple factors, including the general applicability of the relation (beyond its immediate use within the context of a given ontology), and in consideration of its domain and range:
- If both the domain and range are from the same ontology as the relation, the relation MAY be kept in that ontology;
- If either the domain or range is from a different ontology as the relation, but the relation is not general enough for use by other ontologies, the relation MAY be kept in the originating ontology;
- If the relation seems appropriate for general usage, the relation SHOULD be submitted to RO;
- For any relation not submitted to RO, if a suitable RO parent exists, then the relation MUST be declared a sub-property of that parent.
While it is never a bad idea to submit a new relation to RO, if there are any doubts about how to proceed based on the above, a discussion with RO developers SHOULD be made via the RO issue tracker or the OBO Community Slack using the #relation-ontology channel.
Note regarding property chains: If a proposed property chain makes use of relations that are themselves in RO, the property chain SHOULD be submitted to RO.
Examples
Counter-Examples
Criteria for Review
Each relation in the ontology that does not use an RO IRI will be checked to see if there is an exact label match in RO. If so, this will be flagged as an ERROR. Any other non-RO properties will be flagged with an INFO message.
This check is automatically validated.
Feedback and Discussion
To suggest revisions or begin a discussion pertaining to this principle, please create an issue on GitHub.
To suggest revisions or begin a discussion pertaining to the automated validation of this principle, please create an issue on GitHub.