- 1 RO - OBO Relation Ontology
- 2 Open issues
- 2.1 Three types of relations
- 2.2 How to Define an Instance-Level Relation
- 2.3 Proposed new type-level relations (posted by Melanie Courtot)
- 2.4 Proposed Gene Ontology 'Regulates' Relations
- 2.5 Need for Specific Role Relations (BS)
- 2.6 Hunter/Bada Proposal for new relations
- 2.7 TAIR Relations
- 2.8 Proposed homologous_to relation
- 2.9 OWL Conversion
- 2.10 Measurements
- 2.11 Realization_of and Associated Relations
- 3 Background Material
RO - OBO Relation Ontology
The main RO page is located on The OBO Foundry Website
You can browse the ontology and get e-mail list details there.
An RO expert meeting took place in May, 2008. See OntologyRelations for notes and presentations.
Note that requests for new terms etc should go in the RO tracker
Mike And Chris' Relation Ontology Proposed (MACROP), a list targets relations is MACROP
Three types of relations
The OBO Relation Ontology (aka the OBO Relationship Types Ontology) distinguished three families of relations, according to whether they hold between instances, types, or combinations thereof, for example:
- 1. instance_of holding between an instance and a type
- 2. part_of holding between an instance and an instance
- 3. part_of holding between a type and a type
We use bold face to mark out those relational expressions used in ontologies such as GO to represent the relations between the types these ontologies represent.
In the original Genome Biology paper we focused primarily on defining relations of type 3. in terms of those of types 1. and 2. This was to meet the need among biologists for clear guidance as to what the relational expressions used in ontologies such as GO precisely mean.
In our treatment of relations of types 1. and 2. we focused primarily on picking out certain instance level relations which we fixed on as primitive -- meaning that they are so basic to the relational architecture of reality that they cannot be defined in terms of anything more basic. The primitive relations selected were as follows:
- c instance_of C at t - a primitive relation between a continuant instance and a class which it instantiates at a specific time
- p instance_of P - a primitive relation between a process instance and a class which it instantiates holding independently of time
- c part_of c1 at t - a primitive relation between two continuant instances and a time at which the one is part of the other
- p part_of p1, r part_of r1 - a primitive relation of parthood, holding independently of time, either between process instances (one a subprocess of the other), or between spatial regions (one a subregion of the other)
- c located_in r at t - a primitive relation between a continuant instance, a spatial region which it occupies, and a time
- r adjacent_to r1 - a primitive relation of proximity between two continuants
- t earlier t1 - a primitive relation between two times
- c derives_from c1 - a primitive relation involving two distinct material continuants c and c1
- p has_participant c at t - a primitive relation between a process, a continuant, and a time
- p has_agent c at t - a primitive relation between a process, a continuant and a time at which the continuant is causally active in the process
In proposing new relations (both on the wiki and in the http://sourceforge.net/tracker/?group_id=76834&atid=947684&func=browse Sourceforge Tracker], please specify to which of the three types your proposed relation belongs.
- If it is an instance-level relation, please answer the following questions:
- a. is it already on the list above?
- b. is it primitive in the above-mentioned sense?
- If the answer to both of these questions is no,
- c. can it be defined in terms of the relations on the above list?
- If yes, please supply a definition (an example is provided below)
- If no, please propose also those primitive instance-level relations which would need to be added to the RO in order to define it.
How to Define an Instance-Level Relation
First, check whether your proposed relation needs a definition -- perhaps it is primitive (see above).
All definitions specify necessary and sufficient conditions. Thus if we are defining what it is to be an A, then the definition might read, for example:
x is an A =def. x has features F1, F2, F3.
This definition would be correct if and only if everything which has features F1, F2, and F3 is an A, and everything which is an A has features F1, F2, and F3.
For instance-level relations, the definition might read as follows:
x stands in instance-level relation r to y =def. x has features F1, F2, y has features F3, F4, x stands in instance-level relations r1, r2 to y.
For a specific example consider preceded_by, a relation between occurrents (drawn from the RO paper).
With the primitive relations has_participant and earlier at our disposal we first define the instance-level relation p occurring_at t as follows:
p occurring_at t =def. for some c, p has_participant c at t.
We can then define:
c exists_at t =def. for some p, p has_participant c at t
p preceded_by p1 =def. for all t, t1, if p occurring_at t and p1 occurring_at t1, then t1 earlier t
- t first_instant p =def.
- p occurring_at t, and
- for all t1, if t1 earlier t, then not p occurring_at t1
- t last_instant p =def.
- p occurring_at t and
- for all t1, if t earlier t1, then not p occurring_at t1
- p immediately_preceded_by p1 =def.
- for some t, t first_instant p and
- t last_instant p1.
In these terms we can also define the instance-level relation has_duration proposed by Liju:
- p has_duration y =def.
- p is an occurrent, and
- for some t1, t1 first_instant p, and
- for some t2, t2 last_instant p, and
- for all t, t1 earlier t and t earlier t2 implies p occurring_at t [this to ensure that p is continuous; has no gaps],
- y is the interval (t1,t2).
Here a new functional operator 'the interval ( , )' has been introduced, which generates the name of an interval from a pair of names for times.
On the logic of instance-level relations see also Bittner's paper here.
Proposed new type-level relations (posted by Melanie Courtot)
relations between generically dependent continuants and specifically dependent continuants:
The lacks family of relations is discussed at: 
Some of those are described in the RO proposed file.
The treatment of the derives_from relation has been criticised from an ontological point of view: . Transformation_of is always, by definition a 1-1 relation. The thesis in the original RO paper was (A) that the derives_from relation could be n-1 or 1-n (for n > 1) but also (B) that there are examples of 1-1 derives from relations (e.g. the relation between a living organism and a corpse). This thesis (B) has now been dropped. The relation between a corpse and the predecessor organism is one of transformation.
There is also the terminological problem that "derives_from" is used specifically for evolutionary relationships by some. We will report back on this after the september NCBO anatomy meeting. We may create a "develops_from" parent for transformation_of corresponding to how that relation is currently used in MOD AOs
The relation of overlaps
X overlaps Y =def. for every t and every x, if x instance_of X at t, then there is some instance y of Y at t such that (x overlaps y at t)
x overlaps y at t =def there is some z such that z is part_of x at t and z part_of y at t
Note that it can be the case that X overlaps Y as thus defined, even though Y does not overlap X.
Thus uterine tracts overlaps urinogenital sysem but not uriongenital system OVERLAPS uterine tract (because of male urinogenital systems)
Actually uterine tract is part_of urinogenital system, which raises the question of whether each of X's parts overlaps X.
Proposed Gene Ontology 'Regulates' Relations
[Typedef] id: OBO_REL:regulates
- name: regulates
- def: "A relation between a process and a process or quality. A regulates B if the unfolding of A affects the frequency, rate or extent of B. A is called the regulating process, B the regulates process" 
- transitive_over: OBO_REL:part_of
[Typedef] id: OBO_REL:positively_regulates
- name: positively_regulates
- def: "A regulation relation in which the unfolding of the regulating process *increases* the frequency, rate or extent of the regulated process"
- is_a: OBO_REL:regulates
- transitive_over: OBO_REL:part_of
[Typedef] id: OBO_REL:negatively_regulates
- name: negatively_regulates
- def: "A regulation relation in which the unfolding of the regulating process *decreases* the frequency, rate or extent of the regulated process"
- is_a: OBO_REL:regulates
- transitive_over: OBO_REL:part_of
Some follow-up comments at the sourceforge tracker page
Need for Specific Role Relations (BS)
x has a role => x is assigned the role e.g. in the protocol x realizes the role => x has the role x plays the role => x performs those actions which someone who has the role would perform if they were realizing it
Someone who has a role can also play it But so also can someone who does not have the role, e.g. the doctor takes on the nurse role because the nurse is off sick.
Hunter/Bada Proposal for new relations
We assert that the level of granularity/specifity of the proposed relations is a central issue that, once resolved, will provide useful guidelines as to what is needed to capture a piece of knowledge by a relational link. The examples in this proposal use process terms from the Gene Ontology, but we believe that this issue applies to other OBOs as well.
We assert that the addition of relations should be primarily guided by the effort to link OBO terms with other OBO terms, as is being done in the OBO cross-product project. A composite set of links from a given more complex OBO terms to more atomic OBO terms will provide the (hopefully complete) definition of the former. A given link from the term being defined, employing an RO relation, must unambiguously capture some piece of knowledge, some part of the definition, of this term. It is this unambiguous representation of some part of the complete definition of the term that should determine the specificity of the relation. This may require the use of a specific relation, but we assert that it is more important to avoid losing knowledge in the represented definition than to exclusively use general relations.
It is ideal to use general, reusable relations in such definitions without losing information, and we believe that this is sometimes possible. For example, for the many GO process terms that use “during” to specify a process that is taking place within the span of another process (e.g., “actin filament reorganization during cell cycle”), it is acceptable to use a standard temporal relation, as no information is lost by doing so. However, especially in the definitions of processes, we assert that the unambiguous capture of roles of participants will require relatively specific relations.
There have been efforts to use general relations to denote roles, but they have been difficult to define (e.g., has_agent, has_patient, has_central_participant) and/or insufficient to specify the role (e.g., has_output_participant). If suitably precise general relations cannot be defined, relatively specific relations are needed. Thus, for all of the growth terms (e.g., “organ growth”, “filamentous growth”), if a general relation to indicate what is growing cannot be suitably defined, then a specific relation must be created to capture this, either in the form of a lexically analogous relation (e.g., results_in_growth_of) or as one that incorporates the template definitions of the term (e.g., results_in_increase_in_size_or_mass_of, since most of the growth terms are defined as the increase in size or mass of an entity). These two approaches by themselves are computationally synonymous but differ in terms of human comprehension. The former, while not adding information for human users, can be straightforwardly formed. The latter, while helpful for human users, can get unwieldy in the case of complex definitions. For example, the detection-of-stimulus terms are defined as the series of events in which a stimulus is received by an entity and converted into a molecular signal, and results_in_reception_of_stimulus_and_conversion_into_molecular_signal_of is clearly getting ridiculous.
It is also ideal for relations, especially relatively specific ones as exemplified above, to be formally defined (i.e., in a computationlly procesable way) in terms of more atomic relations. However, it will be very difficult to produce formal definitions in terms of more atomic relations, especially for relatively specific relations. We assert that the linking of OBO terms to generate cross-products should be a priority, and this requires the specification of relations (as discussed above) to link the terms. A requirement for any proposed relation to have a formal decomposed definition in terms of more atomic relations would be a significant bottleneck to this process. Just as there is no requirement for an added OBO term to have a formal definition, there should be no such requirement for an added OBO relation. We would like to be clear that we believe it extremely beneficial to have such formal definitions (and thus efforts should continually be put into creating such definitions), but this should not be an obstacle to the introduction of new relations.
We propose that each relation should canonically be in the form of a verb phrase. We assert that this promotes usability in that it emphasizes the fact that these are relationships between entities.
Relations between continuants and occurrents:
- has (function)
- involved in
- functions as
- required for
- functions in
- has protein modification of type
- contributes to
- is upregulated by
- is downregulated by
Relations between continuants:
- located in
- expressed in
- colocalizes with
- is subunit of
- constituent of
- has protein-protein physical interaction with
- has protein-DNA interaction with
- binds to cis-element of
- acts upstream of
- acts downstream of
- expressed during
- protein is modified by
- is regulated by
Relations between continuants and qualities (phenotypes in our case):
- suppresses gene
- enhances gene
- partially enhances gene
- partially suppresses gene
Proposed homologous_to relation
x1 directly_descends_from x2 iff there are y1, y2 such that:
- y1 is an organism
- x1 is an anatomical structure
- x1 part_of y1
- y2 is an organism
- x2 is an anatomical structure
- x2 part_of y2
- y2 is a parent of y1
- the genetic sequence that determined the morphology of x1 is partially a copy of the genetic sequence that determined the morphology of. *(see notes below)
descends_from is the instance level relation which is the transitive closure over directly_descends_from
From this we can define a type level relation:
A in B descends_from C in D :
For all A(a) -> exists b, d, c: B(b) & C(c) & D(d)
a part_of b
a descends_from c
c part_of d
(Note – B must be a subclade of the clade genealogically descended from D)
A1 in B1 homologous_to A2 in B2
exists A3, B3:
A1 in B1 descends_from A3 in B3
A2 in B2 descends_from A3 in B3
(Note B1 and B2 must both be subclades of the clade descending (in the genealogical sense) from D)
[* This clause still needs some work]
[* On the Phenoscape project list, Jim Balhoff added the following critique of this:
Something that jumps out at me in the definition of directly_descends_from:
I would not say that genetic sequences "determine" any morphology. I would prefer something like "participates in the development of" the morphology of x1. Anyway, I don't see genetic sequences as an absolutely necessary component of homology (although they would very often be an important component).]
[* DS: comment - I agree that reference to genetic sequence is (probably) unnecessary. Anyway, it is clear that the current formulation doesn't work: The morphology of my leg is determined by a partial copy of the genetic sequence that determined morphology of my father's arm. One possible alternative, deliberately ignoring genetics: Of all the anatomical structures in y2, x2 is the most morphologically similar to x1. ]
Note: Do we need to include time (exists & existed)?
FN – just to be on the safe side we can include time – it's not obviously useful but it could block some objections and won't affect the logic.
relation to what is in RO proposed
Note that there are a number of synonyms for descended_from, including 'evolutionarily_derived_from' which is currently in ROproposed as follows:
def: "Instance 3-ary relation: x edf y as T iff x specified_by gx and gx ancestral_copy_of gy and gy specifies y" 
synonym: "derived_from" RELATED 
synonym: "descended_from" RELATED 
synonym: "evolved_from" RELATED 
The standard GO obo->owl conversion is used. See OboInOwl:Main_Page for details
obo1.2 defines "builtin" tags for relations that are hardwired into the obo semantics - is_a and instance_of are tagged builtin. These are not exported in OWL, as these are also part of the OWL language
At the IEO meeting people seemed to agree that we use a relation called is_measurement_of to relate a measurement to some entity. (I can't remember if these were the exact names we used). is_measurement_of is subpropertyOf is_about
In the following we are discussing instance level relationships.
m1 type measurement:
- m1 has_value 30^^xsd:float
- m1 in_units_of degree_celsius (UO:0000027)
- m1 of_dimension temperature_dimension (PATO:0000146? -that's what's in UO, but need to think about that)
(Unresolved: latter two are classes. I guess that means that in_units_of and of_dimension are annotation properties, which is a shame. Either that or degree_celsius and temperature_dimension are instances of some sort. Barry?)
- room1 type site
- room1 has_quality t1
- t1 instance_of temperature (PATO:0000146)
- m1 is_measurement_of t1
It was left open exactly how to represent uncertainty in the measurement, but this was thought to be perhaps something associated with the instrument or with a collection of measurements, rather than what was associated with the individual measurement.
Inference rule on is_about: forall x, y, z, if x is_about y and y inheres_in z then x is_about z
Realization_of and Associated Relations
For OBI purposes there is a need for an instance-level relation between a plan (for instance a protocol) and the occurrent which realizes this plan.
In its terms we might define, for example,
x deviation_from y
=def. x is an occurrent and y is a plan and there is an agent z who is the agent_of x and is attempting in performing x to realize y and it is not the case that x realization_of y