As we announced earlier today on the Pellet mailing list, Pellet 2.0 RC1 is now available for download. It’s been a while since the last public release of Pellet, and we have been working hard on this release and are all very happy about it. The list of changes is extensive and, in our biased view, exciting, both for Pellet and the ongoing viability of OWL.
Starting with this release, the licensing terms for Pellet are changing. Pellet will now be available under dual licensing terms. If you’re using Pellet in open source projects, it’s available under AGPL Version 3 terms. However, if the AGPL Version 3.0 license is incompatible with your use of Pellet, alternative license terms are available from Clark & Parsia LLC. You can find more details about licensing here.
There are various improvements and additions in this new release. We worked on performance improvements over several months, achieving speed ups for the reasoning process and reducing memory consumption too. Several new features have also been added:
OWL2 support. The OWL 1.1 support in Pellet 1.5.2 has now been updated to support OWL2 as described in the latest W3C Working Draft. Reasoning support for the new OWL2 constructs has been improved and has been more robustly tested. There is also a specialized classifier optimized for the OWL2-EL profile. The OWL2-EL classifier provides both better speed and improved memory usage for the classification task when compared to the default classifier. In testing we used it to classify ontologies with half a billion classes (i.e., around one billion RDF triples) on a commodity laptop.
Incremental classification. Pellet 2.0 also provides a new classifier implementation that can update classification results upon ontology changes. The incremental classifier uses the Pellet classifier to compute the initial class hierarchy, but when the ontology is updated (through addition or removal of axioms) only relevant parts of the hierarchy are recomputed. Relevant parts of the class hierarchy are found using the ontology modules automatically extracted by Pellet. For some use cases, this scheme can provide significant performance improvements, including more or less real-time classification of NCI Thesaurus.
Ontology modularity. There is now a stand-alone ontology module extractor that can be used to extract a subset of an ontology relevant for a given a set of terms. The Locality-based modularity concept is used to ensure the logical completeness of the extracted module. The extracted module from a large ontology will typically be much smaller making it easier to understand (for humans) and process (for tools).
SPARQL-DL query engine. A new query engine that can answer SPARQL-DL queries debuts in this release. This query engine can answer mixed ABox/TBox queries and supports some special query predicates, e.g. a special predicate to retrieve direct subclasses rather than all subclasses. The SPARQL-DL engine is also tightly integrated with Jena ARQ such that ARQ handles the SPARQL algebra for complex constructs like OPTIONAL, UNION, FILTER, while Pellet’s SPARQL-DL engine answers the Basic Graph Patterns (BGP).
SWRL rule support. SWRL rule support in Pellet has been improved too. Some known performance issues were fixed and SWRL coverage was significantly extended. Pellet now supports all the built-in functions from the SWRL specification with the exception of rdf:List related functions.
Command-line Interface. Last but not the least Pellet command-line interface (CLI) has gotten a complete makeover. We redesigned the CLI on the model of Subversion’s CLI. The Pellet CLI provides various subcommands that can be used for consistency checking, classification, realization, querying, entailment checking, inference extraction, explanation, and extraction of modules. The Pellint tool has also been integrated into the Pellet CLI.
One feature I like most about the new CLI is that it accepts multiple ontologies as input, so you don’t have to merge them manually (or create one ontology that imports them all). If you have multiple ontologies in one directory, you can even use wildcards (actually: full Java regular expressions) to load all of them at once.
Keep in mind that this is a release candidate: it is close to a final 2.0 release, but you might encounter some minor issues while using it. If that happens, please let us know through the pellet-users mailing list and we’ll sort those issues out for the final release.