[an error occurred while processing this directive] Pellet OWL Reasoner [an error occurred while processing this directive]

Pellet has been moved to http://pellet.owldl.com

The information on this page is kept for historical/archival reasons. These pages are not updated any more. Please update your link.


Overview     |     Project Page    |     Download     |     Support     |     FAQ     |     Online demo     |     Performance     |     Pellet Widget    

Pellet is an open-source Java based OWL DL reasoner. It can be used in conjunction with both Jena and OWL API libraries and also provides a DIG interface. You can download Pellet API which provides functionalities to see the species validation, check consistency of ontologies, classify the taxonomy, check entailments and answer a subset of RDQL queries (known as ABox queries in DL terminology). You can also use the online demo which provides most of these functionalities.

Pellet is an OWL DL reasoner based on the tableaux algorithms developed for expressive Description Logics. It  supports the full expressivity OWL DL including reasoning about nominals (enumerated classes). Therefore, OWL constructs owl:oneOf and owl:hasValue can be used freely. Currently, Pellet is the first and only sound and complete DL reasoner that can handle this expressivity. Pellet ensures soundness and completeness by incorporating the recently developed decision procedure for SHOIQ (the expressivity of OWL-DL plus qualified cardinality restrictions in DL terminology).

Special features

Pellet has a number of features either driven by OWL requirements or Semantic Web issues.

Ontology analysis and repair OWL has two major dialects, OWL DL and OWL Full, with OWL DL being a subset of OWL Full. All OWL knowledge bases are encoded as RDF/XML graphs. OWL DL imposes a number of restrictions on RDF graphs, some of which are substantial (e.g., that the set of class names and individual names be disjoint) and some less so (that every item have a rdf:type triple). Ensuring that an RDF/XML document meets all the restrictions is a relatively difficult task for authors, and many existing OWL documents are nominally OWL Full, even though their authors intend for them to be OWL DL. Pellet incorporates a number of heuristics to detect "DLizable" OWL Full documents "repair" them. 

Species Validation Here is a write-up by one of the Pellet programmers that explains how we process an OWL file for species validation.

Entailment In Semantic Web, entailment is the key inference whereas the Description Logic community have focused on satisfiability and subsumption. While entailment can be reduced to satisfiability, most DL systems do not support it. In part to pass a large portion of the OWL test suite, we implemented entailment support in Pellet.

Conjunctive ABox query Query answering is yet another important feature for Semantic Web. We have implemented an ABox query answering module in Pellet using "rolling-up'' technique. We have devised algorithms to optimize the query answering by changing how likely candidates for variables are found and tried. Exploiting the dependencies between different variable bindings helps us to reduce the total number of satisfiability tests thus speeding up the answer significantly.

Datatype Reasoning XML Schema has a rich set of basic datatypes including various numeric types (integers and floats), strings, and date/time types. It also has several mechanism, both standard and unusual for creating new types out of the base types. For example, it's possible to define a datatype by restricting the integers to the set of integers whose canonical representation has only 10 digits, or whose string representation matches a certain regular expression. Currently, XML Schema systems tend toward validation of documents and generation of PSVI instead of type checking (though, with the advent of XQuery, this might change). Pellet can test the satisfiability of conjunctions of thus constructed datatypes.

User-defined Simple Datatypes The main problem of having user-defined datatypes is how to define URI's for XML Schema definitions. This document from SWBPD working group at W3C discusses the problem and several different solutions in detail. In Pellet, we adopt the DAML+OIL solution which says a datatype URI is constructed from the URI of the XML schema document and the local name of the simple type. We parse the XML schema document from the given URI and locate the type using name attribute of the definitions.  See as an example ontology that refers to the datatype descriptions in the XML schema document located here.

Multi-Ontology Reasoning using E-Connections An E-Connection is a knowledge representation language defined as a combination of other logical formalisms. We use E-Connections as a language for defining and instantiating combinations of OWL-DL ontologies, i.e. as a way of combining KBs, rather than logics. This approach provide an alternative to owl:imports will always bring all the axioms from the imported ontology, lets us to identify sub-parts of an ontology and gives a well-founded logical framework for reasoning with multiple ontologies. See this page for more information about E-Connections and example ontologies. Pellet provides support for reasoning with E-connected ontologies through both Jena and OWL-API interfaces.

Ontology Debugging Detection of unsatisfiable concepts in an ontology is a straright-forward task. However, the diagnosis and resolution of the bug is generally not supported at all. For example, no explanation is given as to why the error occurs (e.g., by pinpointing the root clash, or axioms in the ontology responsible for the clash) or how dependencies between classes cause the error to propagate (i.e., by distinguishing root  from derived unsatisfiable classes). Pellet, provides support for both kinds of tasks by pinpointing axioms that cause an inconsistency and the relation between unsatisfiable concepts. Currently, these features are provided in a separate development branch but there is a version of Swoop that integrates the explanation-generating version of Pellet to allow users debug ontologies.

Applications

Pellet is currently being used in various existing applications and there is some ongoing work to integrate Pellet to different :

Ontology Development Pellet is the default reasoner in Swoop, a lightweight ontology browser and editor. Pellet is used for classification, class satisfiability testing, and species validation and ontology repair. It can also be used in combination with OWL-S API.

Web Service Composition Pellet is used for web service discovery and composition. Pellet has been incorporated as the knowledge base for a version of the SHOP2 HTN planning system and Fujitsu Lab of America's Task Computing Environment (TCE).

Rule integration We also aim to integrate the reasoner with rules to support Semantic Web Rule Language (SWRL). 

Architecture of Pellet

The core of the Pellet reasoner is the tableaux reasoner that checks the consistency of a KB, i.e. a pair of an ABox and a TBox. The reasoner is coupled with a datatype oracle that can check the consistency of conjunctions of (built-in or dervied) XML Schema simple datatypes. The OWL ontologies are loaded to the reasoner after a step of species validation and ontology repair. This step ensures that all the resources have an appropriate type triple (a requirement for OWL DL but not OWL Full) and missing type declarations are added using some heuristics (see Section \ref{repair} for details). During the loading phase, axioms about classes (subclass, equivalent class or disjointness axioms) are put into the TBox component and assertions about individuals (type and property assertions) are stored in the ABox component. TBox axioms go through the standard preprocessing of DL reasoners before they are fed to the tableaux reasoner.

Essentially, a tableau reasoner has only one functionality which is checking the satisfiability of an ABox with respect to a TBox. All the other reasoning tasks can be reduced to KB consistency test with an appropriate transformation. The System Programming Interface (SPI) of Pellet provides generic functions to manage such transformations. This KnowledgeBase interface, as the rest of internal components, is based on the ATerm library. ATerm (short for Annotated Term) is an abstract data type designed for the exchange of tree-like data structures between distributed applications. The ATerm library provides maximal subterm sharing and automatic garbage collection making it very suitable for representing OWL class expressions. The term sharing feature reduces the overall memory consumption spent for storing concept expressions and makes it is easy to transform the data from Pellet SPI to external API's.

This KnowledgeBase interface is not supposed to be used by programmers. For convenience, there are two different interfaces to support Jena and OWL-API applications. There is also a DIGServer so that Pellet can be used with DIG applications, e.g. as an external reasoner for Protege.

[an error occurred while processing this directive]