DAML+OIL reference description (original) (raw)
Reference description of the
DAML+OIL ontology markup language
Frank van Harmelen, Ian Horrocks (editors)
Contributors: Tim Berners-Lee, Dan Brickley, Dan Connolly, Mike Dean, Stefan Decker, Pat Hayes, Jeff Heflin, Jim Hendler, Deb McGuinness, Lynn Andrea Stein
Abstract
DAML+OIL is a semantic markup language for Web resources. It builds on earlier W3C standards such as RDF and RDF Schema, and extends these languages with richer modelling primitives. DAML+OIL provides modelling primitives commonly found in frame-based languages. The language has a clean and well defined semantics based on description logics.
This document gives a systematic, compact and informal description of all the modelling primitives of DAML+OIL. We expect this document to serve as a reference guide for users of the DAML+OIL language.
- Readers unfamiliar with DAML+OIL should first consult the DAML+OIL walkthrough for a more narrative description of an example use of the language.
- The normative reference on the precise syntax of the language constructs is the machine readable RDF Schema definition of DAML+OIL.
- Two references that give a precise definition of the meaning of the language constructs are the model-theoretic semantics and the axiomatic semantics.
Contents
- Introductory remarks
- Header
- Version information
- Imports
- Class element
- Class expression
- Enumeration
- Property restriction
- Boolean combination of class expressions
- Property element
- Axiom
- Instance
- rdf:parseType="daml:collection"
- Index of all language elements
- Notes
Introductory remarks
A DAML+OIL knowledge base is a collection of RDF triples. DAML+OIL prescribes a specific meaning for triples that use the DAML+OIL vocabulary. This document informally specifies which collections of RDF triples constitute the DAML+OIL vocabulary and what the prescribed meaning of such triples is.
Different syntactic forms
As with any set of RDF triples, DAML+OIL triples can be represented in many different syntactic forms (as described in the [RDF specification)](http://www.w3 .org/1999/02/22-rdf-syntax-ns). 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 DAML+OIL with arbitrary RDF
As stated above, DAML+OIL 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. DAML+OIL only provides a semantic interpretation for those parts of an RDF graph that instantiate the schema defined in <daml+oil.daml>. Any additional RDF statements, resulting in additional RDF triples are perfectly allowed, but DAML+OIL is silent on the semantic consequences (or lack thereof) of such additional triples. See Mixing Note for an example of this.
Language structure
A DAML+OIL ontology is made up of several components, some of which are optional, and some of which may be repeated. See the index for a listig of all these elements.
A DAML+OIL ontology consists of zero or more headers, followed by zero or more class elements, property elements, axioms and instances.
Header
An Ontology
element contains zero or more version information and imports elements.
Version information
TheversionInfo
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.
Imports
Each imports
statement references another DAML+OIL ontology containing definitions that apply to the current DAML+OIL 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.
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.
Class element
A Class
element refers to a class name (a URI), (we will refer to this class as C) and contains
- zero or more
subClassOf
elements (each containing a class-expression).
Each subClassOf element asserts that C is a subclass of the class-expression mentioned in the element. (Each class-expression defines a (possibly anonymous) class).
Warning: The RDF Schema specification demands that the subclass-relation between classes must be acyclic. We believe this to be too restrictive, since a cycle of subclass relationships provides a useful way to assert equality between classes. Consequently, DAML+OIL places no such restriction on the subClassOf relationship between classes; - zero or more
disjointWith
elements (each containing a class-expression).
Each disjointWith element asserts that C is disjoint with the class-expression in the element (ie. C must have no instances in common with it); - zero or more
disjointUnionOf
elements (each containing a list of class-expressions).
Each disjointUnionOf element asserts that C has the same instances as the disjoint union of the class-expressions element. More precisely: all of the classes defined by the class-expressions of a disjointUnionOf element must be pairwise disjoint (i.e. there can be no individual that is an instance of more than one of the class expressions in the list.), and their union must be equal to C; - zero or more
sameClassAs
elements (each containing a class-expression).
Each sameClassAs element asserts that C is equivalent to the class-expression in the element (ie. C and all the class-expression must have the same instances); - zero or more
equivalentTo
elements (each containing a class expression)
When applied to a class, the equivalentTo element has the same semantics as the sameClassAs element.
Warning: the use of sameClassAs is favoured over the use of equivalentTo, since sameClassAs is declared as a subProperty of subClassOf, while equivalentTo is not. This makes the meaning of sameClassAs at least partly available to an RDF Schema-only agent, while the meaning of equivalentTo is completely opaque to such an agent. - zero or more boolean combinations of class expressions.
The class C must be equivalent to the class defined by each of the boolean class expression,
and - zero or more enumeration elements.
Each enumeration element asserts that C contains exactly the instances enumerated in the element (i.e: no more, no less). Although it is formally allowed to have multiple such assertions about C, as soon as two of the enumerations are not equivalent, the class C immediately becomes inconsistent (since C cannot be equivalent to both of these enumerations at once).
Notice that the first three elements state necessary but not sufficient conditions for class membership. The final five elements state both necessary and sufficient conditions.
Class expression
A class expression is the name used in this document for either
- a class name (a URI), or
- an enumeration, enclosed in
<rdfs:Class>...</rdfs:Class>
tags, or - a property-restriction, or
- or a boolean combination of class expressions, enclosed in
<rdfs:Class>...</rdfs:Class>
tags
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 Thing
and Nothing
. Every instance is a member of Thing
, and no instance is a memberNothing
. Consequently, every class is a subclass ofThing
and Nothing
is a subclass of every class.
Note: Future versions of DAML+OIL are expected to provide support for "concrete domains" such as integers, strings, etc. No such concrete domains are provided in the current version.
Enumeration
An enumeration is aoneOf
element, containing a list of 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:
Property restriction
A property restriction is a special kind of class expression. It implicitly defines an anonymous class, namely the class of all instances that satisfy the restriction.
A Restriction
element contains anonProperty
element, which refers to a property name (a URI) (we will refer to this property as P) and one or more of the following
- elements indicating the type of restriction:
- a
toClass
element (which contains a class expression).
A toClass element defines the class of all instances for whom the values of property P all belong to the class expression. In other words, it defines the class of instances x for which it holds that if the pair (x,y) is an instance of P, then y is an instance of the class-expression; - a
hasValue
element (which contains (a reference to) an instance).
A hasValue element defines the class of all instances for whom the property P has at least one value equal to the named instance (and perhaps other values as well). In other words, if we call the instance y, then it defines the class of instances x for which (x,y) is an instance of P; - A
hasClass
element (which contains a class expression).
A hasClass element defines the class of all instances for which at least one value of the property P is a member of the class expression. In other words, it defines the class of instances x for which there is at least one instance y of the class-expression such that (x,y) is an instance of P. This does not exclude that there are other instances (x,y') of P for which y' does not belong to the class expression.
Notice that a toClass restriction is analogous to the universal (for-all) quantifier of Predicate logic: for each instance of the class that is being defined, every value for P must fulfill the restriction. The hasClass restriction is analogous to the existential quantifier of Predicate logic: for each instance of the class that is being defined, there exists at least one value for P that fulfils the restriction.
Also notice that the correspondence of toClass with the universal quantifier means that a toClass restriction for a property P is trivially satisfied for an instance that has no value for property P at all. After all, the toClass restriction demands that all values of P belong to class P, and if no such values exist, the restriction is trivially true.
- a
- elements containing a non-negative integer (to which we will refer as N) indicating an unqualified cardinality restriction:
- a
cardinality
element.
This defines the class of all instances that have exactly N distinct values for the property P, i.e. x is an instance of the defined class if and only if there are N distinct values y such that (x,y) is an instance of P; - a
maxCardinality
element.
This defines the class of all instances that have at most N distinct values for the property P; - a
minCardinality
element.
This defines the class of all instances that have at least N distinct values for the property P.
- a
- elements containing a non-negative integer (to which we will refer as N)indicating a qualified cardinality restriction, and containing a
hasClassQ
element, containing a class expression:- a
cardinalityQ
element.
This defines the class of all instances that have exactly N distinct values for the property P that are instances of the class expression (and possibly other values not belonging to the class expression). In other words: x is an instance of the defined class (x satisfies the restriction) if and only if there are exactly N distinct values y such that (x,y) is an instance of P and y is an instance of the class expression; - a
maxCardinalityQ
element.
This defines the class of all instances that have at most N distinct values for the property P that are instances of the class expression (and possibly other values not belonging to the class expression); - a
minCardinalityQ
element.
This defines the class of all instances that have at least N distinct values for the property P that are instances of the class expression (and possibly other values not belonging to the class expression).
Of course a cardinality constraint is simply shorthand for a pair of minCardinality and maxCardinality constraints with equal values of N (and similarly for cardinalityQ).
Warning: in order to avoid "exposed content" (i.e., to hide DAML+OIL annotations from browsers), it is necessary to write cardinality constraints in an alternative RDF format. See Cardinality Syntax Notefor an example of this.
- a
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:
- an
intersectionOf
element, containing a list of class expressions.
This defines the class that consists of exactly all the instances that are common to all class expressions from the list. It is analogous to logical conjunction; - a
unionOf element
, containing a list of class expressions.
This defines the class that consists exactly of all the instances that belong to at least one of the class expressions from the list. It is analogous to logical disjunction; - a
complementOf
element, containing a single class expression.
This defines the class that consists of exactly all instances that do not belong to the class expression. It is analogous to logical negation.
Note that arbitrarily complex combinations of these expressions can be formed.See Boolean Notefor an example of this.
Property element
A Property
element refers to a property name (a URI) (to which we will refer as P), and contains:
- zero or more
subPropertyOf
elements, each containing a property name.
Each subPropertyOf element states that P is a subproperty of the property named in the element. This means that every pair (x,y) that is an instance of P is also an instance of the named property; - zero or more
domain
elements (each containing a class expression).
Each domain element asserts that the property P only applies to instances of the class expression of the element. More formally: if a pair (x,y) is an instance of P, then x is an instance of the class expression. This implies that multiple domain expressions restrict the domain of P to the intersection of the class expressions.
Warning: This is contrary to the semantics of the domain element in the RDF Schema specification, which we believe to be flawed. Note that unlike any of the property restrictions mentioned above, these domain restrictions are global. The property restrictions above are part of a class element, and are only enforced on the property when applied to that class. In contrast, domain restrictions apply to the property irrespective of the Class to which it is applied. This is by virtue of their semantics in RDF Schema;
Because of this, the use of domain elements in DAML+OIL is deprecated. - zero or more
range
elements (each containing a class expression).
Each range element asserts that the property P only assumes values that are instances of the class expression of the element. More formally: a pair (x,y) can only be an instance of P if y is an instance of the class expression.
Warning: Although the RDF Schema specification only allows one range restriction for each property, it seems quite natural to allow multiple range restrictions. These would then again be interpreted as saying that the range of P must be the intersection of all the class expressions. Furthermore, as with domain restrictions, range restrictions are global, by virtue of RDF Schema;
Because of this, the use of range elements in DAML+OIL is deprecated. - zero or more
samePropertyAs
elements (each containing a property name).
Each samePropertyAs element asserts that P is equivalent to the named property (i.e. they must have the same instances), - zero or more
equivalentTo
elements (each containing a property name).
When applied to a property, the equivalentTo element has the same semantics as the samePropertyAs element;
Warning: the use of samePropertyAs is favoured over the use of equivalentTo, since samePropertyAs is declared as a subProperty of subPropertyOf, while equivalentTo is not. This makes the meaning of samePropertyAs at least partly available to an RDF Schema-only agent, while the meaning of equivalentTo is completely opaque to such an agent.
and - zero or more
inverseOf
elements (each containing a property name).
Each inverseOf element asserts that P is the inverse relation of the named property. More formally: if the pair (x,y) is an instance of P, than the pair (y,x) is an instance of the named property.
Instead of a Property
element, it is also possible to use any of the following elements, each of which assert additional information about the property:
- a
TransitiveProperty
element.
This asserts that P is transitive, i.e: if the pair (x,y) is an instance of P, and the pair (y,z) is an instance of P, then the pair (x,z) is also an instance of P; - a
UniqueProperty
element.
This asserts that P can only have one (unique) value y for each instance x, i.e: there cannot be two distinct instances y1 and y2 such that the pairs (x,y1) and (x,y2) are both instances of P. Of course, this is a shorthand notation for the maxcardinality restriction of 1,
or - an
UnambigousProperty
element.
This asserts that an instance y can only be the value of P for a single instance x, i.e: there cannot be two distinct instances x1 and x2 such that both (x1,y) and (x2,y) are both instances of P. Notice that the inverse property of a UniqueProperty is always an UnambigousProperty and vice versa.
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 of individuals 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 decidable. Of course, UniqueProperty is a a particular case of a cardinality constraint.
Axiom
A Disjoint
element contains a list of class-expressions.
A Disjoint element asserts that all of (the classes defined by) these class expressions are pairwise disjoint. In other words: no pair of two class-expressions from the list have any instances in common.
When all the class-expressions in the list are class names, then a Disjoint assertion could have been made with a number of disjointWith elements for each of the individual classes, and the Disjoint assertion is only a convenient shorthand in this case. However, the Disjoint element also allows us to make disjointness statements about arbitrarily complex class-expressions. See Disjoint Notefor an example of this.
Of course, all of the other elements described above are axioms that assert facts about the classes, properties and instances of an ontology. All of the axioms described so far are associated with either a Class element or a Property element (or any of the variants of the Property element). The disjoint axiom is the only axiom in DAML+OIL that is not associated with either aClass element or (a variant of) a Propertyelement.
Instance
Instances of both classes (i.e. individuals) and of properties (i.e. relations, pairs of individuals) 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:
<rdf:Description rdf:ID="Asia"> rdf:type <rdfs:Class rdf:about="#continent"/>
<rdf:Description rdf:ID="India">
rdf:parseType="daml:collection"
DAML+OIL needs to represent unordered collections of items (also known as bags, or multisets) in a number of constructions, such as intersectionOf, unionOf, oneOf, disjointUnionOf and Disjoint. DAML+OIL 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 "daml:collection", the enclosed elements must be interpreted as elements in a list structure, constructed using the elements List, first, rest and nil.
For example, the statement
should be interpreted as the following construction (also known as a consed-pair construction, from Lisp-lore):
Current RDF parsers (RDF specification of February '99) will not support the daml:collection parseType. In order to process DAML+OIL 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 daml:collection are intended to represent unordered collections, even though the RDF datastructure imposes a specific order on the elements.
Appendix: Index of all language elements
- cardinality
- cardinalityQ
- Class
- complementOf
- Disjoint
- disjointUnionOf
- disjointWith
- domain
- equivalentTo
- hasClass
- hasClassQ
- hasValue
- imports
- intersectionOf
- inverseOf
- maxCardinality
- maxCardinalityQ
- minCardinality
- minCardinalityQ
- oneOf
- onProperty
- Ontology
- Property
- range
- Restriction
- sameClassAs
- samePropertyAs
- subClassOf
- subPropertyOf
- toClass
- TransitiveProperty
- UnambigousProperty
- unionOf
- UniqueProperty
- versionInfo
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 "a DAML+OIL class definition consists at least of an rdfs:class element", which suggests the following syntactic form:
<rdfs:Class ID="Continents"/>
However, the following RDF statement:
<rdf:Description ID="Continents"> <rdf:Type resource="" title="undefined" rel="noopener noreferrer">http://www.w3.org/2000/01/rdf-schema#Class"/>
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 <daml+oil-ex.daml>, and then add
<rdf:Description about="#Person"> Ora Lassila
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:
1we would have to write
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 syntaxin 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:
Disjoint Note:
For example, the following combination a Disjoint element with class expressions to state that "meat or fish" is disjoint from "plants or parts of plants".
Revision:1.6Revision: 1.6 Revision:1.6 of Date:2001/01/1220:40:47Date: 2001/01/12 20:40:47 Date:2001/01/1220:40:47