Reasoning is the task of deriving implicit facts from a set of given explicit facts. These facts can be expressed in OWL 2 ontologies and stored RDF triplestores. For example, the following fact: "a Student is a Person," can be expressed in an ontology, while the fact: "Bob is a Student," can be stored in a triplestore. A reasoner is a software application that is able to reason. For example, a reasoner is able to infer the following implicit fact: "Bob is a Person."
Reasoning tasks considered in OWL 2 are: ontology consistency, class satisfiability, classification, instance checking, and conjunctive query answering.
Ontology Consistency: this is the task of ensuring that an ontology is free of contradictions. For example, consider the following two facts: 1) all birds can fly and 2) penguins are birds which cannot fly. This would trigger an inconsistency because if a penguin is a bird then it can fly but another fact is stating otherwise.
Class Satisfiability: this is the task of determining whether it is possible for a class to have instances without causing inconsistency. For example, if we say that students can either be good OR bad, then the class GoodAndBadStudent would be unsatisfiable (i.e., it cannot have instances for the ontology to be consistent). Typically, we are interested in modeling classes that can have at least one instance; therefore, having unsatisfiable classes usually suggests a modeling error.
Classification: this is the task of determining the subclass relationships between classes in an ontology in order to complete the class hierarchy. For example, .. (left for the reader :P)
Instance Checking: this is the task of checking whether an individual is an instance of a concept. For example, given the facts "a Student is a Person" and "Bob is a Student", and if we were to check if the fact "Bob a Person" holds, the answer is true.
Conjunctive Query Answering: this is the task of answering a (SPARQL) query with regard to an ontology. For example, if the query is "return all persons who live in Austin" and the facts are "a Student is a Person", "Bob is a Student" and "Bob lives in Austin", the answer to the query should be "Bob."
Recall that there are three OWL 2 profiles: OWL 2 EL, OWL 2 QL and OWL 2 RL. Reasoners for one or more of these profiles have been implemented. Several triplestores support reasoning including Oracle which supports the RL profile; OWLIM which supports the QL and RL profile; and AllegroGraph and Stardog which support all three profiles. Additionally, standalone reasoners are available such as Pellet, ELK and FaCT++. The W3C has a list of implementations of different reasoners. There is also a detailed survey comparing reasoners for the OWL 2 EL profile which may be of interest.
Thanks to Héctor Pérez-Urbina for his valuable comments and input.
About the Author
Juan Sequeda is a Ph.D student at the University of Texas at Austin and a NSF Graduate Research Fellow. His research is in the intersection of Semantic Web and Relational Databases. He co-created the Consuming Linked Data Workshop series and regularly gives talks at academic and industry semantic web conferences. Juan is an Invited Expert on the W3C RDB2RDF Working Group and an editor of the “Direct Mapping of Relational Data to RDF” specification. Juan is also the founder of a new startup, Capsenta, which is a spin-off from his research.