Copyright © 20072008 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
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 is being published as one of a set of 36 documents:
The OWL Working Group seeks public feedback on these Working Drafts. Please send your comments to public-owl-comments@w3.org (public archive). If possible, please offer specific changes to the text that would address your concern.
Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
In this document defines the structure ofspecification, OWL 1.1ontologies are defined in ways intended to be, on the one hand, largely independant of the concrete exchange syntaxes, and yet, on the constructs that are used within them. It provides two different methodsother, sufficient for this, a functional-style syntax for OWL 1.1 ontologies and a structuralthe clear specification of those syntaxes. There are several reasons for this stemming from the content of OWL 1.1 ontologies.fact that some exchange syntaxes (e.g., the canonical RDF/XML) make it difficult to relate OWL 1.1 functional-style syntax is a new linear syntax for OWL 1.1. The functional-style syntax abstracts from exchange syntaxes and thus facilitates accessto and evaluation of the language. The functional-style syntax is suggested for use as an easier-to-read syntax for communication with humans. The functional-style syntax is alsothe basis for the model theory for OWL 1.1.canonical underlying formalisms (i.e., description logics or first order logic). Defining the functional-style syntax is not quite a complete concrete syntax as it currently ignores issuessemantics directly in terms of white space. The functional-style syntax is similarsuch syntaxes would make it much more difficult to theunderstand OWL 1.0 Abstract Syntax; it is, however, not backwards compatible withby making the OWL 1.0 Abstract Syntax, because of several problems withlarge literature available on the OWL 1.0 Abstract Syntax that wouldunderlying formalisms more inaccessible. Similarly, in order to assure decidability (or, in some fragments, polynomial decidability), certain "non-structural" restrictions on axioms need to be imposed. It is very difficult to overcome without sacrificing backwards compatibility. The structural specification of the contents of OWL 1.1 ontologies is provided asclearly and correctly impose these directly on triple structures. Finally, a non-normative waynumber of storingOWL 1.1 ontologies intools, particularly tools that generateAPIs, and modify OWL 1.1 ontologies. Inconcrete syntaxes work at a non-triple level. Given the structural specification an ontology is consideredneed to be a collection of interconnected objects. Moreover, sinceclearly map OWL into terms that make sense for these cases, and the structuredifficulty of several specification tasks when approached from the RDF perspective, OWL 1.1 objects (ontologies, axioms, etc.)is defined using well-understood notionsfirst in terms of composition, sets, and lists, thenon-triple structural specification provides a meansform.
In order to explicitly specify when two objects are structurally equivalent. 2 Basic Definitions Editor's Note: See Issue-4 (syntax reordering) and Issue-82 (Metamodel diagrams).determine the UML notation usedparticular concrete syntax for some bit of OWL, one should consult the corresponding mapping tables in this documentthe corresponding documents. The primary structural specification is restricted to a very limited subsetin terms of UML class diagram notation. The namesdiagrams given in this document, with a canonical functional syntax which instantiates the UML.
Editor's Note: Are we going to make this true: "For reader convenience, you may choose to hide the diagrams, or the grammar, or both."
Conceptually, OWL ontologies can be broken down into the following categories of parts:
These three categories form the logical part of OWL ontologies. Additionally, entities, axioms, and ontologies may be annotated. Annotations have no effect on the logical aspects of an ontology, though they may be significant to tools or critical for applications. In many cases, the point of the logical portion of an ontology is to support the exploitation of the annotation part. The significance of annotations on tools or applications is not defined by the OWL specifications.
Finally, there is one non-logical construct with a pre-defined meaning, owl:imports, which allows distinct ontologies to be combined.
In concrete syntaxes, there may be additional syntactic features such as mechanisms for abbreviating URIs.
Editor's Note: See Issue-4 (syntax reordering) and Issue-82 (Metamodel diagrams).
The UML notation used in this document is restricted to a very limited subset of UML class diagram notation. The names of abstract classes (that is, the classes that are not intended to be instantiated) are written in italic.
The grammar of OWL 1.1 is presented in the standard BNF notation. Nonterminal symbols are written in bold (e.g., owlClassURI), terminal symbols are written in single quotes (e.g. 'ObjectPropertyRange'), zero or more instances of a symbol is denoted with curly braces (e.g., { description }), alternative productions are denoted with the vertical bar (e.g., fact | declaration), and zero or one instances of a symbol are denoted with square brackets (e.g., [ description ]).
Many associations between components of OWL 1.1 ontologies are of one-to-many type; for example, an ObjectUnionOf description contains a set of disjuncts. Usually, it is important to know whether the components in the association are ordered and whether repetitions are allowed. This is made clear by attaching the following UML stereotypes to associations between components:
To make this definition precise, it is necessary to say when two ontology components are considered to be the same. This is captured by the notion of structural equivalence, defined as follows. Components o1 and o2 are structurally equivalent if the following conditions hold:
For example, the description ObjectUnionOf( Person Animal ) is structurally equivalent to description ObjectUnionOf( Animal Person ) because the order of the elements in a set is not important. Note that structural equivalence is not a semantic notion, as it is based only on comparing object structures defined in this document. For example, ObjectUnionOf( Person ObjectComplementOf( Person ) ) is not structurally equivalent to owl:Thing even though it is semantically equivalent to it.
Although the <<set>> stereotype is widely used in the specification, ontology files written in one of the linear syntaxes (e.g., XML or RDF/XML) are not expected to be duplicate free. Defining the structure of the language using sets, however, facilitates the specification of APIs for manipulating OWL 1.1 ontologies programmatically; furthermore, it provides the basis for the definition of complex operations on OWL 1.1 ontologies, such as retraction of axioms.
Ontologies and their elements are identified using International Resource Identifiers (IRIs) [RFC-3987]. OWL 1.0 uses Uniform Resource Locators (URIs) to identify objects. We use the term 'URI' in OWL 1.1 as well, to avoid introducing new terminology.
For readability, IRIs can be abbreviated using CURIEs [CURIE], whose syntax is compatibly defined as follows.
curie:= [ [ prefix ] ':' ] reference
prefix:= NCName
reference:= irelative-ref
irelative-ref:= as defined in [RFC-3987]
NCName:= as defined in [XML Namespaces]
The syntax of full and abbreviated IRIs in OWL 1.1 is defined as follows.
Full-IRI:= '<' IRI as defined in [RFC-3987] '>'
Abbreviated-IRI:= curie
URI:= Full-IRI | Abbreviated-IRI
Abbreviated IRIs are turned into full IRIs by looking up the value matched to the prefix production in the namespace definitions associated with an ontology and concatenting the associated Full-IRI value with the value matched to reference in the Abbreviated-IRI production. The result must be a valid IRI. Abbreviated IRIs with no prefix are handled by the namespace definition with no prefix.
Some grammar productions use numbers, which are defined as follows:
zero:= '0'
nonZero := '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
digit:= zero | nonZero
postiveInteger:= nonzero { digit }
nonNegativeInteger:= zero | positiveInteger
Editor's Note: The actual namespaces used in the specification are subject to discussion and might change in future.
The following standard namespace prefixes are used throughout this specification:
Namespace prefix | Namespace |
---|---|
rdf | http://www.w3.org/1999/02/22-rdf-syntax-ns# |
rdfs | http://www.w3.org/2000/01/rdf-schema# |
xsd | http://www.w3.org/2001/XMLSchema# |
owl | http://www.w3.org/2002/07/owl# |
owl11 | http://www.w3.org/2006/12/owl11# |
owl11xml | http://www.w3.org/2006/12/owl11-xml# |
Editor's Note: See Issue-15 (ontology names),Issue-21 (import-target-match) and Issue-24 (1-version-allowed-policy).
Ontologies are the basic structure of OWL 1.1 ontologies is shownin Figure 1. Each ontology is uniquely identified with an ontology URI.OWL. They primarily consist of a set of assertions about the world and may include assertions from other, imported, ontologies.
Figure 1. OWL Ontologies
The syntax for OWL 1.1 ontology files is defined as follows:
ontologyFile:= { namespace } ontology
namespace:= 'Namespace' '(' [ prefix ] '=' Full-IRI ')'
ontology:= 'Ontology' '(' [ ontologyURI ] { import } { annotation } { axiom } ')'
ontologyURI:= URI
import:= 'Import' '(' URI ')'
axiom:= classAxiom | objectPropertyAxiom | dataPropertyAxiom | fact | declaration | entityAnnotation
The namespace production defines an abbreviation for namespaces in a document. In each document, only one namespace declaration can exist for a given prefix. These prefixes are then used to expand abbreviated IRIs as specified in Section 2.2.
Each ontology can have an ontology URI. If present, this URI must be unique, and it need not be equal to the physical location of the ontology file. For example, a file for an ontology with a URI http://www.my.domain.com/example need not be physically stored in that location. A specification of a mechanism for physically locating an ontology from its ontology URI is not in scope of this specification.
The main component of an OWL 1.1 ontology is the set of axioms that it contains. Note that this definition does not allow repetitions of structurally equivalent axioms in an ontology. OWL 1.1 ontology files are, however, not expected to enforce this and tools can simply eliminate duplicates.
Apart from a set of axioms, an OWL 1.1 ontology contains a set of annotations.annotations. These annotations can be used to associate information with an ontology, such as the name of the ontology creator or the version of the ontology. An annotation consists of an annotation URI that specifies the type of annotation and a value for the annotation. OWL 1.1 allows for two kinds of annotation values: Annotation values can be constants. Note that these need not be just strings; rather, anyOWL 1.1 constant can be used. For example, one can create an annotation whose value is a URI formatted according to the XML Schema xsd:anyURI type specification. Annotation values can beprovides several well-known ontology entities. Such annotations make it clearer that the value is not just some constant, but an entity from this or some other ontology.annotations, as specified in Section 9.3.
In OWL 1.0, owl:imports was a special annotation URI, which denotes that an ontology imports another ontology. In OWL 1.1, imports are not ontology annotations, but are a separate primitive, as discussed next; the owl:imports annotation property has no built-in meaning.
Each ontology contains a possibly empty set of import constructs. An ontology O directly imports an ontology O' if O contains an import construct whose value is the ontology URI of O'. The relation imports is defined as a transitive closure of the relation directly imports. The axiom closure of an ontology O is the smallest set containing all the axioms of O and of all ontologies that O imports. Intuitively, an import construct states that, when reasoning with an ontology O, one should consider not only the axioms of O, but the entire axiom closure of O.
Ontology(http://example.org/ontology1 Import(http://example.org/ontology2) Label("The example") SubClassOf(Human Animal) )
This information does not affect the semantics ofexample ontology has a URI (given on the language in any way. For example, axiom annotations could be used to associate informationfirst line), one imports statement, an ontology annotation which associates a label with each axiom about who assertedthe ontology, and a single (subclass) axiom.
Entities are to be taken into account inthe definition of structural equivalencefundamental building blocks of axioms. For example,OWL 1.1 ontologies. The axiom SubClassOf( Human Animal )description of entities (e.g., classes, properties, and individuals) and their relations is not structurally equivalent tothe axiom SubClassOf( Comment("Humans arecanonical purpose of an ontology.
NOTE: For readers with atypelogic background, entities are the elements ofanimals.")HumanAnimal)eventhoughthesemanticssignature of an OWL ontology.
Figure 2. The two axioms are equivalent. Annotations withHierarchy of Entities in OWL 1.1
All entities may have an associated URI. The commonsyntax for writing entity URIs rdfs:label and rdfs:comment are abbreviatedin OWL 1.1 is as follows:
labelAnnotationdatatypeURI:= 'Label' '(' constant ')' commentAnnotationURI
owlClassURI:= 'Comment' '(' constant ')' All other annotationsURI
objectPropertyURI:= URI
dataPropertyURI:= URI
annotationPropertyURI:= URI
individualURI:= URI
Entities are written usingin the following grammar: annotationURIway:
entity:= URI explicitAnnotationByConstantdatatype | owlClass | objectProperty | dataProperty | annotationProperty | individual
datatype:= 'Annotation''Datatype' '(' annotationURI constantdatatypeURI ')'
annotationByConstantowlClass:= explicitAnnotationByConstant | labelAnnotation | commentAnnotation annotationByEntity'OWLClass' '(' owlClassURI ')'
objectProperty:= 'Annotation''ObjectProperty' '(' annotationURI entityobjectPropertyURI ')'
annotationdataProperty:= annotationByConstant | annotationByEntity The syntax for OWL 1.1 ontology files is defined as follows: ontologyFile := { namespace } ontology namespace := 'Namespace''DataProperty' '(' [ prefix ] '=' Full-IRIdataPropertyURI ')'
ontologyannotationProperty:= 'Ontology''AnnotationProperty' '(' ontologyURI { import } { annotation } { axiom }annotationPropertyURI ')'
ontologyURI := URI importindividual:= 'Import''Individual' '(' URIindividualURI ')'
axiom := classAxiom | objectPropertyAxiom | dataPropertyAxiom | fact | declaration | entityAnnotationOWL 1.1 uses constants to describe atomic values, such as strings or integers. The namespace production defines an abbreviation for namespacesquoting mechanism in strings is a document. In each document, onlysubset of the one namespace declaration can exist for a given prefix . These prefixes are thenused to expand abbreviated IRIs as specifiedin Section 2.2 . 4 The Concept Language We now defineN-triples [RDF Test Cases].
string:= '"' a Unicode string in normal form C with double quotes and backslashes replaced by the conceptdouble quote or backslash preceeded by a backslash '"'
languageTag:= a language tag as specified in [RFC-4646]
untypedConstant:= string [ '@' languageTag ]
typedConstant:= string '^^' datatypeURI
constant:= typedConstant | untypedConstant
Note that entities, like expressions, only appear in an ontology as part of an axiom or annotation. It is not unreasonable to think of OWL 1.1. 4.1entities as atomic expressions.
Just like ontologies, entities arecan also have annotations associated with them. The fundamental building blocks of OWL 1.1 ontologies, and their hierarchymechanism for annotating entities is showndescribed in Figure 2. Figure 2. The Hierarchy of Entitiesmore detail in Section 9.2.
OWL 1.1 Alldefines several well-known entities are defined by a URI.that have the syntax for writing entity URIs in OWL 1.1 is as follows: datatypeURI := URI owlClassURI := URI objectPropertyURI := URI dataPropertyURI := URI individualURI := URIpredefined semantics. These entities are written in the following way: entity := datatype | owlClass | objectProperty | dataProperty | individual datatype := 'Datatype' '(' datatypeURI ')' owlClass := 'OWLClass' '(' owlClassURI ')' objectProperty := 'ObjectProperty' '(' objectPropertyURI ')' dataProperty := 'DataProperty' '(' dataPropertyURI ')' individual := 'Individual' '(' individualURI ')' OWL 1.1 defines several well-known entities that have the predefined semantics. These entities are identified byidentified by the following predefined URIs:
Editor's Note: See Issue-13 (quotation).Issue-65 (excess vocab).
OWL 1.1 uses constantsprovides an expressive language for forming class expressions.Readers familiar with model theory may which to describe atomic values, such as strings or integers. These are encoded as inconsult the Turtle specification[ TURTLE ]. constant := the same as the literal productionSemantics Document.
Editor's Note: Would like to have more class expression specific stuff, similar to what's in the Turtle specification [ TURTLE ] 4.2 Object and Data Propertyfirst sentence of the next section. BJP
Class expressions Object propertiescan be combined into more complex expressions,thought of as showdescriptions of sets of individuals, or as descriptions which are true (or false) of particular individuals. These descriptions can be combined in Figure 3.ways that produce set theoretical combination of their underlying sets (or that change the only non-atomic object property expressions inset of conditions which must be true of an instance of the combined expression). OWL 1.1 are inverse property expressions.contains the grammar for object property expressions is as follows: inverseObjectProperty := 'InverseObjectProperty' '(' objectPropertyExpression ')' objectPropertyExpression := objectPropertyURI | inverseObjectPropertystandard boolean connectives, and (objectIntersectionOf), not (objectComplementOf), and or (objectUnionOf).
Figure 3. Object Property Expressions For symmetry, OWL 1.1 also allowsPropositional Connectives for data property expressions, as shownthe Formation of Descriptions
The propositional connectives are presented in Figure 4;3. The only typedescription construct objectUnionOf forms a disjunction of data property expressions are, however, data properties. The grammar for data property expressionsa set of descriptions, objectIntersectionOf is as follows: dataPropertyExpression := dataPropertyURI Figure 4. Data Property Expressions 4.3 Data Ranges Editor's Note: See Issue-5 (n-ary datatypes), Issue-25 (values-class), Issue-29 (owl:DataRange), Issue-31 (XSD defined datatypes), Issue-53 (Linear inequality between two data types), Issue-71 (datarange language range) and Issue-74 (XSD URIs for facets). OWL 1.1 provides several ways to definea range over data values, as shown in Figure 5.conjunction of a datatypeset of descriptions, objectComplementOf is a fundamental typenegation of data range that is defined bya URI. Each datatype URIdescription, and objectOneOf is associated witha predefined arity (notedescrption that contains exactly the same datatype URI cannot be used with different arities).objects denoted by the listset of the datatypes supported in OWL 1.1 is given in [specified individuals.
objectUnionOf:= 'ObjectUnionOf' '(' description description { description } ')'
objectIntersectionOf:= 'ObjectIntersectionOf' '(' description description { description } ')'
objectComplementOf:= 'ObjectComplementOf' '(' description ')'
objectOneOf:= 'ObjectOneOf' '(' individualURI { individualURI }')'
OWL 1.1 Semantics ]; furthermore, this list canalso allows descriptions to be extendeddefined by implementations as needed. The meaningmeans of restrictions on object properties, as shown in Figure 4.
Figure 4. OWL 1.1 ontologies containing a datatype URI not supported by an implementation is notClasses Defined by this specification; implementationsRestriction on Object Properties
The construct objectAllValuesFrom denotes the set of objects that are allowedconnected via the given object property only to signal an error in this case. Complex data ranges can be constructed frominstances of the simpler ones usinggiven description, objectSomeValuesFrom denotes the dataComplementOf constructor, which takes a data range and returns its complement (withset of objects that are connected via the same arity), Furthermore, data ranges (of arity one) consisting exactlygiven object property to at least one instance of the specifiedgiven description, objectExistsSelf denotes the set of constants can be formed usingobjects that are connected to themselves via the dataOneOf constructor.given object property, and objectHasValue denotes the set of objects that are connected via the given object property to the object denoted by the given individual.
Finally, OWL 1.1 descriptions can be defined by restricting the datatypeRestriction constructor creates a data rangecardinality of associations between objects, as shown in Figure 5.
Figure 5. OWL 1.1 Descrptions Defined by applying oneRestricting Object Property Cardinalities
Cardinality restrictions can be qualified or more facet restriction to a particular data range.unqualified, depending on whether there is a facetrestriction consistson the description of a constantthe connected individual; an unqualified cardinality restriction value and a facet type thatis appliedequivalent to a qualified one where the data range in question.restricting description is owl:Thing. The following facet typesconstruct objectMinCardinality denotes the set of objects that are supported in OWL 1.1: length , minLength , maxLength , pattern , minInclusive , minExclusive , maxInclusive , maxExclusive , totalDigits , and fractionDigits .connected via the semanticsgiven object property to at least the given number of instances of the facets is defined ingiven description, the XML Schema Datatypes Specification [ XML Schema Datatypes ]. Review comment from MikeSmith 06:44, 26 November 2007 (EST) Text addressing ISSUE-31 : "Canonical URI for externally defined datatypes" is provided onconstruct objectMaxCardinality denotes the discussion pageset of objects that are connected via the given object property to at most the given number of instances of the given description, and proposed for inclusion here. Figure 5. Data Rangesthe description objectExactCardinality denotes the set of OWL 1.1objects that are connected via the grammar for OWL 1.1 data ranges is as follows: dataComplementOfgiven object property to exactly the given number of instances of the given description.
objectAllValuesFrom:= 'DataComplementOf''ObjectAllValuesFrom' '(' dataRangeobjectPropertyExpression description ')'
dataOneOfobjectSomeValuesFrom:= 'DataOneOf''ObjectSomeValuesFrom' '(' constant { constant }objectPropertyExpression description ')'
datatypeFacetobjectExistsSelf:= 'length' | 'minLength' | 'maxLength' | 'pattern' | 'minInclusive' | 'minExclusive' | 'maxInclusive' | 'maxExclusive' | 'totalDigits' | 'fractionDigits' restrictionValue'ObjectExistsSelf' '(' objectPropertyExpression ')'
objectHasValue:= constant datatypeRestriction'ObjectHasValue' '(' objectPropertyExpression individualURI ')'
cardinality:= 'DatatypeRestriction'nonNegativeInteger
objectMinCardinality:= 'ObjectMinCardinality' '(' dataRange datatypeFacet restrictionValue { datatypeFacet restrictionValue }cardinality objectPropertyExpression [ description ] ')'
dataRangeobjectMaxCardinality:= datatypeURI | dataComplementOf | dataOneOf | datatypeRestriction 4.4 Entity Annotations Editor's Note: See Issue-16 (entity annotations). Often, it is desirable to annotate entities in an ontology; such an annotation might, for example, specify a "human-friendly" label or comment.'ObjectMaxCardinality' '(' cardinality objectPropertyExpression [ description ] ')'
objectExactCardinality:= 'ObjectExactCardinality' '(' cardinality objectPropertyExpression [ description ] ')'
OWL 1.1 provides entity annotationsalso allows for this purpose; their structure isthe definition of descriptions by stating restrictions on data properties, as shown in Figure 6.
Figure 6. Entity Annotations inOWL 1.1 NoteDescriptions Defined by Restriction on Data Properties
The notable distinction with respect to object property restrictions is that an entity annotation axiom provides for two typesdataAllValuesFrom and dataSomeValuesFrom restrictions take a list of annotation -- one for the axiom itselfdata property expressions, and one for the entity. Itnot just a single property expression. This is importantin order to distinguish thesesupport descriptions such as "objects whose width is greater than their height", where the values of width and height are specified using two typesdata properties. In such definitions, the arity of annotation:the first one refersgiven data range must be equal to the axiom (e.g., says who has asserted it), whereasnumber of the second one refers togiven data properties.
Figure 7 shows the entity itself (e.g., provides a human-friendly label).restrictions that can be built by stating cardinality restrictions on data properties. The grammar for entity annotations is as follows: annotationsForAxiom := annotation annotationsForEntity := annotation entityAnnotationarity of data range must be one.
Figure 7. OWL 1.1 Descriptions Defined by Restriction on Data Properties
dataAllValuesFrom:= 'EntityAnnotation''DataAllValuesFrom' '(' dataPropertyExpression { annotationsForAxiomdataPropertyExpression } entitydataRange ')'
dataSomeValuesFrom:= 'DataSomeValuesFrom' '(' dataPropertyExpression { annotationsForEntitydataPropertyExpression } dataRange ')'
Note that the productiondataHasValue:= 'DataHasValue' '(' dataPropertyExpression constant ')'
dataMinCardinality:= 'DataMinCardinality' '(' cardinality dataPropertyExpression [ dataRange ] ')'
dataMaxCardinality:= 'DataMaxCardinality' '(' cardinality dataPropertyExpression [ dataRange ] ')'
dataExactCardinality:= 'DataExactCardinality' '(' cardinality dataPropertyExpression [ dataRange ] ')'
The entityAnnotation nonterminal requires an entity and not a URI. Thus, an OWL class should be annotated as follows: EntityAnnotation(OWLClass(Person) Comment("The set offollowing grammar production integrates all humans.")) This is so that the type of the entity being annotated can easily be determined from the syntactic formtypes of the entity annotation axiom. 5descriptions Editor's Note: See Issue-65 (excess vocab).in OWL 1.1 provides an expressive language for forming descriptions. For clarity, these are presented in three separate diagrams. The propositional connectives are presented in Figure 7. The1.1:
description construct:= owlClassURI | objectUnionOf forms a disjunction of a set of descriptions,| objectIntersectionOf is a conjunction of a set of descriptions,| objectComplementOf is a negation of a description, and| objectOneOf is a descrption that contains exactly|
objectAllValuesFrom | objectSomeValuesFrom | objectExistsSelf | objectHasValue |
objectMinCardinality | objectMaxCardinality | objectExactCardinality |
dataAllValuesFrom | dataSomeValuesFrom | dataHasValue |
dataMinCardinality | dataMaxCardinality | dataExactCardinality
Object properties can be combined into more complex expressions, as show in Figure 8.
Figure 8. Object Property Expressions
The objects denoted byonly non-atomic object property expressions in OWL 1.1 are inverse property expressions.
For symmetry, OWL 1.1 also allows for data property expressions, as shown in Figure 9; the setonly type of specified individuals.data property expressions are, however, data properties. The grammar for the propositional description constructsdata property expressions is definedas follows:
objectUnionOf := 'ObjectUnionOf' '(' description description { description } ')' objectIntersectionOfFigure 9. Data Property Expressions
inverseObjectProperty:= 'ObjectIntersectionOf''InverseObjectProperty' '(' description description { description }objectPropertyExpression ')'
objectComplementOfobjectPropertyExpression:= 'ObjectComplementOf' '(' description ')' objectOneOfobjectPropertyURI | inverseObjectProperty
dataPropertyExpression:= 'ObjectOneOf' '(' individualURI { individualURI }')' Figure 7. Propositional Connectives for the Formation of DescriptionsdataPropertyURI
Editor's Note: See Issue-5 (n-ary datatypes), Issue-25 (values-class), Issue-31 (XSD defined datatypes), Issue-53 (Linear inequality between two data types), and Issue-71 (datarange language range).
OWL 1.1 also allows descriptionsprovides several ways to be defined by means of restrictions on object properties, as shown indefine a range over data values, as shown in Figure 8. The construct objectAllValuesFrom denotes the set of objects that are connected via10.
Figure 10. Data Ranges of the given description, objectSomeValuesFrom denotes the setOWL 1.1
A datatype is a fundamental type of objectsdata range that is defined by a URI. Each datatype URI is associated with a predefined arity (note that are connected viathe given object property to at least one instancesame datatype URI cannot be used with different arities). The list of the datatypes supported in OWL 1.1 is given description, objectExistsSelf denotesin [OWL 1.1 Semantics]; furthermore, this list can be extended by implementations as needed. The setmeaning of objects thatOWL 1.1 ontologies containing a datatype URI not supported by an implementation is not defined by this specification; implementations are connectedallowed to themselves viasignal an error in this case.
Complex data ranges can be constructed from the given object property,simpler ones using the dataComplementOf constructor, which takes a data range and objectHasValue denotesreturns its complement (with the same arity), Furthermore, data ranges (of arity one) consisting exactly of the specified set of objects that are connected viaconstants can be formed using the given object property todataOneOf constructor. Finally, the object denoteddatatypeRestriction constructor creates a data range by the given individual. The grammar for the restrictions is as follows: objectAllValuesFrom := 'ObjectAllValuesFrom' '(' objectPropertyExpression description ')' objectSomeValuesFrom := 'ObjectSomeValuesFrom' '(' objectPropertyExpression description ')' objectExistsSelf := 'ObjectExistsSelf' '(' objectPropertyExpression ')' objectHasValue := 'ObjectHasValue' '(' objectPropertyExpression individualURI ')' Figure 8. OWL 1.1 Classes Defined by Restriction on Object Properties Finally, OWL 1.1 descriptions can be defined by restricting the cardinality of associations between objects, as shown in Figure 9. Cardinality restrictions can be qualifiedapplying one or unqualified, depending on whether there ismore facet restriction to a datatype. A facet restriction on the descriptionconsists of the connected individual; an unqualified cardinalitya constant restriction is equivalent tovalue and a qualified one where the restricting description is owl:Thing . The construct objectMinCardinality denotes the set of objectsfacet type that are connected via the given object propertyis applied to at least the given number of instances of the given description,the construct objectMaxCardinality denotesdata range in question. The set of objects thatfollowing facet types are connected via the given object property to at most the given number of instances of the given description,supported in OWL 1.1: length, minLength, maxLength, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, totalDigits, and the description objectExactCardinality denotes the set of objects thatfractionDigits.
Not all datatypes are connected viacompatible with all facets; the given object property to exactlyallowed combinations are listed in Table 1. The given number of instancessemantics of the given description. The grammar for these restrictionsfacets is defined as follows: cardinality := nonNegativeInteger objectMinCardinality := 'ObjectMinCardinality' '(' cardinality objectPropertyExpression [ description ] ')' objectMaxCardinality := 'ObjectMaxCardinality' '(' cardinality objectPropertyExpressionin the XML Schema Datatypes Specification [ description ] ')' objectExactCardinality := 'ObjectExactCardinality' '(' cardinality objectPropertyExpression [ description ] ')' Figure 9. OWL 1.1 Descrptions Defined by Restricting Object Property Cardinalities OWL 1.1 also allows for the definition of descriptions by stating restrictions on data properties, as shown in Figure 10. The notable distinction with respect to object property restrictions is that dataAllValuesFrom and dataSomeValuesFrom restrictions take a list of data property expressions, and not just a single property expression. This is in order to support descriptions such as "objects whose width is greater than their height", where the values of widthXML Schema Datatypes].
Datatype | Allowed Facets |
---|---|
xsd:boolean | pattern |
xsd:decimal, xsd:double, xsd:float, xsd:long, xsd:integer, xsd:int, xsd:short, xsd:byte, xsd:nonPositiveInteger, xsd:nonNegativeInteger, xsd:positiveInteger, xsd:negativeInteger, xsd:unsignedLong, xsd:unsignedInt, xsd:unsignedShort, xsd:unsignedByte, xsd:dateTime, xsd:time, xsd:date, xsd:gYear, xsd:gMonth, xsd:gDay, xsd:gYearMonth, xsd:gMonthDay | minInclusive, minExclusive, maxInclusive, maxExclusive, totalDigits, fractionDigits, pattern |
xsd:string, xsd:normalizedString, xsd:anyURI, xsd:token, xsd:language, xsd:NMTOKEN, xsd:Name, xsd:NCName, xsd:hexBinary, xsd:base64Binary | length, minLength, maxLength, pattern |
dataComplementOf:= 'DataAllValuesFrom''DataComplementOf' '(' dataPropertyExpression { dataPropertyExpression }dataRange ')'
dataSomeValuesFromdataOneOf:= 'DataSomeValuesFrom''DataOneOf' '(' dataPropertyExpressionconstant { dataPropertyExpression } dataRange ')' dataHasValue := 'DataHasValue' '(' dataPropertyExpressionconstant } ')'
dataMinCardinality := 'DataMinCardinality' '(' cardinality dataPropertyExpression [ dataRange ] ')' dataMaxCardinality := 'DataMaxCardinality' '(' cardinality dataPropertyExpression [ dataRange ] ')' dataExactCardinality := 'DataExactCardinality' '(' cardinality dataPropertyExpression [ dataRange ] ')' The following grammar production integrates all types of descriptions in OWL 1.1: descriptiondatatypeFacet:=
owlClassURI | objectUnionOf | objectIntersectionOf | objectComplementOf | objectOneOf | objectAllValuesFrom'length' | objectSomeValuesFrom'minLength' | objectExistsSelf'maxLength' | objectHasValue'pattern' |
objectMinCardinality'minInclusive' | objectMaxCardinality'minExclusive' | objectExactCardinality'maxInclusive' | dataAllValuesFrom'maxExclusive' |
dataSomeValuesFrom'totalDigits' | dataHasValue'fractionDigits'
restrictionValue:= constant
datatypeRestriction:= 'DatatypeRestriction' '(' datatypeURI datatypeFacet restrictionValue { datatypeFacet restrictionValue } ')'
dataRange:= datatypeURI | dataMinCardinalitydataComplementOf | dataMaxCardinalitydataOneOf | dataExactCardinality 6datatypeRestriction
This section lists the types of axiom that can be stated in OWL 1.1. To make the presentation easier to follow, the axioms are grouped by type.As already mentioned, an axiom may contain an arbitrary number of annotations; furthermore, although annotations do not affect the semantics of an axiom, they are taken into account in the definition of structural equivalence.
Editor's Note: Need to replace "descriptions" with "expressions" methinks.
The class or descriptionaxioms of OWL 1.1 are shown in Figure 12.11.
Figure 11. The Class Axioms of OWL 1.1
The subClassOf axiom states that one description is a subclass of another description. The equivalentClasses axiom takes a set of descriptions and states that they are all equivalent. The disjointClasses axiom takes a set of descriptions and states that all descriptions from the set are pair-wise disjoint. Finally, the disjointUnion axiom defines a class as a union of descriptions, all of which are pair-wise disjoint.
subClass:= description
superClass:= description
subClassOf:= 'SubClassOf' '(' { annotation } subClass superClass ')'
equivalentClasses:= 'EquivalentClasses' '(' { annotation } description description { description } ')'
disjointClasses:= 'DisjointClasses' '(' { annotation } description description { description } ')'
disjointUnion:= 'DisjointUnion' '(' { annotation } owlClassURI description description { description } ')'
classAxiom:= subClassOf | equivalentClasses | disjointClasses | disjointUnion
Editor's Note: See Issue-22 (role-rule-sugar) and Issue-83 (Property Chain Axioms).
OWL 1.1 provides for several different kinds of object property axioms. For clarity these are presented in two separate diagrams, the first of which is Figure 13.12.
Figure 12. Object Property Axioms, Part I
The equivalentObjectProperties axiom takes a set of object properties and states that they are all equivalent, and the disjointObjectProperties axiom takes a set of object properties and states that all properties from the set are pair-wise disjoint. Furthermore, objectPropertyDomain and objectPropertyRange specify the domain and the range description, respectively, of an object property. Finally, inverseObjectProperties axiomatizes two properties to be inverse of each other.other.
In addition, OWL 1.1 provides for axioms that allow the assertion of various characteristics of an object property, as specified in Figure 13.
Figure 13. Axioms Defining Characteristics of Object Properties, Part II
Each of these axioms are described usingtakes an object property and asserts that the following grammar:property has a certain characteristic, such as being functional or transitive.
subObjectPropertyExpression:= objectPropertyExpression | 'SubObjectPropertyChain' '(' objectPropertyExpression objectPropertyExpression { objectPropertyExpression } ')'
subObjectPropertyOf:= 'SubObjectPropertyOf' '(' { annotation } subObjectPropertyExpression objectPropertyExpression ')'
equivalentObjectProperties:= 'EquivalentObjectProperties' '(' { annotation } objectPropertyExpression objectPropertyExpression { objectPropertyExpression } ')'
disjointObjectProperties:= 'DisjointObjectProperties' '(' { annotation } objectPropertyExpression objectPropertyExpression { objectPropertyExpression } ')'
objectPropertyDomain:= 'ObjectPropertyDomain' '(' { annotation } objectPropertyExpression description ')'
objectPropertyRange:= 'ObjectPropertyRange' '(' { annotation } objectPropertyExpression description ')'
inverseObjectProperties:= 'InverseObjectProperties' '(' { annotation } objectPropertyExpression objectPropertyExpression ')'
Figure 13.functionalObjectProperty:= 'FunctionalObjectProperty' '(' { annotation } objectPropertyExpression ')'
inverseFunctionalObjectProperty:= 'InverseFunctionalObjectProperty' '(' { annotation } objectPropertyExpression ')'
reflexiveObjectProperty:= 'ReflexiveObjectProperty' '(' { annotation } objectPropertyExpression ')'
irreflexiveObjectProperty:= 'IrreflexiveObjectProperty' '(' { annotation } objectPropertyExpression ')'
symmetricObjectProperty:= 'SymmetricObjectProperty' '(' { annotation } objectPropertyExpression ')'
asymmetricObjectProperty:= 'AsymmetricObjectProperty' '(' { annotation } objectPropertyExpression ')'
transitiveObjectProperty:= 'TransitiveObjectProperty' '(' { annotation } objectPropertyExpression ')'
Editor's Note: I'm unsure what to do with the unifying grammar fragments
objectPropertyAxiom:=
subObjectPropertyOf | equivalentObjectProperties |
disjointObjectProperties | inverseObjectProperties |
objectPropertyDomain | objectPropertyRange |
functionalObjectProperty | inverseFunctionalObjectProperty |
reflexiveObjectProperty | irreflexiveObjectProperty |
symmetricObjectProperty | asymmetricObjectProperty |
transitiveObjectProperty
Editor's Note: See Issue-8 (dataproperty chains).
Data property axioms are similar to object property Axioms, Part I In addition,axioms, and are shown in Figure 14.
Figure 14. Data Property Axioms of OWL 1.1
Note that the arity of the data range used in a dataPropertyRange axiom must be one. The axioms are described by the following grammar:
subDataPropertyOf:= 'SubDataPropertyOf' '(' { annotation } dataPropertyExpression dataPropertyExpression ')'
equivalentDataProperties:= 'EquivalentDataProperties' '(' { annotation } dataPropertyExpression dataPropertyExpression { dataPropertyExpression } ')'
disjointDataProperties:= 'DisjointDataProperties' '(' { annotation } dataPropertyExpression dataPropertyExpression { dataPropertyExpression } ')'
dataPropertyDomain:= 'DataPropertyDomain' '(' { annotation } dataPropertyExpression description ')'
dataPropertyRange:= 'DataPropertyRange' '(' { annotation } dataPropertyExpression dataRange ')'
functionalDataProperty:= 'FunctionalDataProperty' '(' { annotation } dataPropertyExpression ')'
Editor's Note: I'm unsure what to do with the unifying grammar fragments
The following grammar production merges all productions for data property axioms:
dataPropertyAxiom:=
subDataPropertyOf | equivalentDataProperties | disjointDataProperties |
dataPropertyDomain | dataPropertyRange | functionalDataProperty
Editor's Note: See Issue-3 (anonymous individuals) and Issue-23 (scoped-names).
OWL 1.1 provides forsupports a rich set of axioms for stating facts. Figure 15 shows the facts that allowcan be stated about individuals and descriptions.
Figure 15. Facts
The assertionsameIndividual axiom states that each of various characteristicsthe individuals from a given set denotes the same object, whereas the differentIndividuals axiom states that each of the individuals from a given set denotes a different object. The classAssertion axiom states that the object denoted by the given individual is an instance of the given description.
The facts about object property, as specifiedproperties are shown in Figure 14. Each of these axioms takes an16.
Figure 16. Object Property and assertsAssertions
The objectPropertyAssertion states that the objects denoted by the given individuals are connected by the given property, whereas the negativeObjectPropertyAssertion states that the objects denoted by the given individuals are not connected by the given property.
The structure of axioms asserting facts about data properties is similar and is shown in Figure 17.
Figure 17. Data Property hasAssertions
The dataPropertyAssertion states that the value of a certain characteristic, such as being functional or transitive. These axioms are describeddata property for an object denoted by the following grammar: functionalObjectPropertygiven individual is the given constant, whereas the negativeDataPropertyAssertion states the opposite.
fact:= sameIndividual | differentIndividuals | classAssertion |
objectPropertyAssertion | negativeObjectPropertyAssertion |
dataPropertyAssertion | negativeDataPropertyAssertion
sameIndividual:= 'FunctionalObjectProperty''SameIndividual' '(' { annotation } objectPropertyExpressionindividualURI individualURI { individualURI } ')'
inverseFunctionalObjectPropertydifferentIndividuals:= 'InverseFunctionalObjectProperty''DifferentIndividuals' '(' { annotation } objectPropertyExpressionindividualURI individualURI { individualURI } ')'
reflexiveObjectPropertyclassAssertion:= 'ReflexiveObjectProperty''ClassAssertion' '(' { annotation } objectPropertyExpressionindividualURI description ')'
irreflexiveObjectPropertysourceIndividualURI:= 'IrreflexiveObjectProperty'individualURI
targetIndividualURI:= individualURI
objectPropertyAssertion:= 'ObjectPropertyAssertion' '(' { annotation } objectPropertyExpression sourceIndividualURI targetIndividualURI ')'
symetricObjectPropertynegativeObjectPropertyAssertion:= 'SymmetricObjectProperty''NegativeObjectPropertyAssertion' '(' { annotation } objectPropertyExpression sourceIndividualURI targetIndividualURI ')'
asymetricObjectPropertytargetValue:= 'AsymmetricObjectProperty'constant
dataPropertyAssertion:= 'DataPropertyAssertion' '(' { annotation } objectPropertyExpressiondataPropertyExpression sourceIndividualURI targetValue ')'
transitiveObjectPropertynegativeDataPropertyAssertion:= 'TransitiveObjectProperty''NegativeDataPropertyAssertion' '(' { annotation } objectPropertyExpressiondataPropertyExpression sourceIndividualURI targetValue ')'
Ontologies can contain information which does not affect the logical meaning of Object Properties,the ontology (or any part IIthereof). Some such information is entirely implicit from the following grammar production merges all productionsOWL point of view: for object property axioms: objectPropertyAxiom := subObjectPropertyOf | equivalentObjectProperties | disjointObjectProperties | inverseObjectProperties | objectPropertyDomain | objectPropertyRange | functionalObjectProperty | inverseFunctionalObjectProperty | reflexiveObjectProperty | irreflexiveObjectProperty | symetricObjectProperty | asymetricObjectProperty | transitiveObjectProperty 6.3 Data Propertyexample, a user may want to physically group axioms Editor's Note: See Issue-8 (dataproperty chains). Data propertytogether which "go together" in some way; however, since an OWL ontology contains a set of axioms, this grouping has no logical significance and certain tools (including structure oriented OWL editors) may ignore it. Similarly, certain serializations may have a comment facility (e.g., RDF/XML and the OWL XML serializations both support XML comments) which is not preserved at the structural level. Users who use these serialization specific mechanisms must take care when manipulating their ontologies using structure oriented tools and, in general, such use is not recommended.
One could use OWL entities and axioms which are similarnot intended to model the subject domain, but, instead, to provide extra-modeling information. For example, it is common to use the Dublin Core vocabulary to represent who originally coined ("created") a class. One could represent this information, using punning, at the logical level. However, this mixes domain modeling with ontology record keeping which can make the ontology more difficult to understand and use.
To solve the problems with these alternatives, OWL 1.1 provides an annotation system which allows users to object property axioms,associate information with entities, ontologies, and are shownaxioms in Figure 15. Note thata structurally significant way which, nevertheless, does not affect the aritylogical meaning of the data range used in a dataPropertyRangeontology.
For example, the axiom
must be one.SubClassOf( Human Animal )
is not structurally equivalent to the axiomsaxiom
SubClassOf( Comment("Humans are described by the following grammar: subDataPropertyOf := 'SubDataPropertyOf' '(' { annotation } dataPropertyExpression dataPropertyExpression ')' equivalentDataProperties := 'EquivalentDataProperties' '(' { annotation } dataPropertyExpression dataPropertyExpression { dataPropertyExpression } ')' disjointDataProperties := 'DisjointDataProperties' '(' { annotation } dataPropertyExpression dataPropertyExpression { dataPropertyExpression } ')' dataPropertyDomain := 'DataPropertyDomain' '(' { annotation } dataPropertyExpression description ')' dataPropertyRange := 'DataPropertyRange' '(' { annotation } dataPropertyExpression dataRange ')' functionalDataProperty := 'FunctionalDataProperty' '(' { annotation } dataPropertyExpression ')' Figure 15. Data Property Axiomsa type of OWL 1.1animals.") Human Animal)
even though the following grammar production merges all productions for data property axioms: dataPropertyAxiom := subDataPropertyOf | equivalentDataProperties | disjointDataProperties | dataPropertyDomain | dataPropertyRange | functionalDataProperty 6.4 Facts Editor's Note: See Issue-3 (anonymous individuals) and Issue-23 (scoped-names). OWL 1.1 supports a rich setsemantics of axioms for stating facts. Figure 16 showsthe facts thattwo axioms are equivalent.
Annotations can be stated about individuals and descriptions. The sameIndividual axiom states that eachthought as a form of the individuals fromexpression which may be inserted into axioms or appear in ontology structures. To associate an annotation expression with an entity, one uses a given set denotes the same object, whereas the differentIndividuals axiom statesspecial kind of axiom. An annotation consists of an annotation property that eachspecifies the type of the individuals from a given set denotesannotation and a different object.value for the classAssertion axiom statesannotation. OWL 1.1 allows for two kinds of annotation values, as shown in Figure 18.
Figure 18. Annotations in OWL 1.1
explicitAnnotationByConstant:= 'SameIndividual''Annotation' '(' { annotation } individualURI individualURI { individualURI }annotationPropertyURI constant ')'
differentIndividualsannotationByConstant:= 'DifferentIndividuals'explicitAnnotationByConstant | labelAnnotation | commentAnnotation
annotationByEntity:= 'Annotation' '(' { annotation } individualURI individualURI { individualURI }annotationPropertyURI entity ')'
classAssertionannotation:= 'ClassAssertion' '(' {annotationByConstant | annotationByEntity
Editor's Note: See Issue-16 (entity annotations).
Often, it is desirable to annotate entities in an ontology; such an annotation } individualURI description ')' Figure 16. Facts The facts about object properties aremight, for example, specify a "human-friendly" label or comment. OWL 1.1 provides entity annotations for this purpose; their structure is shown in Figure 17. The objectPropertyAssertion states19.
Figure 19. Entity Annotations in OWL 1.1
Note that an entity annotation axiom provides for two types of annotation -- one for the objects denoted by the given individuals are connected byaxiom itself and one for the given property, whereasentity. It is important to distinguish these two types of annotation: the negativeObjectPropertyAssertion states thatfirst one refers to the objects denoted byaxiom (e.g., says who has asserted it), whereas the given individuals are not connected bysecond one refers to the given property.entity itself (e.g., provides a human-friendly label). The grammar for these axiomsentity annotations is as follows:
sourceIndividualURIannotationForAxiom:= individualURI targetIndividualURIannotation
annotationForEntity:= individualURI objectPropertyAssertionannotation
entityAnnotation:= 'ObjectPropertyAssertion''EntityAnnotation' '(' { annotationannotationForAxiom } objectPropertyExpression sourceIndividualURI targetIndividualURI ')' negativeObjectPropertyAssertion := 'NegativeObjectPropertyAssertion' '('entity annotationForEntity { annotationannotationForEntity } objectPropertyExpression sourceIndividualURI targetIndividualURI')'
Figure 17. Object Property AssertionsNote that the structureproduction for the entityAnnotation nonterminal requires an entity and not a URI. Thus, an OWL class should be annotated as follows:
EntityAnnotation(OWLClass(Person) Comment("The set of axioms asserting facts about data propertiesall humans."))
This is similarso that the type of the entity being annotated can easily be determined from the syntactic form of the entity annotation axiom.
Annotation properties with the common URIs rdfs:label and is shownrdfs:comment are abbreviated as follows:
labelAnnotation:= 'Label' '(' constant ')'
commentAnnotation:= 'Comment' '(' constant ')'
OWL 1.1 provides several well-known ontology annotations. These have no meaning in Figure 18.the dataPropertyAssertion states thatmodel-theoretic semantics; however, they may be used by software to manage ontology version.
As explained in [SROIQ], to obtain a decidable language, the axiom closure Ax of each OWL 1.1 ontology must obey certain nonstructural restrictions, as defined next. In this section, we assume that all object property expressions in Ax are either object properties or inverses of an object property. This can be ensured by replacing all expressions InverseObjectProperty( InverseObjectProperty(PE) ) with PE.
For an object property expression PE, the inverse property expression INV(PE) is defined as follows:
An object property expression PE is composite in Ax if Ax contains an axiom of the form
The object property hierarchy relation → is the smallest relation on object property expressions for which the following conditions hold (A → B means that → holds for A and B):
The relation →* is the reflexive-transitive closure of →. An object property expression PE is simple in Ax if, for each object property expression PE' such that PE' →* PE holds, PE' is not composite.
The axioms Ax satisfy the nonstructural restrictions of OWL 1.1 if the following three conditions hold:
Editor's Note: See Issue-19 (declarations-p) and Issue-20 (annotate-declarations?).
In addition to axioms, OWL 1.1 also provides declarations, which can be used to check the structural consistency of an ontology. In OWL 1.1, it is possible to use a URI for an entity without explicitly stating that an entity with such a name exists. For example, the following is a correct OWL 1.1 ontology:
Ontology(<http://www.my.domain.com/example>
SubClassOf( Human Animal )
)
In this example, the classes Human and Animal are used without explicitly stating that they exist. This is desirable in many situations, since it allows "anyone to say anything about anything," which is consistent with the vision of the Semantic Web. This approach can, however, make it difficult to detect structural errors in ontologies; a typographical error in a class name, for example, simply introduces a new class with a different name.
This issue can be addressed by using declarations to check the structural integrity of an ontology. We say that an entity is declared in an ontology O if either O or some ontology O' imported by O contains a declaration axiom for the entity. Note that an ontology may contain multiple declarations for the same entity, and that imported ontologies may do so as well. An ontology O is structurally consistent if each entity occurring in an axiom from the axiom closure of O is declared in O. Note that, by this definition, the check applies also the entities used in annotations; that is, these entities must be properly declared as well for an ontology to be structurally consistent.
Note that, although structurally consistency can be a very useful feature in some applications, OWL 1.1 does not require ontologies to be structurally consistent. Thus, an ontology can be used even if it does not contain any declarations.
As shown in Figure 19,20, a declaration is a kind of axiom; this is in order to allow an ontology to be treated as simply a set axioms. A declaration, however, imposes no constraints on the model-theoretic interpretation of an ontology (in the sense of [OWL 1.1 Semantics]).
Figure 19.20. Entity Declarations in OWL 1.1
The grammar for declarations is as follows:
declaration:= 'Declaration' '(' { annotation } entity ')'
Note that the production for the declaration nonterminal requires an entity and not a URI. Thus, an OWL class should be declared as follows:
Declaration(OWLClass(Person))
This is so that the type of the entity being declared can easily be determined from the syntactic form of the declaration.
OWL 1.1 departs in its conceptual design and in syntax from OWL 1.0 Abstract Syntax. In this section we summarize the differences and explain the rationale behind the changes.
OWL 1.0 provides a frame-like syntax that allows several aspects of a class, property or individual to be defined in a single axiom. For example, one can write the following axiom in OWL 1.0:
ObjectProperty(partOf inverseOf(containedIn) inverseFunctional transitive
Label("Specifies that an object is a part of another object.")
)
This type of axiom may cause problems in practice. In the first place, it bundles many different features of the given object into a single axiom. While this may be convenient when ontologies are being manipulated by hand, it is not convenient for manipulating them programmatically. In fact, most implementations of OWL 1.0 break such axioms apart into several "atomic" axioms, each dealing with only a single feature of the object. However, this may cause problems with round-tripping, as the structure of the ontology may be destroyed in the process. In the second place, this type of axiom is often misinterpreted as a declaration and unique "definition" of the given object. In OWL 1.0, however, objects may be used without being the subject of any such axiom, and there may be many such axioms relating to the same object. Finally, OWL 1.0 does not provide means to annotate axioms, which has proved to be quite useful in practice. These problems are addressed in OWL 1.1 in several ways. First, the frame-like notation has been dropped in favor of a more fine-grained structure of axioms, where each axiom describes just one feature of the given object. Second, OWL 1.1 provides explicit declarations, and an explicit definition of the notion of structural consistency. Finally, all axioms in OWL 1.1 can be annotated, and entity annotation axioms provide means for that. For example, the above mentioned OWL 1.0 axiom can be represented in OWL 1.1 as follows:
Declaration(ObjectProperty(partOf))
EntityAnnotation(ObjectProperty(partOf)
Label("Specifies that an object is a part of another object.")
)
EquivalentObjectProperties(partOf InverseObjectProperty(containedIn))
InverseFunctionalObjectProperty(partOf)
TransitiveObjectProperty(Comment("The partOf property is transitive.") partOf)
Although OWL 1.1 is more verbose, this should not be a problem given that most OWL ontologies are created using ontology engineering tools. Moreover, such tools are free to present the information to the user in a more intuitive (possibly frame-like) way.
In OWL 1.0, all properties are atomic, but it is possible to assert that one object property is the inverse of another. For example, one can assert the following axiom in OWL 1.0:
ObjectProperty(hasPart inverse isPartOf)
In OWL 1.1, property expressions such as InverseObjectProperty(hasPart) can be used in class expressions, which avoids the need to give a name to every inverse property. If desired, however, names can still be given to inverse properties. For example, the following OWL 1.1 axiom asserts that isPartOf is the inverse of hasPart, and is thus equivalent to the mentioned OWL 1.0 axiom:
EquivalentObjectProperties(InverseObjectProperty(hasPart) isPartOf)
Editor's Note: See Issue-17 (role punning), Issue-18 (property typing), Issue-65 (excess vocab) and Issue-69 (punning).
OWL 1.0 relies on the separation of names between concepts, individuals, and object and data properties, but the type of a given name may not be obvious from the context in which it is used. Consider, for example, the following OWL 1.0 axiom:
SubClassOf(Lion restriction(eats someValuesFrom(Animal)))
From this axiom alone, it is not clear how to interpret the class restriction(eats someValuesFrom Animal): one possibility is to treat eats as an object property and Animal as a class, and the other one is to treat eats as a data property and Animal as a datatype. Examining other axioms in the ontology (or in an imported ontology) may make it possible to disambiguate this one, but this is not required in OWL 1.0: an ontology containing only the mentioned axiom is a correct OWL 1.0 ontology in which the intended usage of eats and Animal cannot be disambiguated. Hence, parsing an OWL 1.0 ontology requires not only two passes through the ontology being parsed, but also possibly parsing imported ontologies as well; this makes parser implementation complex and error prone. This problem is addressed in OWL 1.1 by explicitly typing each usage of a name. For example, the above mentioned axiom can be represented in OWL 1.1 as follows:
SubClassOf(Lion ObjectSomeValuesFrom(eats Animal))
This makes it completely clear that eats is intended to be interpreted as an object property and Animal as a class.