Abstract
This document addresses the issue of using classes as property
values in OWL. It is often convenient to put a class (e.g.,
Lion)
as a property value (e.g., topic or book subject) when building an
ontology.
While OWL Full and RDF Schema do not put any restriction on using
classes
as property
values,
OWL DL and OWL Lite do not generally allow this use. We present
various
use cases to motivate the need for representing classes as values. We
examine representation of this information in OWL and RDF Schema and
suggest different ways of capturing it in OWL DL and OWL Lite.
For each approach, we discuss various considerations
that the users should keep in mind when choosing the best approach for
their purposes.
Status of this Document
This section describes the status of this document at the time of
its
publication. Other documents may supersede this document. A list of
current
W3C publications and the latest revision of this technical report can
be
found in the W3C technical reports
index
at http://www.w3.org/TR/.
This document will be a part of a larger document that will provide
an introduction and overview of all ontology design patterns produced
by
the Semantic Web
Best
Practices and Deployment Working Group.
This document is a W3C Working Draft and is expected to change. The
SWBPD WG does not expect this document to become a Recommendation.
Rather,
after further development, review and refinement, it will be published
and maintained as a WG Note.
This document is the First Public Working Draft. We encourage public
comments. Please send comments to public-swbp-wg@w3.org
Open issues, todo items:
- We identify several OWL DL compatible approaches in this
document. The
WG seeks to determine whether there is consensus on a single preferred
approach. The WG therefore seeks input and feedback from the community
on this question. [1]
- The terms highlighted in blue
will be defined in a dictionary that the OEP task force will produce at
a later date.
Publication as a draft does not imply endorsement by the W3C
Membership.
This is a draft document and may be updated, replaced or made obsolete
by other documents at any time. It is inappropriate to cite this
document
as other than work in progress.
General issue
It is often useful to use classes as values
for properties. While OWL Full and RDF Schema do not put any
restriction
on using classes as property
values, OWL DL and OWL Lite do not generally allow such use. In
OWL DL and OWL Lite, most properties cannot have classes as their values.
Use case example
Suppose we have a set of books about animals, and a catalog of these
books.
We want to annotate each catalog entry with its subject, which is a
particular
species or class of animal that the book is about. Further, we want to
be able to infer that a book about African lions is also a book about
lions
(for example, when retrieving all books about lions from a repository,
we want books that are annotated as books about african lions to be
included
in the results).
More specifically, consider two book examples: (1) "Lions:
Life in the Pride", which is a book that "presents an introduction
to lions describing their physical characteristics, habitat, young,
food,
predators, and relationship to people"; and (2) "The
African Lion," which "describes the physical characteristics,
habitat,
and behavior of the" african lions. We would like to specify that the
first
book describes the animal species of Lions, and the second describes a
species of African Lion. We also want to retrieve the second book when
a query is about Lions, not just African Lions.
We consider species of animals to be subjects of the books
and
would like to use the Dublin Core property dc:subject
for this annotation. Furthermore, we would like to use as our
subjects
various species from an existing class hierarchy of different animal
species.
We discuss a number of approaches for representing this pattern in
OWL
DL and OWL Lite and their implications.
One goal of the web publisher is to enable maximum reuse of
published
information. It will be common on the Semantic Web to import and reuse
other published ontologies. Any reuse of existing ontologies on the
Semantic
Web (in our case, a hierarchy of animal species) should preserve the
original
intended semantics in the new context. If the semantics changes, other
applications already using the ontology may be adversely affected.
Interoperation
with existing applications using this ontology will also be error-prone
(since there will be two different interpretations of the same
ontology).
Some of the patterns that we suggest below change the interpretation of
the hierarchy of classes used for property values. We suggest that
users
take this approach only if they know that no one else is using their
ontology
and no one will be adversely affected by such re-interpretation.
Other use case scenarios
This issue arises in general when we have a hierarchy of classes and
would
like to use it as a terminology to annotate other classes or
individuals.
Consider using a hierarchy of different genres to annotate music CDs,
or
linking classes or individuals in an ontology to the corresponding
terms
in a standard reference terminology. For example, UMLS
is a standard reference terminology for many medical
applications, one may want a "hasDiagnosis" relation from an instance
of
a patient to a class representing a disease indicating the patient was
diagnosed with that disease.
Other use cases for using classes as property values include
meta-modeling and semantic interoperability between systems.
This note uses a
particular
example (classes as the subjects of books) to illustrate a more general
representation pattern: using classes as property values. This
note
should not be interpreted as a general discussion of how to represent
subject
hierarchies or terminologies on the semantic web.
Notations
In all the figures below, ovals represent classes and rectangles
represent
individuals. The orange color signifies classes or individuals that are
specific to a particular approach. Green arrows with green labels are OWL
annotation properties.We use N3 syntax to
represent
the examples.
Approaches
Approach 1: using classes directly as values
In the first approach, we can simply use classes from the subject
hierarchy
as values for
properties (in our example, as values for the dc:subject
property). We can define a class Book to represent all books.
For simplicity, in the hierarchy of animals, we omit classes for other
animals, such as mammals and felines (Figure 1).
Figure 1. Using classes directly as
property
values.
Here is a definition of an individual (a specific book that we are
annotating)
with the corresponding subject (for simplicity, we assume that each
book
discusses only one species of animal):
:LionsLifeInThePrideBook
a :Book ;
rdfs:seeAlso <http://isbn.nu/0736809643> ;
:bookTitle "Lions: Life in the Pride" ;
dc:subject :Lion .
The book "The African Lion" will be represented as:
:TheAfricanLionBook
a :Book ;
rdfs:seeAlso <http://isbn.nu/089686328X> ;
:bookTitle "The African Lion" ;
dc:subject :AfricanLion .
And the class AfricanLion is a subclass of the class Lion:
:AfricanLion
a owl:Class;
rdfs:subClassOf :Lion .
Considerations when choosing approach 1:
- The resulting ontology is compatible with RDF Schema and OWL
Full, but
it is outside OWL
DL and OWL Lite.
- This approach is probably the most succinct and intuitive among
all the
approaches proposed here.
- Applications using this representation can directly access the
information
needed to infer that Lion (the subject of the LionsLifeInThePrideBook
individual) is a subclass of Animal and that AfricanLion
(the subject of the TheAfricanLionBook individual) is a
subclass
of Lion.
- If we need to restrict the range of values for the dc:subject
property, then we need to create an additional class for such a
restriction.
For instance, we may want to define a class of all books about animals
—BookAboutAnimals—that our lion books will be instances of and
we want to restrict the range of values for the dc:subject
property
for the BookAboutAnimals class to the class Animal
and
its subclasses. One way to define such restriction is as follows:
:BookAboutAnimals
a owl:Class ;
rdfs:subClassOf :Book ;
rdfs:subClassOf
[ a owl:Class ;
owl:unionOf ([ a owl:Restriction ;
owl:onProperty dc:subject ;
owl:hasValue Animal
]
[ a owl:Restriction ;
owl:onProperty dc:subject ;
owl:someValuesFrom
[ a owl:Restriction ;
owl:onProperty rdfs:subClassOf;
owl:hasValue Animal
]
])
] .
Here we say that the class BookAboutAnimals is a subclass of
the
class Book. The class BookAboutAnimals is also a
subclass
of the class of all things that must have either the class Animal
itself, or any class that is a subclass of Animal as one of
the
values of the dc:subject property.
OWL code for approach 1
[N3] [RDF/XML]
Summary of approach 1
This approach is a good one to use if you care about simplicity, do not
have to be in OWL DL, and either do not need to limit the range of the
dc:subject
values or do not care that you also need to use classes as subjects to
implement this restriction.
Approach 2: Creating a hierarchy of classes to be
used
as property values and a parallel set of individuals
We can treat the hierarchy of animal species as a hierarchy of
subjects,
create individuals corresponding to all the subjects and use these
individuals
as values for the dc:subject
property (Figure 2). Thus, we will have, for
example,
an individual LionSubject that will be an instance of the Lion
class.
Figure 2. Using a hierarchy of subjects
and a parallel set of subject individuals.
We can then use the LionSubject as the value of the
property
dc:subject
for the LionsLifeInThePrideBook individual:
:LionSubject
a :Lion .
In this case, the definition of the LionsLifeInThePrideBook
refers
to the LionSubject individual
:LionsLifeInThePrideBook
a :Book ;
rdfs:seeAlso <http://isbn.nu/0736809643> ;
:bookTitle "Lions: Life in the Pride" ;
dc:subject :LionSubject .
Considerations when choosing approach 2:
- The resulting ontology is compatible with
RDF Schema and OWL Lite (and hence OWL DL)
- The class Lion has an instance that is the subject
lion.
Creating an instance of the Lion class to represent a
specific
lion at the zoo would be inconsistent with this interpretation.
Therefore,
we will need to have a different class to represent lions at the
zoo. This change has important implications if the hierarchy of animals
is not created by us, but we imported it from somewhere else.
Applications
will interpret the reference to imported classes according to their
original
definitions. Other ontologies importing the same hierarchy of animals
will
in fact use the original definition. Therefore, there may be
inconsistency
not only in our own interpretation but also when our ontology is
integrated
with others importing the same resource. This issue is not a problem
when
we created our own hierarchy of animals and interoperation is not an
issue.
- In this approach, there is no explicit direct relation (i.e.,
a relation that
a general-purpose reasoner can
readily identify) between the LionSubject individual defined
above
and, for example, an AfricanLionSubject individual, which is
an
instance of AfricanLion:
:AfricanLionSubject
a :AfricanLion .
An application trying to utilize this relation
(for example, to extract books about african lions when asked
for
books about lions), will need to be aware of this specific approach and
know to trace back to the corresponding classes, their subclasses, and
respective instances. A general-purpose reasoner will
not be able to use this information directly. Note however that the
individual AfricanLionSubject
is also an instance of the Lion class. Therefore, if we ask
for
all books where dc:subject is an instance of the Lion
class we will get the books that are annotated with AfricanLionSubject.
There is a maintenance penalty: We need to maintain a set of
instances
for all subjects in addition to the hierarchy of subjects and ensure
that
the two sets—classes representing subjects and corresponding
individuals—are
consistent with each other (e.g., that they have the same names, etc.).
However, developers can instrument tools that would maintain this
consistency
automatically.
Some may consider this approach to be "too messy" for the simple
task
at
hand
Defining a range restriction for the dc:subject
property for the class BookAboutAnimals is straightforward.
We
define a someValuesFrom restriction that states that some
values
of the dc:subject property are instances of the class Animal:
:BookAboutAnimals
a owl:Class ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:someValuesFrom :Animal ;
owl:onProperty dc:subject
] .
OWL code for approach 2
[N3] [RDF/XML]
Summary of approach 2
This approach results in an OWL DL ontology and may be a good one to
use
if staying in OWL DL is important. The approach has a potential
disadvantage
of having actual subject values be unrelated to one another and hence
not
allowing a general-purpose reasoner to relate books with a subject
"lion"
to books with a subject "african lions", for example. Furthermore, if
the
hierarchy of animals is imported and the source uses the hierarchy to
describe
actual animals, using this approach is inconsistent with this
interpretation.
You need to maintain consistency between the set of classes
representing
subjects and the set of corresponding individuals.
Approach 3: using a property other than rdfs:subClassOf
to organize the subject hierarchy
We can create a single class Subject and make all the
subjects
to be individuals that are instances of this class Subject (Figure
3):
:LionSubject
a :Subject ;
rdfs:seeAlso :Lion .
We can use the annotation property rdfs:seeAlso to link the LionSubject
individual to the Lion class. Note that rdfs:seeAlso
is an annotation property and hence giving it a value that is a class
does
not take us out of OWL DL. In this approach, we are essentially using
individuals
as surrogates for classes.
We can then create explicit relations between different subjects,
which
will re-create the hierarchy for animals that we have in mind. While we
create our own property parentSubject, we can also use the
corresponding
properties from the SKOS-Core
1.0 schema, which is an RDF schema for representing thesauri and
similar
types of knowledge organization systems. So, for example parentSubject
is similar to skos:broader. The SKOS schema provides a rich
vocabulary
for handling subject hierarchy, with additional properties such as skos:narrower,
skos:related,
and so on.
:parentSubject
a owl:TransitiveProperty , owl:ObjectProperty ;
rdfs:domain :Subject ;
rdfs:range :Subject ;
rdfs:seeAlso <http://www.w3.org/2004/02/skos/core/broader> .
:AfricanLionSubject
a :Subject ;
rdfs:seeAlso :AfricanLion ;
:parentSubject :LionSubject .
Figure 3. Using a property other than rdfs:subClassOf
to organize the subject hierarchy
Considerations when choosing Approach 3
- The resulting ontology is compatible with RDF Schema and OWL
Lite (and
hence OWL DL). However, note that RDF Schema does not have
transitive
properties, thus we will not be able to express the transitivity of the
parentSubject
property in RDF Schema.
- Most DL reasoners will
be able to infer transitive relations between
subjects, such as the fact that AnimalSubject is a parentSubject
of AfricanLionSubject. However, a DL reasoner will
not be able to infer that a book that has LionSubject as the
value
for dc:subject is also about Animals. More specialized
reasoners
may be able to infer this information.
- The resulting hierarchy of subjects is not related to or
dependent on
the
class hierarchy representing the same topics (in this case, animals),
except
through an annotation property rdfs:seeAlso. Annotation
properties
however, are usually ignored by inference engine.
- Some may consider a approach having two parallel hierarchies of
essentially
the same data to be too complicated and difficult to maintain for the
simple
task at hand
- This approach explicitly separates the subject terminology from
the
corresponding
ontology. Many consider this separation a good modeling practice: the
semantics
of a subject Lion can be different from the semantics of the
class
of lions. Having subjects in a separate hierarchy, would allow us to
define
for example that the subject Africa is a parent subject of
the
subject AfricanLion.
- The separation of the subject terminology from the corresponding
ontology
incurs a serious maintenance penalty: We need to maintain a set of
instances
for all subjects in addition to the hierarchy of subjects. In many
applications,
we may also need to ensure that the two sets—classes representing
subjects
and corresponding individuals and values for the parentSubject
property—are consistent with each other. However, developers can
instrument
tools that would maintain this consistency automatically.
- Defining a range restriction for the dc:subject
property for the class BookAboutAnimals is straightforward.
We
restrict the values of the dc:subject property to the
instances
of the class Subject:
:BookAboutAnimals
a owl:Class ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:someValuesFrom :Subject ;
owl:onProperty dc:subject
] .
OWL code for approach 3
[N3] [RDF/XML]
Summary of approach 3
This approach may be a good one to use if staying within OWL DL is
important.
It also allows you to use a DL reasoner to infer transitive
relationships
between subjects. It does carry the penalty of having two parallel "hierarchies."
Approach 4: using members of a class as values for
the
property
This approach is designed to make it easy to leverage a DL reasoner to
infer, for example, that a book whose subject is Lion is also a book
whose
subject is Animal. In this approach, we create a class such as
BookAboutLions
which [in effect] represents the set of all books whose subject is
Lions.
We assign a subject to a specific book by making the book an instance
of
one of these classes (e.g. LionsLifeInThePrideBook). We create similar
classes for any subject category of books that we are interested in
(e.g.
BookAboutAnimals, BookAboutAfricanLions). There is a correspondence
between
each of these subject-specific classes of books and the class in the
species
hierarchy being used as the subject.
The key to making this work is the manner in which we define the new
book classes. Becuase these classes represent all the books about a
particular
subject, we include subject in the definition as in the following
definition
of BookAboutLions:
:BookAboutLions
a owl:Class ;
owl:equivalentClass
[ a owl:Class ;
owl:intersectionOf ([ a owl:Restriction ;
owl:onProperty dc:subject ;
owl:someValuesFrom :Lion
]
:Book)
] .
A specific instance of this class LionsLifeInThePrideBook
would
then be defined as follows:
:LionsLifeInThePrideBook
a :BookAboutLions ;
rdfs:seeAlso <http://isbn.nu/0736809643> ;
:bookTitle "Lions: Life in the Pride" .
This is how we achieve the effect of saying that subject of the book, LionsLifeInThePrideBook
is lions. What this is saying, literally, is that this book is a
member
of a class, all of whose members have at least one instance of the
class
Lion
as the value for the dc:subject property. In OWL, it is
not necessary to create any explicit instances of these classes. In the
figure, we list them as if the were explicit, and use dotted lines to
denote
that they may not actually exist.
Figure 4. Using members of a class as
values
for properties.
Put another way, this approach is approximating the
interpretation
that we used in the previous approaches by using unspecified members of
a class rather than the class itself as property values (Figure
4). We define the class BookAboutAnimals as a class of
books
where the subject is some (unidentified) animal or animals.
Similarly,
a BookAboutLions class will be a class of books where a
subject
is some (unidentified) lion or lions:
There is a variant to this approach in which we create merge the two
steps into one. Instead of creating an explicit named class,
BookAboutLions,
and then creating an instance of this class, we create the instance and
assign its type to be an anonymous class defined using owl:Restriction.
In this variant, there is no explicit class corresponding to
BookAboutLions.
This variant is illustrated by following alternative definition
of
LionsLifeInThePrideBook.
:LionsLifeInThePrideBook
a :Book;
[ a owl:Restriction ;
owl:onProperty dc:subject ;
owl:someValuesFrom :Lion
];
rdfs:seeAlso <http://isbn.nu/0736809643> ;
:bookTitle "Lions: Life in the Pride" .
A DL classifier will be able to classify LionsLifeInThePrideBook
as an instance of the class BookAboutAnimals.
Considerations when choosing Approach 4
- The resulting ontology is compatible with OWL DL. Since
this
approach
uses restrictions, which do not have any semantics in RDF Schema, we
cannot
use this approach for RDF Schema.
- The interpretation of this pattern is different
from interpretations of the other patterns in this note: the subject of
the book is one or more specific lions—individuals in the Lion
class—rather than the Lion class itself . In this case, a
book
about lions is a book about some lions, even if that happens to
be all lions.
- A Description Logic reasoner will be able to classify
automatically the
individual LionsLifeInThePrideBook that has an instance of a Lion
class as its subject as an instance of the class BookAboutLions.
It will also be able to classify the class BookAboutLions
defined
above as a subclass of the class BookAboutAnimals (defined in
a similar way).
- This approach is likely to be the easiest approach to use if you
would
like to employ DL reasoning to classify books based on their subjects.
- Many would consider it more cumbersome to express a simple fact
that
the
subject of a book is "lions" by creating a new (usually, anonymous)
restriction
class and making that class to be the type of the book.
OWL code for approach 4
[N3] [RDF/XML]
Summary of approach 4
This approach can make the most use of DL classifiers. It represents a
different interpretation of the subject as being a prototypical
instance
of a class rather than a whole class of things or a specific subject
corresponding
to that class. With the understanding that you are using a different
interpretation,
this approach may be a good one to use if using DL reasoners to
classify
individuals based on their subjects (or another property used in its
place)
is important.
Approach 5: using classes as values for annotation
properties
Another way to stay in OWL DL is to use classes as values for annotation
properties (Figure 5). This approach is very
similar
to approach 1, but it treats dc:subject as an annotation
property:
Figure 5. Using classes as values for
annotation
properties.
dc:subject
a owl:AnnotationProperty .
:LionsLifeInThePrideBook
a :Book ;
rdfs:seeAlso <http://isbn.nu/0736809643> ;
:bookTitle "Lions: Life In The Pride" ;
dc:subject :Lion .
Considerations when choosing Approach 5
- In OWL DL, annotation properties cannot at the same time be
defined
either
object properties or datatype properties. Thus, if dc:subject
(or another property you want to use) is defined elsewhere as an object
property or a datatype property, it cannot be used as an annotation
property.
- In OWL DL, annotation properties cannot have any restrictions,
such as
cardinality or domain/range restrictions, or subproperties. Thus, if
you
use this approach, you cannot specify that each book should have at
least
one subject for example or that individuals that are instances of BookAboutAnimals
must all be subclasses of the Animal class.
- Even if the ontology is in OWL DL (i.e., the annotation
properties are
used consistent with OWL DL restrictions), DL reasoners will not use
the
information in annotation properties for reasoning. Thus, in order to
extract
a book about lions when queried for animal books, one would need to use
special-purpose reasoning that uses annotation properties and can
perform
reasoning with them.
OWL code for approach 5
[N3] [RDF/XML]
Summary of approach 5
This approach allows you to use classes directly as property
values while staying in OWL DL. However, the properties that
will
have classes as values will have to be defined as annotations and
therefore
cannot have any additional restrictions defined on them (and should not
be declared as object or datatype properties elsewhere). DL reasoners
will
not use values of annotation properties.
References
[1]http://lists.w3.org/Archives/Public/public-swbp-wg/2004May/0152.html
Changes from the previous version
- Throughout the document, fixed the wording that said that
rdf:type is
the
only property that can have class as its value in OWL DL. Replaced it
with
"In OWL DL and OWL Lite, most properties cannot have classes as their
values.
"
- In Approach 3, second bullet added the following: "However, a DL
reasoner
will not be able to infer that a book that has LionSubject as the value
for dc:subject is also about Animals. More specialized reasoners may be
able to infer this information."
- Removed examples using abstract syntax
- In General issues, removed the following sentence: "Within a
closed
system
that is under the control of a single design authority, this is not a
problem,
since the designer can use the natural pattern if the system is not
restricted
to using Description Logic reasoners, or use a different pattern if
using
Description Logic reasoners is required."
- Noted that approaches 4 and 5 don't make sense in RDF Schema
- Added figure numbers
- Added references
- Changed abstract to reflect better what the document is about
- Minor fixes throughout the document
References
- [N3]
- Primer:
Getting into
RDF and Semantic Web using N3,
http://www.w3.org/2000/10/swap/Primer
.
- [OWL
Overview]
- OWL
Web
Ontology Language Overview, Deborah L. McGuinness and Frank van
Harmelen, Editors, W3C Recommendation, 10 February 2004,
http://www.w3.org/TR/2004/REC-owl-features-20040210/
. Latest version
available
at http://www.w3.org/TR/owl-features/ .
- [OWL Guide]
- OWL
Web
Ontology Language Guide, Michael K. Smith, Chris Welty, and
Deborah
L. McGuinness, Editors, W3C Recommendation, 10 February 2004,
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
. Latest version
available
at http://www.w3.org/TR/owl-guide/ .
- [OWL
Semantics and Abstract Syntax]
- OWL
Web Ontology Language Semantics and Abstract Syntax, Peter F.
Patel-Schneider,
Patrick Hayes, and Ian Horrocks, Editors, W3C Recommendation, 10
February
2004, http://www.w3.org/TR/2004/REC-owl-semantics-20040210/ . Latest
version available at http://www.w3.org/TR/owl-semantics/ .
- [RDF Primer]
- RDF
Primer,
Frank Manola and Eric Miller, Editors, W3C Recommendation, 10 February
2004, http://www.w3.org/TR/2004/REC-rdf-primer-20040210/ . Latest
version available at http://www.w3.org/TR/rdf-primer/ .
- [RDF
Semantics]
- RDF
Semantics,
Pat Hayes, Editor, W3C Recommendation, 10 February 2004,
http://www.w3.org/TR/2004/REC-rdf-mt-20040210/
. Latest version available
at
http://www.w3.org/TR/rdf-mt/ .
- [RDF
Vocabulary]
- RDF
Vocabulary
Description Language 1.0: RDF Schema, Dan Brickley and R. V.
Guha,
Editors, W3C Recommendation, 10 February 2004,
http://www.w3.org/TR/2004/REC-rdf-schema-20040210/
. Latest version
available
at http://www.w3.org/TR/rdf-schema/ .
Acknowledgements
The editor would like to thank the following Working Group members for
their contributions to this document: Aldo Gangemi, Pat Hayes, Aditya
Kalyanpur,
Brian McBride, Alan Rector, Michael Uschold, Bernard Vatant, and Chris
Welty. Atanas Kiryakov, Peter Mika, and York Sure have also contributed
to the document.
This document is a product of the Ontology Engineering and Patterns
Task Force of the Semantic Web Best Practices and Deployment Working
Group.