wiki:Reasoning

Reasoning in OntoCAT

Reasoning over ontologies and extracting relationships is supported by using HermiT reasoner. OBO ontologies are translated by OWL API into valid OWL format that can be reasoned over.

What reasoning is needed for?

Reasoning is fundamental to exploring any sort of hierarchies of the more expressive ontologies. We present here a simple example how reasoner could be employed, but considerably more complicated scenarios are in use by the OWL community.

Consider the following hypothetical ontology (annotated with Description Logic syntax above) describing the anatomical relations among the parts of heart. We start by defining four classes: Heart, HeartComponent, LeftHeart, and MitralValve and two object properties to describe the partonomy: partOf and hasPart. The two primitive classes LeftHeart and MitralValve have additional necessary conditions defined as partOf some Heart and partOf some LeftHeart respectively in order to describe that mitral valve is a component of left heart, which in turn is a part of the whole heart. We additionally create a defined class HeartComponent as a convenience class to capture all the different parts of heart as subsumptions and this is our primary query -- find all parts of heart.

Simply parsing the ontology to find which classes have the statement partOf some Heart among their restrictions would only return LeftHeart, but miss MitralValve completely. However, if we additionally specify that partOf is transitive, the reasoner would be able to infer that MitralValve is also a HeartComponent.

Conversely, while it is possible to query for all classes fulfilling the existential restriction partOf some Heart to retrieve all parts of heart, the opposite query for hasPart some LeftHeart will not return Heart due to the OWL's open world assumption, unless a closure axiom hasPart some Heart AND hasPart only Heart is additionally specified on LeftHeart class. This limitation is not directly addressed in the package, as it would require precomputing a complete graph of different relations axes, which is computationally intensive and heavily dependant on the size and expressiveness of the ontology in question.

Furthermore, while the reasoner does return LeftHeart and MitralValve when queried for subclasses of anonymous class partOf some Heart (equivalent to the aforementioned defined class HeartComponent) we additionally transform all the properties into their inverses at this stage, so that partOf becomes hasPart and the resulted output from the package is Heart hasPart LeftHeart and MitralValve. As this depends on the existence of inverse restrictions on the object properties within the ontology, these are automatically added based on the Relation Ontology where necessary.

Last modified 9 years ago Last modified on 2015-07-21T20:08:41+02:00