What happened previously
In the SKOS
spec you find a list of Class & Property Definitions and Integrity Conditions numbered from S1 to S62.
Most of these definitions and constraints are already covered by the existing SKOS OWL1 ontologies (available in Full
However some definitions and conditions could not be expressed in OWL1.
This is the list:
- S13: skos:prefLabel, skos:altLabel and skos:hiddenLabel are pairwise disjoint properties .
- S14: A resource has no more than one value of skos:prefLabel per language tag .
- S27: skos:related is disjoint with the property skos:broaderTransitive.
- S46 : skos:exactMatch is disjoint with each of the properties skos:broadMatch and skos:relatedMatch .
- S55: The property chain (skosxl:prefLabel, skosxl:literalForm) is a sub-property of skos:prefLabel.
- S56: The property chain (skosxl:altLabel, skosxl:literalForm) is a sub-property of skos:altLabel.
- S57: The property chain (skosxl:hiddenLabel, skosxl:literalForm) is a sub-property of skos:hiddenLabel.
- S58: skosxl:prefLabel, skosxl:altLabel and skosxl:hiddenLabel are pairwise disjoint properties .
Hence the question if these could be expressed in OWL2
as defined by W3C.
I tried to use OWL2 for cases
In these 4 cases my conclusion
was very hard: that OWL2 as defined by W3C was pretty useless for the case.
I tried to implement the same skos conditions using SPIN/SPARQL and that went fairly easy and painless.
This conclusion attracted some interest and motivated Holger Knublauch
to write a blog entry
with the title "WHERE OWL fails".
His main points were:
- OWL is hard-coded against specific design patterns, and anything that goes beyond those patterns cannot be expressed.
- The choice of supported design patterns is heavily influenced by the theory of Description Logics being theoretically sound but the 'usefulness in practice' questionable.
This triggered a response of Kendall Clark
Since I'm a happy user of both TopBraid Composer
of TopQuadrant and Pellet
of C&P, I would like to add my point(s) of view.
Before we continue I must make clear that in this discussion we are talking about 3 different things
- SPIN, the constraint and construct language developed by Holger Knublauch and implemented in the TBC suite of tools, but also available in open source
- OWL2 with an open world assumption as described by W3C and criticized by Holger
- OWL2 with a closed world assumption as implemented in Pellet ICV made by Clark & Parsia, from now on referred to as OWL2IC.
Do they disagree?
Let's start with constraint checking.
From a distance I think they both more agree than Kendall is willing to admit.
They both agree that:
- in a lot of use cases the Open World Assumption of OWL2 is counter-intuitive and counter-productive (Why integrity constraints?)
- checking closed world constraints is best being done using SPARQL
They only differ in opinion on how the constraint checking SPARQL queries need to be generated.
- In the case of SPIN, you need to write the SPARQL yourself.
- In the case of OWL2IC, you write OWL axioms which are transformed then in the background to SPARQL queries.
I do not have a firm opinion on this one.Jeni Tennison
reacted on Twitter that you have a similar situation in the XML world:XML Schema
: declarative versus rule-based constraints and both are considered useful.Although there is a difference with the SPIN - OWL2IC divide: XML SChema and RelaxingNG do not generate Schematron in the background.
For people that want to do that you can use the XSD2Schematron converter from Rick Jelliffe, but I digress.
Some additional points to take into consideration:
- The writing of SPARQL queries is not that obvious. This is also one of the rationales behind the development of the Linked Data API. cf. slide
So indeed, if well done, a declarative approach can make writing constraints easier for certain types of users.
On the other hand is my experience and on the XML and RDF side that some constraints can only be expressed using rules; so I would say that this approach is more powerful, as being proved also in the context of S14.
Easier versus powerful or maybe when we grow up, we get a combined solution such as in the upcoming XSD 1.1. (see also the suggestion of Evren Sirin in the context of S14.)
- SPIN is more than a constraint checking language, as being proved by the solution for the property chain inference which could not be expressed by OWL2.
But I would say: let the market decide which approach is preferred. There is surely a need to have something to validate RDF. Time for the W3C to step in?
Do they disagree?
Of course, they disagree on the importance of OWL2.
For TopQuadrant OWL2 is just one and optional piece within SW applications.
"But this makes OWL just one out of a catalog of vocabularies, on the same level as SKOS or FOAF or SIOC or GoodRelations. "
The flagship product of Clark&Parsia is Pellet, the leading OWL2 DL reasoner; so it's obvious where they stand.
And I can imagine one gets nervous when OWL2 is not accompanied by drumrolls.
However Holger's opinion is according to me well balanced.
I agree on Holger's point 1: OWL 2 (DL) implies indeed some constraints on what you can model, which doesn't always fit what you need and want. This was the whole point of my series.
Concerning point 2: I also experienced myself more than once that OWL DL reasoning can take some time, but I hope and expect that clever engineering will make things better in the future.
But if you need and want OWL2, you need and want Pellet.
One main and sufficient reason: the explain
feature which helps me solve the bugs in my head.
Let the software speak
The good point of this whole discussion was that this triggered Clark & Parsia to ameliorate their OWLIC implementation in Pellet ICV of which a new version 0.4 was released yesterday.
An overview of my test results is given in the table below.
Details can be found in updated versions of the respective blog entries S14
OWL-API and SKOS
I take the opportunity to discuss some SKOS related issues I encounter with every software that's built upon the OWL API, being the Protégé
's 4, the Neon Toolkit
Importing the skos-xl ontology at http://www.w3.org/2008/05/skos-xl
in your own ontology.
This skos-xl ontology contains itself another owl:imports statement of the core skos ontology:
This indirect import gets lost during import.
The result of this loss is that due to some OWL2 magic the property skos:definition becomes an Object Property while it has been defined originally as an Annotation Property. ???
You can correct this loss by doing a direct import of the skos core ontology . This direct import works, but doesn't correct the issue mentioned above. Furthermore this import cannot be saved. ???
Also all annotation properties get doubled as datatype properties. The explanation given today on the Protégé list:
"Actually this happens in part because it appears that the skos ontology
is inconsistent with the OWL 2 specifications. There it says that
If an ontology has an ontology IRI but no version IRI, then a different ontology with the same ontology IRI but no version IRI should not exist.
However skos has two distinct ontologies with the same name."
I'm afraid that one of the more popular SW vocabularies being SKOS and OWL2 do live in separate worlds and that hence you better don't use tools that are too hardwired to OWL2.