Ortiz: Pellet 3.0's Native API

The next major release of Pellet, due out in Q1 of next year, will be version 3.0. One of the big changes to Pellet 3.0 is Ortiz, the new native Java API. This is the first post in a series that will describe Pellet 3.0 and we’re starting with Ortiz.

First, let’s get the basics out of the way:

  1. Have a look at the Ortiz API documentation; go ahead, I’ll wait…You can tuck that away for some “light reading” later on…
  2. Now, take a peek at the Github repo full of example Ortiz programs—nice, huh?

So why are we introducing a new API in a 3.0 release? Let’s take a step back and consider the status quo. The Semantic Web is based, more or less, on RDF and OWL as ways to represent data. RDF is a standardized way to represent graphs of web resources; or, really, graphs of any kind of resource. And OWL adds logic-based semantics to RDF graphs.

That means that an OWL reasoner like Pellet can address its data from an RDF triples perspective or from an OWL axioms perspective. Hence, Pellet is the only OWL DL reasoner that supports the Jena API for programming Pellet at the level of RDF triples. Awesome.

Pellet also supports the OWLAPI, which is an API for reasoners that takes an OWL axiom perspective. So far, so good.

Deprecation

The problem is that Pellet versions earlier than 3.0 had an internal API that was not intended for public use. But since the present Pellet has roots in earlier, research-oriented versions, we never really cleaned that internal API up sufficiently to hide it from Pellet programmers.

The first problem Ortiz solves, then, is that it allows us to deprecate (by ripping out every shred of) the old Pellet internal API. Pellet is now Ortiz all the way down. This also means a massive Java package re-org, so if you were programming to the internal API, expect breakage. (And, yes, we’re practicing here the Torvalds Approach to API compatibility: if you’re going to break it, break it in a big, obvious, and painful way.)

The second problem Ortiz solves is that OWLAPI is more of an OWL API for Java than it is a Java API for OWL.

Design Goals

In other words, we needed a new, native API for Pellet that Java programmers would actually use. We needed an idiomatic Java API. And that’s just what Ortiz is.

  1. Ortiz is a fluent, idiomatic Java API for programming Pellet

  2. Ortiz unifies SemWeb programming in a single API: OWL logical axioms, SPARQL queries (over RDF or OWL, no matter), rules (DL-Safe for now, some flavors of RIF coming later), and OWL-based integrity constraints.

  3. Unification means that Ortiz is reasoner agnostic: Ortiz is the API for the family of OWL2 reasoners that make up Pellet 3.0: OWL2 QL query-time reasoning; Cray XMT-based OWL2 EL reasoning; OWL2 DL reasoning in-memory tableau; and OWL2 RL hybrid-chaining reasoner (Q2, 2011). We encourage other software vendors in this space to consider implementing Ortiz.

  4. Intended to be “skinned” by SemWeb programmers from Clojure, Scala, and other JVM-based language communities.

If you’re an RDF developer and want to work with OWL reasoning, inference, and query via the familiar Jena APIs, then Pellet is a good fit. And if you’re looking for an OWL-based API, Pellet’s new Ortiz API is worth a look. And if you have design or other feedback on Ortiz, check out the pellet-users mailing list.

Feedback: Comments


Comments


Comments by Disqus

Colophon

This is Thinking Clearly, a weblog by Clark & Parsia, LLC—read more about this site.

Follow us on Twitter RSS Feed