Preferential Reasoning for Ontologies

Michael Harrison and Reid Swan


The aim of the implementation aspect of this project was to create a specialised standalone software artifact to perform preferential reasoning on ontolologies.


Most ontology reasoning tools available are classical reasoners. Classical reasoners cannot, however, handle non-monotonicity. This means that these reasoners cannot withdraw a conclusion in light of new information. If a classical reasoner encounters an exception, it will state that there is a clash and it will be unable to obtain a result. This presents the need for some form of defeasible reasoning. Our approach to defeasible reasoning was to use preferential reasoning. Preferential reasoning is particularly attractive as it can be reduced to classical entailment checks. These classical entailment checks can be performed quickly and efficiently with well-developed classical reasoners, such as HermiT1. Our method of preferential reasoning is a generalisation of rational closure. Rational closure has been implemented by Dr Kody Moodley in his Defeasible Inference Platform (DIP)2 plugin for Protégé ontology editor. DIP follows rational closure by creating a ranking using an exceptionality algorithm. Our generalisation was to use any user-defined ranking instead.


Building a plugin for Protégé would put too much constraint on the tool, as Protégé is not designed to handle defeasibility. The decision was then taken to build a specialised standalone tool. The tool was built using Java. In order for ontologies to be interacted with by software, they are represented using the Web Ontology Language (OWL)3, which is equivalent to Description Logics. OWL uses RDF and XML to represent an ontology in a file. In order to interact with OWL files, the OWL API4 was used. The OWL API allows the manipulation of OWL entities within an ontology, provides an interface for classical reasoners, and provides for the representation of OWL entities in Manchester Syntax. Manchester Syntax is similar to natural language, thereby making the representaition of statements more intuitive than Description Logics for non-specialists to understand. In order to make a complete Preferential Reasoning environment, the tool has the capability to create a new ontology, add to an ontology, denote whether statements are strict or defeasible, specify the ranking of statements, and query a defeasible ontology using preferential reasoning.

Ontology editor

A user can create and edit ontologies within the standalone tool. This does away with the need for a seperate ontology editor for ontology creation. Users can create new classes and object properties with the tool. Once classes and object properties have been created, the user can add new axioms to the ontology using their defined classed and object properties. These properties are entered using Manchester Syntax, which makes the tool accessible to users with a limited Logics background.

Denoting defeasibility

In order to make the knowledge base non-monotonic, the tool allows users to denote which axioms in the ontology are defeasible. The user will be shown all the axioms in their ontology. The tool will show which axioms are currently strict and which axioms are currently defeasible. The user can then toggle axioms between strict and defeasible.

Defining the ranking

Once a user has denoted axioms and defeasible, the user can specify a ranking for the defeasible statements. All defeasible statements have a default ranking of 0. A user can make a statement more exceptional by moving it higher up on the ranking.

Querying the knowledge base

Due to the knowledge base being defeasible, classical reasoning alone cannot be used to query the ontology. When a user enters a query, our preferential reasoning algorithm will check if the query is in the rational closure of the ontology or not and return the result. The query is entered using the Manchester Syntax.

Using the tool

The sourcecode can be download from the following from a repository. The tool has been built using gradle. The tool can be started by clicking the executable in the file. The sourcecode is included in the download.

1Birte Glimm, Ian Horrocks, Boris Motik, Giorgos Stoilos, and Zhe Wang. 2014. HermiT: An OWL 2 Reasoner. Journal of Automated Reasoning 53, 3: 245–269.
2Matthew Horridge and Sean Bechhofer. 2011. The OWL API: A Java API for OWL ontologies. Semantic Web 2, 1: 11–21.
3Kody Moodley. 2015. Practical Reasoning for Defeasible Description Logics. University of KwaZulu-Natal.
4W3C OWL Working Group. 2012. OWL 2 Web Ontology Language Document Overview. OWL 2 Web Ontology Language, December: 1–7.