[OWLWG-COMMENT] ISSUE-55 (owl:class)

[public comment to OWL-WG discussion
also posting to WG members involved in the discussion]

Hello!

In the OWL-WG mailing list, there is an ongoing debate about whether the
class owl:Class should be identifed with rdfs:Class in OWL-1.1-DL. The
argumentation, according to James Hendler, is that many existing OWL
ontologies are in OWL-Full only because they use rdfs:Class instead of
owl:Class. See the respective issue:

  <http://www.w3.org/2007/OWL/tracker/issues/55>

The reason for having so many OWL ontologies containing rdfs:Class seems to
be that many people do not fully understand, when to use 'owl:Class' and
when to use 'rdfs:Class'.

There has already been some discussion in the WG list about the problems
with the request for changing rdfs:Class to owl:Class. So my comment will
focus more on trying to explain where the difference between rdfs:Class and
owl:Class come from. I will also make a few recommendations on how to cope
with the situation.

In order to understand the difference between owl:Class and rdfs:Class in
OWL-DL, one has to go to the RDF semantics [1]. In RDF semantics, the
universe of all entities, about which one can make assertions, is
rdfs:Resource. So everything is a resource, even classes. Classes are those
resources, which happen to have a "class extension". The class extension of
a class resource C is just the set of all resources x, for which the
relationship

  x rdf:type C

holds. Because in the RDF view of the world, classes are itself resources,
they may be contained in the class extension of other class resources. In
principle, there may be arbitrary length "instance-of" chains like:

  C1 rdf:type C2 rdf:type C3 rdf:type C4 ...

The subset of rdfs:Resource, which consists of all class resources, is
called 'rdfs:Class'. Note that 'rdfs:Class' is defined in the RDF semantics
document (section 4.1 in [1]), not in the OWL spec! On the one hand,
rdfs:Class is a /resource/, simply because it is just an entity of the
world, about which one can make assertions. On the other hand, rdfs:Class is
a /class/, because it has a class extension, which consists of all class
resources. But being itself a class resource means that rdfs:Class is itself
an instance of rdfs:Class, so the following statement is true in RDF(S):

  rdfs:Class rdf:type rdfs:Class

OWL-DL demands a clear separation between individuals and classes, so in
OWL-DL it is not allowed that some class can itself be an instance of
another class. This means that in OWL-DL the class rdfs:Class must *not* be
the class of all classes. Instead, a subclass of rdfs:Class, called
'owl:Class', has been introduced in OWL, which is meant to be the class of
all "allowed" OWL classes. This has the following consequences:

* In OWL-DL, the class owl:Class is a /strict/ subclass of rdfs:Class,
because if it were equivalent to rdfs:Class, the following assertion would
need to be true in OWL-DL according to the discussion above:

  owl:Class rdf:type owl:Class # does NOT hold in OWL-DL!

* In OWL-Full, the "allowed" classes are just all RDF(S) class resources,
because OWL-Full is meant to be a semantic extension to RDFS. Thus, in
OWL-Full owl:Class is the same as rdfs:Class.  

So from this discussion it should become clear that it would be an error to
identify owl:Class with rdfs:Class in OWL-DL(-1.1). Using rdfs:Class within
an OWL ontology is a little bit like saying: "Hereby I adopt the RDF(S) view
of the world." And from this point of view it seems to be ok that the
resulting ontology then falls into OWL-Full, which is, as said above, a
semantic extension to RDFS.

Now, finally, here are my recommendations how to cope with the situation,
based on the above discussion:

* If one creates a new OWL ontology, one always should use 'owl:Class'
instead of 'rdfs:Class'. This will always be the right thing, because it is
the only possibility in OWL-DL, and in OWL-Full owl:Class is the same as
rdfs:Class, anyway. So there is /never/ a situation in OWL where the use of
'rdfs:Class' is necessary.

* The following recommendation is less conservative: OWL reasoners (even
OWL-Full reasoners) should always silently change occurrences of
'rdfs:Class' to 'owl:Class', for pretty much the same reasons as given in
the previous point. The only dangerours situation, which I can see, would be
if one accidentally uses an OWL-DL reasoner with an ontology, which is
intended to be an OWL-Full ontology. In this case, changing occurrences of
'rdfs:Class' to 'owl:Class' would be an error. But, AFAICS, this would only
become a real problem, if in this ontology some class is used as an
individual (metamodelling). But in such a case, even after changing
rdfs:Class to owl:Class, the resulting ontology would still be an OWL-Full
ontology: There would, for example, be an 'rdf:type' triple with some class
being at the individual position, or a class with an object or data property
attached. The OWL-DL reasoner would refuse to work in such a situation, of
course. So it looks to me that this recommendation is save.

Or to summarize these recommendations in a simple rule of thumb: Assume
'rdfs:Class' in RDFS ontologies, assume 'owl:Class' in OWL ontologies.

Cheers,
Michael

[1] RDF Semantics
    http://www.w3.org/TR/rdf-mt/

--
Dipl.-Inform. Michael Schneider
FZI Forschungszentrum Informatik Karlsruhe
Abtl. Information Process Engineering (IPE)
Tel  : +49-721-9654-726
Fax  : +49-721-9654-727
Email: Michael.Schneider@fzi.de
Web  : http://www.fzi.de/ipe/eng/mitarbeiter.php?id=555

FZI Forschungszentrum Informatik an der Universität Karlsruhe
Haid-und-Neu-Str. 10-14, D-76131 Karlsruhe
Tel.: +49-721-9654-0, Fax: +49-721-9654-959
Stiftung des bürgerlichen Rechts
Az: 14-0563.1 Regierungspräsidium Karlsruhe
Vorstand: Rüdiger Dillmann, Michael Flor, Jivka Ovtcharova, Rudi Studer
Vorsitzender des Kuratoriums: Ministerialdirigent Günther Leßnerkraus

Received on Saturday, 8 December 2007 15:20:22 UTC