- From: Antoine Zimmermann <antoine.zimmermann@emse.fr>
- Date: Wed, 09 Nov 2016 21:00:07 +0100
- 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 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 > >
Received on Wednesday, 9 November 2016 20:00:45 UTC