Representing Classes As Property Values on the Semantic Web

W3C Working Draft 2 March 2005

This version:
Latest version:
Previous versions:
This is the second public version
Natasha Noy, Stanford University, Stanford, US
See Acknowledgements.
Copyright © 2005 W3C® (MITERCIM, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.


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:

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.


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.


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).

Using classes directly as values

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):

      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:
      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:
      a       owl:Class;
      rdfs:subClassOf :Lion .

Considerations when choosing approach 1:

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.

Creating a hierarchy of subjects and a parallel set of subject individuals

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:

      a       :Lion .
In this case, the definition of the LionsLifeInThePrideBook refers to the LionSubject individual
      a       :Book ;
      rdfs:seeAlso <http://isbn.nu/0736809643> ;
      :bookTitle "Lions: Life in the Pride" ;
      dc:subject :LionSubject .

Considerations when choosing approach 2:

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):
      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.

      a       owl:TransitiveProperty , owl:ObjectProperty ;
      rdfs:domain :Subject ;
      rdfs:range :Subject ;
      rdfs:seeAlso <http://www.w3.org/2004/02/skos/core/broader> .

      a       :Subject ;
      rdfs:seeAlso :AfricanLion ;
      :parentSubject :LionSubject .

using a property other than rdfs:subclassOf to organize the subject hierarchy

Figure 3. Using a property other than rdfs:subClassOf to organize the subject hierarchy

Considerations when choosing Approach 3

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:

      a       owl:Class ;
              [ a       owl:Class ;
                owl:intersectionOf ([ a       owl:Restriction ;
                                              owl:onProperty dc:subject ;
                                              owl:someValuesFrom :Lion
              ] .
A specific instance of this class LionsLifeInThePrideBook would then be defined as follows:
      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.

using members of a class as values for the property

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.

      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

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:

Using classes as values for annotation properties

Figure 5. Using classes as values for annotation properties.

      a       owl:AnnotationProperty .
      a       :Book ;
      rdfs:seeAlso <http://isbn.nu/0736809643> ;
      :bookTitle "Lions: Life In The Pride" ;
      dc:subject :Lion  .

Considerations when choosing Approach 5

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.



Changes from the previous version


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/ .


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.

Valid HTML 4.01!Valid CSS!