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

Fantastic Antoine,  thanks for taking the time to write this up!

So, can we decide to follow Antoine's advise and use strategy 1 (or 3; 
as per the last sentence) ?

Best,
Krzysztof


On 11/09/2016 12:00 PM, Antoine Zimmermann wrote:
> 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 
> damaging.
>
>
>
> 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 triples).
>
> 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 .
>
> or:
>
> (2) ex:myClass  a  rdfs:Class .
>
> or:
>
> (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. 
> https://www.w3.org/TR/2012/REC-owl2-syntax-20121211/
> [2] Michael Schneider. OWL 2 Web Ontology Language, RDF-Based 
> Semantics (Second Edition). W3C Recommendation 11 December 2012. 
> https://www.w3.org/TR/2012/REC-owl2-rdf-based-semantics-20121211/
> [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/
>
>
>
> --AZ
>
>
>>
>> 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
>>
>>
>


-- 
Krzysztof Janowicz

Geography Department, University of California, Santa Barbara
4830 Ellison Hall, Santa Barbara, CA 93106-4060

Email: jano@geog.ucsb.edu
Webpage: http://geog.ucsb.edu/~jano/
Semantic Web Journal: http://www.semantic-web-journal.net

Received on Wednesday, 9 November 2016 20:10:29 UTC