- From: Guus Schreiber <schreiber@swi.psy.uva.nl>
- Date: Thu, 21 Nov 2002 12:16:32 +0100
- To: WebOnt WG <www-webont-wg@w3.org>
SSUE 5.19 - Classes as instances
I propose to resolve this issue in the following way:
1. Treating classes/properties as instances of other
classes/properties is allowed in OWL under certain semantic
interpretations, as specified in the OWL semantics document [1].
2. For presentation purposes [2] we describe OWL in our documents as
containing three varieties, namely OWL Lite, OWL DL and OWL Full,
where only OWL Full contains the "classes as instances"
feature.
3. We adapt the text of the GUIDE working draft [3] in the way
indicated in the appended text, in an effort to make clear that the
"classes-as-instances" feature is a regular OWL feature and not
just for advanced users.
Guus
[1] http://www.w3.org/TR/2002/WD-owl-semantics-20021108/
[2] http://lists.w3.org/Archives/Public/www-webont-wg/2002Oct/0310.html
[3] http://www.w3.org/TR/2002/WD-owl-guide-20021104/
[NOTE: Changes are marked with tags <add> and <del>, resp. standing
for add or delete this piece of text.]
THE SPECIES OF OWL
OWL is in fact a set of three, increasingly complex languages.
* Owl Lite has been defined with the intention of creating a simple
language that will satisfy users primarily needing a classification
hierarchy and simple constraint features. For example, while it
supports cardinality constraints, it only permits cardinality values
of 0 or 1. For these reasons, it should be simpler to provide tool
support for Owl Lite than its more complex relatives.
* OWL DL includes the complete OWL vocabulary, interpreted under a
number of simple constraints. Primary among these is type
separation. Class identifiers cannot simultaneously be properties or
individuals. Similarly, properties cannot be individuals. OWL DL is so
named due to its correspondence with description logics.
<add>
OWL DL is expected to be supported by reasoning tools based on
description logic.
</add>
* OWL Full includes the complete OWL vocabulary, interpreted more
broadly than in OWL DL, with the freedom provided by RDF. In OWL
Full a class can be treated simultaneously as a collection of
individuals (the class extension) and as an individual in its own
right (the class intension).
<del>
Another significant difference from OWL
DL is that a DatatypeProperty can be marked as an
InverseFunctionalProperty. These are differences that will be of
interest to the advanced user. This document does not describe the
use of these features.
</del>
<add>
RDF users "upgrading" to OWL should consider whether they require OWL
Full. This decision mainly depends on how much they want to keep using
the metamodelling facilities of RDF Schema (i.e. defining classes of
classes). The price you have to pay for OWL FULL when compared to OWL
DL is that reasoning support is less predicatable. For more
information about this issue see the <ref>semantic document</ref>.
</add>
When we introduce constructs that are only permitted in OWL DL or OWL
Full, they are marked by "[OWL DL]" <add>resp. [OWL Full]</add>.
Design for Use
There are important issues regarding the distinction between a class
and an individual in OWL. A class is simply a name and collection of
properties that describe a set of individuals, and individuals are the
members of those sets. Thus classes should correspond to naturally
occurring sets of things in a domain of discourse, and individuals
should correspond to actual entities that can be grouped into these
classes.
In building ontologies, this distinction is frequently
<del>confused</del><add>blurred</add>
in two ways:
* Levels of representation: It is well known that in certain
contexts something that is obviously a class can itself be
considered an instance of something else. For example, in the
wine ontology we have the notion of a Grape, which is intended
to denote the set of all species of
grapes. CabernetSauvingonGrape is an example instance of this
class, as it denotes the actual species of grapes called
Cabernet Sauvignon. However, CabernetSauvignonGrape could itself
be considered a class, the set of all actual Cabernet Sauvignon
grapes.
* Subclass vs. instance: It is very easy to confuse the
instance-of relationship with the subclass relationship. For
example, it may seem arbitrary to choose to make
CabernetSauvignonGrape an individual that is an instance of
Grape, as opposed to a subclass of Grape. This is not an
arbitrary decision, however<del>, but solid engineering</del>.
The Grape
class denotes the set of all species of grapes, and therefore
any subclass of Grape should denote a subset of these species.
<add>
This implies that CabernetSauvignonGrape should be considered an
<b>instance of</b> Grape, and not a subclass (it does not
describe a subset of Grape species, it IS a grape species).
</add>
Note that the same distinction arises with the treatment of the Wine
class. The Wine class actually denotes the set of all varieties of
wine, not the set of actual bottles that someone may purchase. Each
instance of Wine could be considered the class consisting of all the
bottles of wine of that type. It is easy to imagine an information
system, such as an inventory system for a wine merchant, that needs to
consider individual bottles of wine.
<del>
The wine ontology as it currently exists would require the ability to
treat classes as instances in order to support such an interpretation.
</del>
<add>
Note that in OWL you can achieve this by using the expressivity of OWL
Full, which allows you to treat an instance of a wine variety to act
also as a class of wine bottles.
<todo>add example OWL code?!</todo>
As remarked before, the price you have to pay when using this feature
is that reasoning support is less predictable.
</add>
In a similar vein, the wines produced by wineries in specific years
are considered vintages. In order to represent the notion of a
vintage, we must determine where it fits in the current ontology. An
instance of the Wine class, as discussed above, represents a single
variety of wine produced by a single winery, for example
FormanChardonnay. Adding that the wine produced in the year 2000 is
considered a vintage poses a challenge, because we don't have the
ability to represent a subset of a given wine individual. This vintage
is not a new variety of wine, it is a special subset of the wine -
that produced in the year 2000.
<del>
Unless we allow for representation of classes as instances, we are
forced to consider Vintage as a separate class whose instances have a
relationship to the Wine they are a vintage of.
</del>
<add>
One option is to use use OWL Full and treat the wine instances as
classes with subclasses (subsets) denoting vintages. Another option is
to use a workaround and to consider Vintage as a separate class whose
instances have a relationship to the Wine they are a vintage of.
</add>
For example, FormanChardonnay2000 is an individual Vintage with a
vintageOf property whose value is the Wine, FormanChardonnay. We
define the Vintage class below.
<add>
The latter option results in conceptually less clear model, but this
may be a price you are willing to pay to get the reasoning support
available for OWL DL.
</add>
<del>
These issues are certainly for the more advanced ontology builder, and
are not addressed in this document further.
</del>
The point of this discussion is to note that the development of an
ontology should be firmly driven by the intended usage. These issues
also underlie one major difference between OWL Full and OWL DL. OWL
Full allows the use of classes as instances and OWL DL does not. The
wine ontology is designed to work in OWL DL, and as a result
individuals like FormanChardonnay cannot simultaneously be treated as
classes.
--
A. Th. Schreiber, SWI, University of Amsterdam,
http://www.swi.psy.uva.nl/usr/Schreiber/home.html
Received on Thursday, 21 November 2002 06:18:17 UTC