W3C

OWL Web Ontology Language 1.0 Reference Description

Draft document - no W3C status at this time

This version:
$Id: owl-ref-proposed.html,v 1.11 2002/06/17 16:33:26 mdean Exp $
Latest version:
http://www.daml.org/2002/06/webont/owl-ref-proposed
Authors:
Mike Dean
Dan Connolly (@@ confirm)
Frank van Harmelen (@@ confirm)
James Hendler
Ian Horrocks
Deborah L. McGuinness
Peter F. Patel-Schneider
Lynn Andrea Stein (@@ confirm)

Abstract

OWL is a semantic markup language for publishing and sharing ontologies on the World Wide Web.
@@ details on link to D+O etc.

Status of this document

This Working Draft is the first version of the Ontology Web Language (OWL) 1.0 specification. The Web Ontology Working Group expects to update it to reflect changes in requirements until such time as OWL becomes a W3C Recommendation. The working group has not reached consensus on all issues, and has produced an online issues list that maintains the current status of all issues being considered. Links to associated issues are highlighted.

Comments on this document should be sent to public-webont-comments@w3.org, a mailing list with public archive. General discussion of related technology is welcome in www-rdf-logic.

This is a W3C Working Draft for review by W3C members and other interested parties. It is a draft document and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use W3C Working Drafts as reference materials or to cite them as other than "work in progress." A list of current W3C Recommendations and other technical documents can be found at http://www.w3.org/TR/.

This document has been produced as part of the W3C Semantic Web Activity (Activity Statement) following the procedures set out for the W3C Process. The document has been written by the Web Ontology Working Group. The goals of the Web Ontology working group are discussed in the Web Ontology Working Group charter.

This document is derived from the DAML+OIL (March 2001) Reference Description included in the DAML+OIL submission. The work of the authors, editors, and sponsors of that and predecessor documents is gratefully acknowledged.

Table of contents

  1. Introductory remarks
  2. Language structure
  3. rdf:parseType="owl:collection"

Appendices


1. Introductory remarks

This document gives a systematic, compact and informal description of all the modelling primitives of OWL. We expect this document to serve as a reference guide for users of the OWL language.

An OWL knowledge base is a collection of RDF triples as defined in the RDF Model and Syntax Specification. OWL prescribes a specific meaning for triples that use the OWL vocabulary. This document specifies which collections of RDF triples constitute the OWL vocabulary and what the prescribed meaning of such triples is.

Different syntactic forms

As with any set of RDF triples, OWL triples can be represented in many different syntactic forms (as described in the RDF specification). The current document uses a specific RDF syntactic form for these triples. However, it is also allowed to use any other syntactic RDF form that results in the same underlying set of RDF triples as the syntax used in this document. Such other syntactic form would then carry exactly the same prescribed meaning as the equivalent syntactic form used in this document. See Syntax Note for an example of this.

Mixing OWL with arbitrary RDF

As stated above, OWL assigns a specific meaning to certain RDF triples. The model-theoretic semantics specifies exactly which triples are assigned a specific meaning, and what this meaning is. OWL only provides a semantic interpretation for those parts of an RDF graph that instantiate the schema defined in http://www.w3.org/@@/owl. Any additional RDF statements, resulting in additional RDF triples are perfectly allowed, but OWL is silent on the semantic consequences (or lack thereof) of such additional triples. See Mixing Note for an example of this. The KIF axiomatization provides a meaning for all RDF triples, but non OWL triples are only modelled as triples, nothing deeper.

2. Language structure

An OWL ontology is made up of several components, some of which are optional, and some of which may be repeated. See the index for a listing of all these components. Througout this document, OWL constructs will be presented in a structured format, and not as bare RDF triples. This structured RDF format is more natural to read, but, of course, any way of generating the same RDF triples as generated by the structured RDF format is equivalent.

An OWL ontology consists of zero or more headers, followed by zero or more class elements, property elements, and instances.

Header

An owl:Ontology element contains zero or more version information and imports elements.

<Ontology rdf:about="">
  <versionInfo>$Id: NOTE-OWL-reference-20011218.html,v 1.6 
2001/12/18 22:12:09 connolly Exp $</versionInfo>
  <rdfs:comment>An example ontology</rdfs:comment>
  <imports rdf:resource="http://www.w3.org/@@/owl"/>
</Ontology>

Version information

The owl:versionInfo element generally contains a string giving information about this version, for example RCS/CVS keywords. This element does not contribute to the logical meaning of the ontology. See the example above. See issue #5.14-Ontology-versioning.

Imports

Each owl:imports statement references another OWL ontology containing definitions that apply to the current OWL resource. Each reference consists of a URI specifying from where the ontology is to be imported from. See the example above. Imports statements are transitive, that is, if ontology A imports B, and B imports C, then A imports both B and C. Importing an ontology into itself is considered a null action, so if ontology A imports B and B imports A, then they are considered to be equivalent. See issue #5.6-daml:imports-as-magic-syntax.

Note that namespaces only provide a mechanism for creating unique names for elements, and do not actually include definitions in the way that imports does. Similarly, imports statements do not set up a shorthand notation for names. Therefore, it is common to have imports statements that correspond to each namespace. However, additional imports may be used for ontologies that provide definitions without introducing any new names.

See issue #4.4-Extra-logical-feature-set.

Objects and Datatype Values

OWL divides the universe into two disjoint parts. One part consists of the values that belong to XML Schema datatypes. This part is called the datatype domain. The other part consists of (individual) objects that are considered to be members of classes described within OWL (or RDF). This part is called the object domain. See issue #5.1-Uniform-treatment-of-literal/data-values.

OWL is mostly concerned with the creation of classes that describe (or define) part of the object domain. Such classes are called object classes and are elements of owl:Class, a subclass of rdfs:Class. OWL also allows the use of XML Schema datatypes to describe (or define) part of the datatype domain. These datatypes are used within OWL simply by including their URIs within an OWL ontology. They are (implicitly) elements of owl:Datatype. Datatypes are not OWL individual objects. See issue #5.8-Datatypes.

Class elements

A class element, owl:Class, contains (part of) the definition of an object class. A class element refers to a class name (a URI), (we will refer to this class as C) and contains

Notice that the first two elements state necessary but not sufficient conditions for class membership. The final four elements state both necessary and sufficient conditions.

Class expressions

A class expression is the name used in this document for either

Each class expression either refers to a named class, namely the class that is identified by the URI, or implicitly defines an anonymous class, respectively the class that contains exactly the enumerated elements, or the class of all instances which satisfy the property-restriction, or the class that satisfies the boolean combination of such expressions.

Two class names are already predefined, namely the classes owl:Thing and owl:Nothing. Every object is a member of owl:Thing, and no object is a member owl:Nothing. Consequently, every class is a subclass of owl:Thing and owl:Nothing is a subclass of every class.

Enumerations

An enumeration is a owl:oneOf element, containing a list of the objects that are its instances.
This enables us to define a class by exhaustively enumerating its elements. The class defined by the oneOf element contains exactly the enumerated elements, no more, no less. For example:

<owl:oneOf parseType="owl:collection">
  <owl:Thing rdf:about="#Eurasia"/>
  <owl:Thing rdf:about="#Africa"/>
  <owl:Thing rdf:about="#North_America"/>
  <owl:Thing rdf:about="#South_America "/>
  <owl:Thing rdf:about="#Australia"/>
  <owl:Thing rdf:about="#Antarctica"/>
</oneOf>

Property restrictions

A property restriction is a special kind of class expression. It implicitly defines an anonymous class, namely the class of all objects that satisfy the restriction. There are two kinds of restrictions. The first kind, ObjectRestriction, works on object properties, i.e., properties that relate objects to other objects. The second kind, DatatypeRestriction, works on datatype properties, i.e., properties that relate objects to datatype values. Both kinds of restrictions are created using the same syntax, with the usual difference being whether a class element or a datatype reference is used. It is also possible to create restrictions that are neither restrictions nor datatype restrictions, but these restrictions are not handled within OWL. See issue #5.9-Malformed-DAML+OIL-Restrictions.

A owl:Restriction element contains an owl:onProperty element, which refers to a property name (a URI) (we will refer to this property as P) and one or more of the following

When there are multiple restrictions listed as part of a single Restriction element, the property P has to satisfy all of the restrictions (i.e., multiple restrictions are read as a conjunction).

Notice that the restrictedBy element which was associated with slot-restrictions in earlier versions of the language has now been removed, since it is completely synonymous with subClassOf.

Boolean combination of class expressions

A boolean combination of class expressions can be constructed from:

Note that arbitrarily complex combinations of these expressions can be formed. See Boolean Notefor an example of this.

Property elements

A rdf:Property element refers to a property name (a URI) (to which we will refer as P). Properties that are used in property restrictions should be either properties, which relate objects to other objects, and are instances of ObjectProperty; or datatype properties, which relate objects to datatype values, and are instances of DatatypeProperty.

A property element contains:

Instead of an object property or datatype property element, it is also possible to use any of the following elements, each of which assert additional information about the property:

Notice that UniqueProperty and UnambiguousProperty specify global cardinality restrictions. That is, no matter what class the property is applied to, the cardinality constraints must hold, unlike the various cardinality properties used in property restrictions, which are part of a class element, and are only enforced on the property when applied to that class.
A property is a binary relation that may or may not be defined in the ontology. If it is not defined, then it is assumed to be a binary relation with no globally applicable constraints, i.e. any pair with first element an object and second element an object or datatype value could be an instance of the property.
Warning: If a transitive property (or any of its superproperties) is used in a cardinality constraint, then class consistency is no longer necessarily decidable. Of course, UniqueProperty is a particular case of a cardinality constraint.

Instances

Instances of both classes (i.e., objects) and of properties (i.e., pairs) are written in RDF and RDF Schema syntax.
See the specification of these languages for more details on the various syntactic forms that are allowed. Here we list just some of the most common notations:

<continent rdf:ID="Asia"/>

<rdf:Description rdf:ID="Asia">
  <rdf:type>
   <rdfs:Class rdf:about="#continent"/>
  </rdf:type>
</rdf:Description>

<rdf:Description rdf:ID="India">
  <is_part_of rdf:resource="#Asia"/>
</rdf:Description>

There is no unique name assumption for objects in OWL. To state that objects are the same, an owl:sameIndividualAs element is used. (Note that owl:equivalentTo can be also used here, but owl:sameIndividual is preferred. To state that objects are distinct, an owl:differentIndividualFrom element is used. The situation is different for datatype values, where XML Schema Datatype identity is used.

Datatype Values

Datatype values are written in a manner that is valid RDF syntax, but which is given a special semantics in OWL. The preferred method is to give a lexical representation of the value as a string, along with an XML Schema datatype that is used to provide the type of the value as well as the parsing mechanism to go from the string to the value itself. The XML Schema datatype is the rdf:type of the value, and the lexical representation is the rdf:value of the value. So the decimal 10.5 could be input as <xsd:decimal rdf:value="10.5"> provided that xsd was defined as the URI of the XML Schema Datatype specification.

As a nod to backward compatability, literals that occur outside this sort of construction are interpreted as any of the XML Schema Datatype values with this lexical representation. These values are mostly unusable unless some typing information is available, such as a range for a property.

The question of whether any XML Schema datatype can be used in such constructions, or whether only certain XML Schema dataypes can be so used (such as only the predefined datatypes), remains open. See issue #4.3-Structured-Datatypes. See issue #5.7-Range-restrictions-should-not-be-separate-URIs.

3. rdf:parseType="owl:collection"

OWL needs to represent unordered collections of items (also known as bags, or multisets) in a number of constructions, such as intersectionOf, unionOf, oneOf, and disjointUnionOf. OWL exploits the rdf:parseType attribute to extend the syntax for RDF with a convenient notation for such collections. Whenever an element has the rdf:parseType attribute with value "owl:collection", the enclosed elements must be interpreted as elements in a list structure, constructed using the elements List, first, rest and nil. See issue #5.5-List-syntax-or-semantics.

For example, the statement

<oneOf rdf:parseType="owl:collection">
  <Thing rdf:about="#red"/>
  <Thing rdf:about="#white"/>
  <Thing rdf:about="#blue"/>
</oneOf>

should be interpreted as the following construction (also known as a consed-pair construction, from Lisp-lore):

<List>
 <first>
  <Thing rdf:about="#red">
 </first>
 <rest>
  <List>
   <first>
    <Thing rdf:about="#white">
   </first>
   <rest>
    <List>
     <first>
      <Thing rdf:about="#blue">
     </first>
     <rest>
      <List rdf:resource="http://www.w3.org/@@/owl#nil">
     </rest>
    </List>
   </rest>
  </List>
 </rest>
</List>

Current RDF parsers (RDF specification of February '99) will not support the owl:collection parseType. In order to process OWL documents, such parsers will have to be extended, or a separate preprocessing stage is required which translates the first form above into the second before the DAM+OIL code is given as input to the RDF parser.

Note that structures of parseType owl:collection are intended to represent unordered collections, even though the RDF datastructure imposes a specific order on the elements.

Appendix A. Index of all language elements

Appendix B. Notes

Syntax Note:
As a simple example of an alternative syntactic form resulting in the same set of RDF triples, consider the statement in this document that "an OWL class definition consists at least of an rdfs:class element", which suggests the following syntactic form:
<rdfs:Class rdf:ID="Continents"/> 

However, the following RDF statement:

<rdf:Description rdf:ID="Continents">
  <rdf:Type resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
</rdf:Description> 


results in exactly the same set of RDF triples, and is therefore perfectly allowed as a class definition.

Another example is the two notations that we discuss for cardinality constraints below. Again, both these forms result in the same set of RDF triples, and are thus equivalent.

Mixing Note:
For example, take the class definition for Person from OWL-ex.owl, and then add
<rdf:Description rdf:about="#Person">
     <Creator>Ora Lassila</Creator>
</rdf:Description>


then the semantics don't say what this means or what it would imply for instances of Person. (Beyond of course the minimal Subject-Verb-Object semantics of RDF).

Cardinality Syntax Note:
As an example of content-hiding syntax for cardinality expressions, instead of the standard notation:
<Restriction>
  <onProperty rdf:resource="#father"/>
  <cardinality>1</cardinality>
</Restriction>

we would have to write

<Restriction cardinality="1">
  <onProperty rdf:resource="#father"/>
</Restriction> 

to avoid any exposed content. The cardinality elements are the only ones for which this alternative notation is required to avoid exposed content. (See the section on abbreviated syntax in the RDF specification for more details on this notation).

Boolean Note:
As an example of a combination of boolean operators, the expression "neither meat nor fish" could be written as:
<complementOf>
 <Class>
  <unionOf parseType="owl:collection">
   <Class rdf:resource="#meat"/>
   <Class rdf:resource="#fish"/>
  </unionOf>
 </Class>
</complementOf>

Appendix C. http://www.w3.org/@@/owl

@@ include content from http://www.w3.org/@@/owl.

References

  1. @@