The Possible World Explorer (PEW)

The Possible World Explorer (PEW) reuses the query-based faceted search principles of Sewelis for exploring the possible worlds of an OWL ontology. Users are guided in the incremental construction of class expressions, such that only satisfiable classes are reachable. All classes made of qualified existential restrictions, nominals, intersections, unions, and negations are reachable.

PEW not only supports the exploration of an ontology’s possible worlds, but also supports its extension with new classes, properties, and individuals, and its completion by the addition of axioms. When a class is found satisfiable, and this contradicts domain knowledge (e.g., a man that is not a person), the undesirable possible worlds can be excluded (“pew pew!”) by asserting an axiom saying that this class is unsatisfiable (e.g., every man is a person). This could be made a game, where the player would strive to exclude as many undesirable worlds as possible. The benefits are to complete the ontology with more knowledge, and therefore to improve its deduction power.

In addition to asserting negative axioms (about things that should not exist), PEW also allows for :

  • the creation of named classes and properties, and their organization into hierarchies,
  • the definition of named classes (OWL equivalent class axioms),
  • the creation of named individuals and anonymous individuals as instances of class expressions (OWL class assertion axioms),
  • the creation of inverse properties,
  • and property characteristics axioms (functional, inverse functional, (ir)reflexive, (a)symmetric, transitive).

In summary, PEW can be used both for designing an ontology from scratch, and for completing existing ontologies. One of its benefits is to work at the semantic level by heaviliy relying on a OWL reasoner, which helps to prevent mismatches between use intention and formalization. Another benefit is to promote reasoning at the instance level because it is based on the construction of possible worlds.

Download and Execution

PEW reuses (part of) the user interface of Sewelis, and is therefore implemented in the OCaml programming language. However, it is based on the standard OWL API for all the representation and reasoning tasks, as well as for the management of ontologies. It uses HermiT as a reasoning engine, but any other OWL API-compliant reasoning engine can be used in principle.

PEW is an open source software, available under GPL license. Its source code, as well as a binary version, are available in a Bitbucket repository. To compile from the source, you will need the following dependencies to be installed:

A binary version (date: 2015-11-27) is available for Linux amd64 machines. Once you have downloaded and extracted the archive, open a terminal, move to directory ‘PEW’, and run the command

./start path-to-ontology.owl

For your convenience, here is the link to the Pizza Ontology, on which we tried PEW.

Quick guide

Here is a screenshot of PEW, applied to the Pizza Ontology.


PEW’s user interface is composed of a toolbar (T) at the top, a class box (C) at the top left, an instance box (I) at the bottom left, and an adjunct box (A) on the right.  The class box displays the current pointed class expression, where the pointed subexpression (focus) is highlighted, and has an entry field. The known instances of the class expression are listed in the instance box. The possible adjuncts for the focus are displayed in the adjunct box.  Class names are displayed as a tree according to the class hierarchy, and unqualified existential restrictions are displayed as a tree according to the property hierarchy.

For each possible adjunct D, both D and ‘not D’ are displayed, except for the necessary adjuncts, for which only D is displayed but in a larger font. For the concrete syntax of the class expression and adjuncts, both DL notation and Manchester notation are available (see Menu View). For better readability of complex expressions, we use indentation instead of brackets. Syntax highlighting (foreground color) is used in class expressions to distinguish between class, role, and individual names.

From the screenshot, we can conclude a number of things about the pizza ontology. From the class box, we conclude that a pizza may have no topping. From the instance box, we conclude that there is no known individual pizza without topping. From the adjunct box, we further conclude that a pizza must be some food, that it must have some base as an ingredient, but that it may also be a country, and that it may have no country of origin.

Navigation from one (pointed) class expression to another is entirely performed in an interactive way. Double-clicking an adjunct inserts it at the focus of the class expression. Intersections and unions of several adjuncts can be inserted at once through the contextual menu of (A). Instances in (I) can also be inserted at the focus, like for adjuncts. Alternately, adjuncts can be found by auto-completion in the text fields (one at the focus in the class box, and another above the adjunct box). The focus can be moved simply by clicking on various parts of the class expression.  The contextual menu of the class box provides additional transformations: insertion of a disjunction (command “_ or ?”) or deletion (command “Delete”) of the subexpression at the focus. The toolbar provides navigation in the history of class expressions.

Each of the tree components of the interface provides controls to update the ontology by assering axioms. In the toolbar (T), button “Undo” can undo axioms in reverse order, and button “Save” saves the ontology in the opened file. On the class box (C), button “Possible” has the effect to declare any named entity (class, property, individual) that has been created during the construction of the class expression. Button ‘Impossible’ produces an axiom in order to exclude from possible worlds the instances of the current class expression. The above screenshot displays a situation where this operation would make sense. To provide feedback about the update, the focus background color switches from green (satisfiable class) to red (unsatisfiable class). Button “Necessary” produces an axiom in order to make the focus necessary w.r.t. the rest of the class expression. This is equivalent to negating the focus, and then pressing “Impossible”. It is convenient to add positive axioms, such as “Every pizza has a topping”. Button “Define class” defines a named class as equivalent to the current class expression. On the instance box (I), button “Add instance” creates a named individual as an instance of the current class expression. On the adjunct box (A), buttons “Add class”, “Add property”, and “Add inverse property” respectively create new classes and properties as possible. More commands are available on selections of adjuncts from the contextual menu. Command “Add subclass” creates a new named class as a subclass of an adjunct. Commands “All impossible” and “All necessary” respectively make impossible and necessary each selected adjunct at the focus of the class expression, like if they were inserted in it in turn. Command “All disjoint” makes all selected adjuncts mutually exclusive. This is useful to quickly express disjointness axioms between classes, and “all different” axioms on individuals. Finally, commands “All functional”, …, “All transitive” assert different characteristics on properties.


This YouTube screencast develops a full scenario of the creation from scratch of an ontology about basic hand anatomy (hand parts, and part-of relationships). It is based on the December 2015 version of PEW. First, the elements of a hand are defined as a hierarchy of classes, the ‘hasDirectPart’ property is created, as well as its inverse ‘isDirectPartOf’. Then, each hand element is explored in turn, and possible situations are eliminated in order to reflect constraints on the composition of (normal) hands: each hand as an index finger, each index finger has a distal phalanx, each distal phalanx has a nail, each nail is part of a distal phalanx, etc.

This screencast develops a full scenario of adding negative axioms to the pizza ontology (this is EKAW’12 version). This scenario can be split into three parts:

  1. class exploration: each class is visited in turn,
  2. role exploration: each role is visite in turn, and its possible ranges are checked,
  3. exploration of what a vegeterian pizza can contain (where we discover that such a pizza can contain meat or fish!).


  • Sébastien Ferré. Semantic Authoring of Ontologies by Exploration and Elimination of Possible Worlds. In Int. Conf. Knowledge Engineering and Knowledge Management (EKAW), LNAI 10024, 2016. Springer.
  • Sébastien Ferré, Sebastian Rudolph: Advocatus Diaboli – Exploratory Enrichment of Ontologies with Negative Constraints. Knowledge Engineering and Knowledge Management (EKAW) 2012, LNCS 7603, 42-56, Springer.
  • Sébastien Ferré. Conception interactive d’ontologies par élimination de mondes possibles. In Ingénierie des connaissances (IC), 2015. AFIA. [version HAL]


PEW is developped by Sébastien Ferré, and is based on joint work with Sebastian Rudolph.

Comments are closed