Term¶
-
class
pronto.
Term
[source]¶ A term, corresponding to a node in the ontology graph.
Formally a
Term
frame is equivalent to aClass
declaration in OWL2.-
objects
(r: pronto.relationship.Relationship) → Iterator[pronto.term.Term][source]¶ Iterate over the terms
t
verifyingself · r · t
.Example
>>> go = pronto.Ontology.from_obo_library("go.obo") >>> go['GO:0048870'] Term('GO:0048870', name='cell motility') >>> list(go['GO:0048870'].objects(go['part_of'])) [Term('GO:0051674', name='localization of cell')]
Todo
Make
Term.objects
take in accountholds_over_chain
andtransitive_over
values of the relationship it is building an iterator with.
-
superclasses
(distance: Optional[int] = None) → Iterator[pronto.term.Term][source]¶ Get an iterator over the superclasses of this
Term
.In order to follow the semantics of
rdf:subClassOf
, which in turn respects the mathematical inclusion of subset inclusion,is_a
is defined as a transitive relationship, hencehas_subclass
is also transitive by closure property. Thereforeself
is always yielded first when calling this method.- Parameters
distance (int, optional) – The maximum distance between this node and the yielded superclass (
0
for the term itself,1
for its immediate superclasses, etc.). UseNone
to explore transitively the entire directed graph.- Yields
Term
– Superclasses of the selected term, breadth-first. The first element is always the term itself, useitertools.islice
to skip it.
Example
>>> ms = pronto.Ontology.from_obo_library("ms.obo") >>> sup = ms['MS:1000143'].superclasses() >>> next(sup) Term('MS:1000143', name='API 150EX') >>> next(sup) Term('MS:1000121', name='SCIEX instrument model') >>> next(sup) Term('MS:1000031', name='instrument model')
Note
The time complexity for this algorithm is in \(O(n)\), where \(n\) is the number of terms in the source ontology.
See also
The RDF Schema 1.1 specification, defining the
rdfs:subClassOf
property, which theis_a
relationship is translated to in OWL2 language.
-
subclasses
(distance: Optional[int] = None) → Iterator[pronto.term.Term][source]¶ Get an iterator over the subclasses of this
Term
.- Yields
Term
– Subclasses of the selected term, breadth-first. The first element is always the term itself, useitertools.islice
to skip it.
Example
>>> ms = pronto.Ontology.from_obo_library("ms.obo") >>> sub = ms['MS:1000031'].subclasses() >>> next(sub) Term('MS:1000031', name='instrument model') >>> next(sub) Term('MS:1000121', name='SCIEX instrument model') >>> next(sub) Term('MS:1000122', name='Bruker Daltonics instrument model')
Note
This method has a runtime of \(O(n^2)\) where \(n\) is the number of terms in the source ontology. This is due to the fact that OBO and OWL only explicit superclassing relationship, so we have to build the graph of subclasses from the knowledge graph.
-
is_leaf
() → bool[source]¶ Check whether the term is a leaf in the ontology.
We define leaves as nodes in the ontology which do not have subclasses since the subclassing relationship is directed and can be used to create a DAG of all the terms in the ontology.
Example
>>> ms = pronto.Ontology.from_obo_library("ms.obo") >>> ms['MS:1000031'].is_leaf() # instrument model False >>> ms['MS:1001792'].is_leaf() # Xevo TQ-S True
-
property
disjoint_from
¶ The terms declared as disjoint from this term.
Two terms are disjoint if they have no instances or subclasses in common.
-
property
intersection_of
¶ The terms or term relationships this term is an intersection of.
-