Difference between revisions of "OBD Reasoner"

From phenoscape
(Relationships Used)
Line 10: Line 10:
 
* ''R''(A, B): A ''R'' B, for example A ''is_a'' B. This is the functional form.
 
* ''R''(A, B): A ''R'' B, for example A ''is_a'' B. This is the functional form.
  
==Relationships Used==
+
==Implemented Relation Properties==
  
=== Transitive Relationships ===
+
=== Relation Transitivity===
  
 
'''Rule:''' <math>\forall</math>A, B, C, ''R'' and ''R'' transitive: ''R''(A, B) <math>\and</math> ''R''(B, C) <math>\Rightarrow</math> ''R''(A, C)
 
'''Rule:''' <math>\forall</math>A, B, C, ''R'' and ''R'' transitive: ''R''(A, B) <math>\and</math> ''R''(B, C) <math>\Rightarrow</math> ''R''(A, C)
Line 57: Line 57:
 
'''Rule:''' <math>\forall</math>A, B, C, ''R'': ''is_a''(A, B) <math>\and</math> ''R''(B, C) <math>\Rightarrow</math> ''R''(A, C)
 
'''Rule:''' <math>\forall</math>A, B, C, ''R'': ''is_a''(A, B) <math>\and</math> ''R''(B, C) <math>\Rightarrow</math> ''R''(A, C)
  
Relation (role) compositions are of the form A R1 B, B R2 C => A (R1|R2) C. For example, given A is_a B and B part_of C then A part_of C. The reasoner extracts such inferences and adds them to the database.  
+
Relation (role) compositions are of the form A R1 B, B R2 C => A (R1|R2) C. For example, given A is_a B and B part_of C then A part_of C. The reasoner extracts such inferences and adds them to the database.
  
===Reflexive relations===
+
===Relations Reflexivity===
  
 
'''Rule:''' A ''is_a'' A
 
'''Rule:''' A ''is_a'' A
Line 69: Line 69:
 
An example: If A father_of B and father_of is_a parent_of, then A parent_of B
 
An example: If A father_of B and father_of is_a parent_of, then A parent_of B
  
===Relation chains===
+
===Relation Chains===
  
 
'''Rule:'''<math>\forall</math>A, B, C:''inheres_in''(A, B) <math>\and</math> ''part_of''(B, C) <math>\Rightarrow</math> ''inheres_in_part_of''(A, C)
 
'''Rule:'''<math>\forall</math>A, B, C:''inheres_in''(A, B) <math>\and</math> ''part_of''(B, C) <math>\Rightarrow</math> ''inheres_in_part_of''(A, C)
Line 75: Line 75:
 
Relation chains are a special case of relation composition. Component relations are accumulated into an assembly relation. Specifically, instances of the relation ''inheres_in_part_of'' are accumulated from instances of the relations of ''inheres_in'' and ''part_of''. IF A inheres_in B and B part_of C, THEN A inheres_in_part_of C
 
Relation chains are a special case of relation composition. Component relations are accumulated into an assembly relation. Specifically, instances of the relation ''inheres_in_part_of'' are accumulated from instances of the relations of ''inheres_in'' and ''part_of''. IF A inheres_in B and B part_of C, THEN A inheres_in_part_of C
  
===Intersection Relations===
+
===Relation Intersections===
  
 
'''Rule:''' <math>\forall</math>Q, E: ''inheres_in''(Q, E) ''inheres_in''(E) <math>\and</math> ''inheres_in''(Q, E)''is_a''(Q)
 
'''Rule:''' <math>\forall</math>Q, E: ''inheres_in''(Q, E) ''inheres_in''(E) <math>\and</math> ''inheres_in''(Q, E)''is_a''(Q)
Line 83: Line 83:
 
# PATO:0000587^OBO_REL:inheres_in(TAO:0001173)              OBO_REL:inheres_in              TAO:0001173, and
 
# PATO:0000587^OBO_REL:inheres_in(TAO:0001173)              OBO_REL:inheres_in              TAO:0001173, and
 
# PATO:0000587^OBO_REL:inheres_in(TAO:0001173)              OBO_REL:is_a                    PATO:0000587
 
# PATO:0000587^OBO_REL:inheres_in(TAO:0001173)              OBO_REL:is_a                    PATO:0000587
 +
 +
==Relation Properties to be implemented ==
 +
 +
The following relation properties may be implemented on the reasoner in future if necessary.
 +
 +
===Relation Symmetry===
 +
 +
'''Rule:''' <math>\forall</math>A, B, ''R'' and ''R'' reflexive: ''R''(A, B) <math>\Rightarrow</math> ''R''(B, A)
 +
 +
An example of a symmetric relation is the ''neighbor'' relation. IF Jim neighbor_of Ryan THEN Ryan neighbor_of Jim.
 +
 +
===Relation Inversion===
 +
 +
'''Rule:''' <math>\forall</math>A, B, ''R1'', ''R2'': ''R1''(A, B) <math>\and</math> ''inverse_of''(''R1'', ''R2'') <math>\Rightarrow</math> ''R2''(B, A)
 +
 +
An example of relation inversions can be found in the ''parent'' and ''child'' relations. IF Charles parent_of Harry AND child_of inverse_of parent_of THEN Harry child_of Charles.
 +
 +
==Sweeps==
 +
A reasoner functions over several sweeps. In each sweep, new implicit inferences are derived from the explicit annotations (as described in the previous sections) and added to the database. In the following sweep, inferences added from the previous sweep are used to extract further inferences. This process continues until no additional inferences are added in a sweep. This is when the ''deductive closure of the inference procedure'' is reached. No further inferences are possible and the reasoner exits.
  
 
[[Category:Informatics]]
 
[[Category:Informatics]]
Line 88: Line 107:
 
[[Category:Ontology]]
 
[[Category:Ontology]]
 
[[Category:Reasoning]]
 
[[Category:Reasoning]]
 
==Sweeps==
 
A reasoner functions over several sweeps. In each sweep, new implicit inferences are derived from the explicit annotations (as described in the previous sections) and added to the database. In the following sweep, inferences added from the previous sweep are used to extract further inferences. This process continues until no additional inferences are added in a sweep. This is when the ''deductive closure of the inference procedure'' is reached. No further inferences are possible and the reasoner exits.
 

Revision as of 16:32, 9 January 2009

The OBD reasoner uses definitions of transitive relations, relation hierarchies, and relation compositions to infer implicit information. These inferences are added to the OBD Phenoscape database. This section documents the inherited code in Perl and embedded SQL, that extracts implicit inferences from the downloaded ontologies and annotations of ZFIN and Phenoscape phenotypes.

Notation

When describing rules below, we use the following notations:

  • A, B, C: classes (as subjects or objects)
  • a, b, c: individuals (as subjects or objects)
  • R: relationship (predicate)
  • R(A, B): A R B, for example A is_a B. This is the functional form.

Implemented Relation Properties

Relation Transitivity

Rule: <math>\forall</math>A, B, C, R and R transitive: R(A, B) <math>\and</math> R(B, C) <math>\Rightarrow</math> R(A, C)

Transitive relationships are the simplest inferences to be extracted and comprise the majority of new assertions added by the reasoner. Transitive relationships include (ontology in brackets):

  • is_a (OBO Relations)
  • has_part (OBO Relations)
  • part_of (OBO Relations)
  • integral_part_of (OBO Relations)
  • has_integral_part (OBO Relations)
  • proper_part_of (OBO Relations)
  • has_proper_part (OBO Relations)
  • improper_part_of (OBO Relations)
  • has_improper_part (OBO Relations)
  • location_of (OBO Relations)
  • located_in (OBO Relations)
  • derives_from (OBO Relations)
  • derived_into (OBO Relations)
  • precedes (OBO Relations)
  • preceded_by (OBO Relations)
  • develops_from (Zebrafish Anatomy)
  • anterior_to (Spatial Ontology)
  • posterior_to (Spatial Ontology)
  • proximal_to (Spatial Ontology)
  • distal_to (Spatial Ontology)
  • dorsal_to (Spatial Ontology)
  • ventral_to (Spatial Ontology)
  • surrounds (Spatial Ontology)
  • surrounded_by (Spatial Ontology)
  • superficial_to (Spatial Ontology)
  • deep_to (Spatial Ontology)
  • left_of (Spatial Ontology)
  • right_of (Spatial Ontology)
  • complete_evidence_for_feature(Sequence Ontology)
  • evidence_for_feature (Sequence Ontology)
  • derives_from (Sequence Ontology)
  • member_of (Sequence Ontology)
  • exhibits (Phenoscape Ontology)

Relation (role) compositions

Rule: <math>\forall</math>A, B, C, R: R(A, B) <math>\and</math> is_a(B, C) <math>\Rightarrow</math> R(A, C)

Rule: <math>\forall</math>A, B, C, R: is_a(A, B) <math>\and</math> R(B, C) <math>\Rightarrow</math> R(A, C)

Relation (role) compositions are of the form A R1 B, B R2 C => A (R1|R2) C. For example, given A is_a B and B part_of C then A part_of C. The reasoner extracts such inferences and adds them to the database.

Relations Reflexivity

Rule: A is_a A

Relation Hierarchies

Rule: <math>\forall</math>A, B, R1, R2: R1(A, B) <math>\and</math> is_a(R1, R2) <math>\Rightarrow</math> R2(A, B)

An example: If A father_of B and father_of is_a parent_of, then A parent_of B

Relation Chains

Rule:<math>\forall</math>A, B, C:inheres_in(A, B) <math>\and</math> part_of(B, C) <math>\Rightarrow</math> inheres_in_part_of(A, C)

Relation chains are a special case of relation composition. Component relations are accumulated into an assembly relation. Specifically, instances of the relation inheres_in_part_of are accumulated from instances of the relations of inheres_in and part_of. IF A inheres_in B and B part_of C, THEN A inheres_in_part_of C

Relation Intersections

Rule: <math>\forall</math>Q, E: inheres_in(Q, E) inheres_in(E) <math>\and</math> inheres_in(Q, E)is_a(Q)

Phenotype annotations are typically "post-composed", where an entity and quality are combined into a Compositional Description. For example, an annotation about the quality decreased size (PATO:0000587) of the entity Dorsal Fin (TAO:0001173) may be post-composed into a Compositional Description that looks like PATO:0000587^OBO_REL:inheres_in(TAO:0001173). Instances of is_a and inheres_in relations are extracted from post compositions like this. In the above example, the reasoner extracts:

  1. PATO:0000587^OBO_REL:inheres_in(TAO:0001173) OBO_REL:inheres_in TAO:0001173, and
  2. PATO:0000587^OBO_REL:inheres_in(TAO:0001173) OBO_REL:is_a PATO:0000587

Relation Properties to be implemented

The following relation properties may be implemented on the reasoner in future if necessary.

Relation Symmetry

Rule: <math>\forall</math>A, B, R and R reflexive: R(A, B) <math>\Rightarrow</math> R(B, A)

An example of a symmetric relation is the neighbor relation. IF Jim neighbor_of Ryan THEN Ryan neighbor_of Jim.

Relation Inversion

Rule: <math>\forall</math>A, B, R1, R2: R1(A, B) <math>\and</math> inverse_of(R1, R2) <math>\Rightarrow</math> R2(B, A)

An example of relation inversions can be found in the parent and child relations. IF Charles parent_of Harry AND child_of inverse_of parent_of THEN Harry child_of Charles.

Sweeps

A reasoner functions over several sweeps. In each sweep, new implicit inferences are derived from the explicit annotations (as described in the previous sections) and added to the database. In the following sweep, inferences added from the previous sweep are used to extract further inferences. This process continues until no additional inferences are added in a sweep. This is when the deductive closure of the inference procedure is reached. No further inferences are possible and the reasoner exits.