Wednesday, September 01, 2010

RDFS Plus as a subset of OWL RL in SPARQL Rules

There is a growing interest in the OWL RL profile of the Web Ontology Language, e.g. see recent postings on Semantic Overflow or Dean Allemang's blog entry. OWL RL has been defined by the W3C working group as a subset of OWL 2 that can be formally represented by rules. There are lots of rule engines out there that can be used to represent this subset. I had written about our implementation of OWL RL using SPARQL Rules (SPIN). This implementation can be downloaded and used with SPIN aware tools, such as TopBraid Composer. A human readable display of those rules can be found here: OWL 2 RL in SPARQL.

Some people wonder about the limitations of OWL RL - it does not cover the full expressiveness of OWL after all. How could something so limiting be of any value at all? But this question is only relevant if you are sold into selecting the OWL vocabulary in the first place. This isn't as obvious as it may seem. There is a huge interest in lighter knowledge representation and modeling formalisms such as SKOS, and the emerging Linked Data cloud also only makes use of a very limited subset of OWL.

If you have read Dean Allemang's and Jim Hendler's Working Ontologist book, you may have heard about an even smaller subset of OWL, sometimes called RDFS Plus. This is basically RDF Schema, plus some carefully selected terms from OWL. As an exercise, I recently went through a list of features that roughly cover what RDFS Plus might look like, which Jim had sent to me. All I had to do was to pick those rules from the OWL RL implementation that mentioned the terms from the RDFS Plus vocabulary, and collected them as SPIN Templates in the file at


A human-readable rendering of this namespace with a list of SPARQL CONSTRUCT rules is here:


This exercise illustrates how easy it is to define any number of languages simply in terms of rules. There is a rule for rdfs:subClassOf, a rule for owl:inverseOf etc. When executed together, a small set of rules can lead to interesting inferences. But now take this one step further, and add support for any other vocabulary, such as SKOS:


See this blog posting on how to use this for SKOS constraint checking. And then take this idea another step further, and add some rules for other popular vocabularies such as FOAF or Good Relations, or add support for unit conversion using SPIN. Suddenly you can express relationships between things brought together from multiple online shops with different units, that vaguely define subclass or broader/narrower relationships between each other.

You can basically select whatever kinds of inferences you need for your application. And you can execute them all with the same engine, you can edit them all with the same tool, and you can debug, profile and optimize them with the same platform. OWL RL and RDFS Plus are really good building blocks, but they are part of a family of languages, including the many languages (aka vocabularies and ontologies) that are still to come. I wrote before about how different this approach is from a the hard-coded, closed world view of some OWL fanatics, who still insist that moving beyond OWL DL is evil, and that all you need is a tableau reasoner. Rule-based approaches like SPARQL Rules (SPIN) make it easy to define your own language, or to assemble your own language from existing components.