W3C home > Mailing lists > Public > public-sdw-wg@w3.org > November 2016

OWL 2 DL vs OWL 2 Full [Was: Re: rdfs:class versus owl:class in SOSA-Core]

From: Antoine Zimmermann <antoine.zimmermann@emse.fr>
Date: Wed, 09 Nov 2016 21:00:07 +0100
Message-ID: <58238047.6030304@emse.fr>
To: Krzysztof Janowicz <jano@geog.ucsb.edu>, Joshua Lieberman <jlieberman@tumblingwalls.com>, Simon Cox <Simon.Cox@csiro.au>, Kerry Taylor <kerry.taylor@anu.edu.au>, Armin Haller <armin.haller@anu.edu.au>
CC: SDW WG Public List <public-sdw-wg@w3.org>
Sorry to step in this discussion while I have not followed what 
triggered it, but I think I may have insights about how OWL works.

OWL is a very complicated beast.

TL;DR:  OWL DL classes can be typed with rdfs:Class without any problem 
for OWL reasoners, and rdfs:Class can be typed with owl:Class without 
any problem for RDFS reasoners.

Warning: the explanations below are pretty long and detailed and brain 

On 09/11/2016 00:01, Krzysztof Janowicz wrote:
> Hi,
> Sorry for being so picky about this during our meeting but I do not want
> us to take decisions that have consequences that we can not yet foresee.
> To the best of my knowledge (and please correct me if I am wrong):
> Under the semantics of OWL1, rdfs:class and owl:class are only
> equivalent for OWL-Full. For OWL-DL (and OWL-Lite) owl:class is a
> subclass of rdfs:class.

The standard Web Ontology Language is now OWL 2. Let us forget about OWL 
1 (and please do not talk about OWL Lite, yuck!)

OWL 2 is a set of standards that effectively define two logics. The two 
logics are often referred to as OWL 2 DL and OWL 2 Full but this is not 
exactly it.

OWL 2 DL and OWL 2 Full only refer to two different sets of syntactic 
structures. There is no semantics in the names OWL 2 DL and OWL 2 Full 
per the standard.

An OWL 2 DL ontology is an OWL 2 ontology that satisfies the constrains 
that make OWL 2 DL computationally decidable.

An OWL 2 ontology is any construction that follows the OWL 2 structural 
specification [1]. More precisely, it is an instance of the UML diagrams 
in [1, Section 3]. Therefore, an OWL 2 ontology is nothing like an RDF 
graph at all.

An OWL 2 Full ontology is an RDF graph, and vice versa (that is, "OWL 2 
Full ontology" is a synonym of "RDF graph", that is, it is a set of RDF 

So, OWL 2 DL ontologies are *not* OWL 2 Full ontologies.

Strictly speaking, "owl:class is a subclass of rdfs:class" is not 
something that can be decided by only considering OWL 2 DL or OWL 2 Full 
because these two names refer to purely syntactic constructions.

Since OWL 2 Full ontologies are RDF graphs, they can be interpreted 
according to the RDF semantics, the RDFS semantics, the simple 
semantics, D-entailment, ter Horst semantics, and the OWL 2 RDF-based 
semantics (and others). It is generally the case that when someone says 
OWL 2 Full, one implicitly assumes "RDF graphs with the OWL RDF-based 
semantics". It is also often the case that when one says "OWL 2 Full", 
they have in mind a mystical thing that is both dangerous (because 
computationally undecidable) and incomprehensible (because it is indeed 
very complicated).

Now, this clarifies what is meant by "OWL 2 Full" and if I adopt the OWL 
2 RDF-based semantics [2], I can say that it is true that:

  owl:Class  owl:equivalentWith  rdfs:Class .

What happens with OWL 2 DL ontologies? Is the previous statement true? 
The answer is that the question does not even make sense because an RDF 
triple does not belong to the language of OWL 2 DL. In OWL 2 DL, 
owl:Class is not a class. It even *cannot* be a class, by definition of 
the structural specification. Incidentally, it cannot be equivalent 
with, nor even a subclass of anything.

This is certainly confusing. Most of you have certainly "seen" OWL 
ontologies, and they were goddam RDF files!  In fact, the RDF file is 
just an encoding.  Just like some of you have "seen" RDF graphs, and 
they were goddam XML files!  That was just an encoding.  RDF graphs can 
exist in XML form, in JSON form, in Turtle form, etc. OWL ontologies can 
exist in RDF graph form. It even has a name in the OWL 2 specifications: 
they are called "OWL 2 DL ontologies in RDF graph form" [2, Section 7].

OWL 2 DL ontologies in RDF graph form are a subset of OWL 2 Full ontologies.

Because of this, by *abuse of language*, it is perfectly legitimate to 
say "all OWL 2 DL ontologies are OWL 2 Full ontologies" and I will take 
this for granted, knowing the precise formal implications of the abuse.

Getting back to our problem. For anything practical, what we want is to 
write RDF graphs (i.e., OWL 2 full ontologies, remember?). The question 
is whether we can write such a graph as an OWL 2 DL ontology in RDF 
graph form.

For the moment, we concentrate on the statements:

(1) ex:myClass  a  owl:Class .


(2) ex:myClass  a  rdfs:Class .


(3) ex:myClass  a  rdfs:Class, owl:Class .

The specification tells us that the first triple is compulsory for the 
ontology to be in OWL 2 DL. If we want to keep total compatibility with 
OWL tools, we must choose (1) or (3).
(3) is harmless to OWL tools. The OWL 2 mapping to RDF graph [3] (which 
also provides the inverse mapping from OWL 2 ontologies in RDF graph 
form to OWL 2 ontologies) says that it is fine as far as OWL 2 is concerned.
If we interpret the ontology according to the OWL 2 RDF-based semantics, 
it is redundant because, in this case, rdfs:Class is equivalent to 
owl:Class, but it's fine and harmless nonetheless.
(3) is also harmless to RDFS reasoners. Actually, nothing from OWL can 
pose any problem to an RDFS reasoner, unless the reasoner is doing 
stupid things that are not in the recommendation.

However, (1) is also ok for an RDFS reasoner, in most situations. 
Granted, a pure RDFS reasoner won't be able to infer from this unique 
triple that ex:myClass is a class, but that's OK. As soon as the class 
is used in a triple like:

ex:something  a  ex:myClass .

the reasoner can infer that ex:myClass is a class. There are other ways 
it could infer it, BTW.

My advice would be to type the classes using both rdfs:Class and 
owl:Class and to try to keep things within OWL 2 DL because in most 
cases, it will be totally harmless and transparent to RDFS tools.

That's all for the moment. I'll get back to you in another email.

[1] Boris Motik, Peter F. Patel-Schneider, Bijan Parsia. OWL 2 Web 
Ontology Language, Structural Specification and Functional-Style Syntax 
(Second Edition). W3C Recommendation 11 December 2012. 
[2] Michael Schneider. OWL 2 Web Ontology Language, RDF-Based Semantics 
(Second Edition). W3C Recommendation 11 December 2012. 
[3] Peter F. Patel-Schneider, Boris Motik. OWL 2 Web Ontology Language
Mapping to RDF Graphs (Second Edition). W3C Recommendation 11 December 
2012. https://www.w3.org/TR/2012/REC-owl2-mapping-to-rdf-20121211/


> This means that every valid document in OWL will be a valid document in
> RDFS, however *not* every rdfs:class is an owl:class. I do not want us
> to end up in OWL-Full because of this.
> For OWL2, I found this: 'owl:Class rdfs:subClassOf rdfs:Class . "
> (https://www.w3.org/TR/owl2-rdf-based-semantics/). Things may be more
> complicated here due to OWL2 punning and they may well turn out to be
> equivalent, I will check this later.
> If we decide to restrict ourself to only using RDFS for SOSA-core, and I
> am not in favor of this, then we may have to go with rdfs:class.
> However, we have not yet taken this decision and have also not discussed
> which axioms and language to use for SSN. As Sosa-core and SSN will be
> aligned, this may have more consequences that we should consider. It
> also seems like many of us are in favor of using inverseOf, so we would
> be using OWL (and its formal semantics) anyway. Note that this does not
> do any harm to an RDFS-only tool/user as for those the inverseOf axiom
> will simply have no formal semantics. Still all other triples that use
> both relations will still be just fine.
> Given the subclasssing, I do not see any problems using owl:class, but
> we may accidentally end up in OWL-full or with being incompatible to the
> standards if we opt for rdfs:class. Again, I am happy to be corrected.
> At least, I do not see harm in simply using owl:class.
> Finally, and from very pragmatic point of view: ontologies that are
> under very heavy use such as the DBpedia ontology simply use owl:class
> and I have not yet seen any issues or complaints about that. See, for
> example, http://dbpedia.org/ontology/City "dbo:City    rdf:type
> owl:Class ." The same is true for the goodrelations ontology and so
> forth (but I admit that this is due to the more complex axiomatization
> they use).
> I hope this will start a productive discussion.
> Thanks for reading,
> Krzysztof
Received on Wednesday, 9 November 2016 20:00:45 UTC

This archive was generated by hypermail 2.4.0 : Thursday, 24 March 2022 20:31:27 UTC