given a subject (child), get inferred target (parent) links

if relation is specified, also filters results on relation

backward-chaining

get_inferred_target_nodes (subject GOBO::Node, relation GOBO::RelationNode OPTIONAL)

given a subject (child), get inferred target (parent) nodes

if relation is specified, also filters results on relation

backward-chaining

get_nonredundant_set (nodes ArrayRef[GOBO::Node], OPTIONAL set2 ArrayRef[GOBO::Node])

TODO: allow specification of relations

returns all nodes n in set1 such that there is no n' in (set1 U set2) such that no relationship nRn' can be inferred

relation_composition

Arguments: GOBO::RelationNode r1 GOBO::RelationNode r2
Returns: ArrayRef[GOBO::RelationNode]

Given two relations r1 and r2, returns the list of relations that hold true between x and z where x r1 y and y r2 z holds

Formal definition:

(R1 o R2 -> R3) implies ( x R1 y, y R2 z -> x R3 z)

Examples:

part_of o part_of -> part_of (if part_of is declared transitive)
regulates o part_of -> regulates (if regulates is declared transitive_over part_of)

See also:

http://geneontology.org/GO.ontology-ext.relations.shtml

http://wiki.geneontology.org/index.php/Relation_composition

subsumed_by

c1 subsumed_by c2 if any only if every member of c1 is a member of c2

The following rules are used in the decision procedure:

Relation Composition

Intersections

See GOBO::ClassExpression::Intersection

if c2 = a ∩ b AND c1 is subsumed by a AND c1 is subsumed by b THEN c1 is subsumed by c2

Unions

See GOBO::ClassExpression::Union

if c2 = a ∪ b AND (c1 is subsumed by a OR c1 is subsumed by b) THEN c1 is subsumed by c2

Relational Expressions

See GOBO::ClassExpression::RelationalExpression

if c2 = <r y> AND c1 r y THEN c1 is subsumed by c2

NAME

GOBO::InferenceEngine

SYNOPSIS

NOT FULLY IMPLEMENTED

DESCRIPTION

An GOBO::Graph is a collection of GOBO::Statements. These statements can be either 'asserted' or 'inferred'. Inferred statements are created by an Inference Engine. An InferenceEngine object provides two accessors, 'graph' for the source graph and 'inferred_graph' for the set of statements derived from the source graph after applying rules that take into account properties of the relations in the statements.

The notion of transitive closure in a graph can be expressed in terms of the deductive closure of a graph of links in which each GOBO::RelationNode has the property 'transitive'. The notion of ancestry in a graph can be thought of as the inferred links where the relations are transitive.

Rules

Rules are horn rules with sets of statements in the antecedent and typically a single statement in the consequent.

In the notation below, subject and target nodes are indicated with lower case variables (x, y, z, ...) and relations (GOBO::RelationNode) are indicated with upper case (R, R1, R2, ...). Each statement is written in this order:

$s->node $->relation $s->target

Transitivity

x R y, y R z => x R z (where $R->transitive)

Propagation over and under is_a

x R y, y is_a z => x R z (where $R->propagates_over_is_a)
x is_a y, y R z => x R z (where $R->propagates_over_is_a)
x R1 y, y R2 z => x R z (where R=R1.R2)

The above two rules are degenerate cases of this one.

The notion R = R1.R2 is used to specify these compositions. See $r->holds_over_chain_list

Reflexivity

x ? ? => x R x (where $R->reflexive)

ie where x exists, x stands in relation R to itself

Symmetry

x R y => y R x (where $R->symmetric)

Note that the type level adjacenct_to relation is not transitive

Inverses

x R1 y => y R2 x (where $R1->inverse_of_list contains $R2 or vice versa)

Note that the type level part_of relation is not the inverse of has_part

Inference over GOBO::ClassExpressions

class expressions define sets of entities. We can infer the existing of subset/subsumption relationships between these sets.

TODO

Inference strategies

Backward chaining

Starting for a given node, find all inferred Statements related to that node by applying rules. Ancestors statements: all statements in which this node plays the role of subject. Descendants statements: all statements in which this node plays the role of target.

Can be combined with memoization, in which case subsequent queries can retrieve cached results.

Forward chaining

Starting with a graph of asserted statements, iteratively keep applying rules and adding resulting statements to the inferred graph, until no new statements are added.

STATUS

PRE-ALPHA!!!

1 POD Error

The following errors were encountered while parsing the POD:

Around line 260:

Non-ASCII character seen before =encoding in '∩'. Assuming UTF-8