Copyright © 2008 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 6 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.
Contents |
The Web Ontology Language (OWL) 1.1 specification [OWL 1.1 Specification] defines a functional-style syntax whose intention is to be readable by humans. However, it is widely recognized that an XML syntax is needed as well.
The XML syntax can be used when a widely-accepted syntax that exactly mirrors the functional-style syntax and structural specification of OWL 1.1 ontologies is needed by tools, such as in the Description Logics Implementors Group (DIG) 2.0 specification [DIG 2.0].
The XML syntax for OWL 1.1 is defined as an XML Schema [XML Schema], and is available as a separate document, as well as being included in this document. It has been obtained by a straightforward translation of the structural specification from the OWL 1.1 Specification [OWL 1.1 Specification] in the following way:
Note that there are aspects of OWL 1.1 ontologies that are global to the ontology itself (such as the requirements on transitive roles) and that thus cannot be captured in an XML Schema.
All URIs in an ontology are assumed to be relative to the xml:base of the ontology document. During parsing, all URIs should be resolved as specified in the XML Base specification [XML Base].
The root element of any OWL 1.1 ontology file written in this syntax should be ox:Ontology. However, other specifications are free to reuse other elements from the schema. For example, the DIG 2.0 specification [DIG 2.0] can reuse the elements and element groups corresponding to axioms, descriptions, and entities.
The XML schema presented in this document covers the entire OWL 1.1 language. In [OWL 1.1 Fragments] several fragments of OWL 1.1 have been defined. There are no separate schemata for these fragments; ontologies that can be expressed by the fragment languages should be written using the most general schema. Validating whether an ontology belongs to a particular fragment is not intended to be performed using XML schema mechanisms; this is to be done using other means whose specification is beyond the scope of this document.
The major issue to be resolved is exactly what to use as the namespace for the element names in the syntax.
This section presents the XML syntax for OWL 1.1 by means of several examples.
The root element of each OWL 1.1 ontology file encoded using XML syntax must be ox:Ontology. This element may contain a number of annotations followed by a sequence of axioms. Each ontology must be assigned a unique URI. Also, it is a good practice to include an xml:base specification to enable correct URI resolution.
<?xml version="1.0" encoding="UTF-8"?> <?oxygen RNGSchema="owl1.1.xsd" type="xsd"?> <ox:Ontology xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2007/OWL/wiki/OWL_XML_Schema# http://www.w3.org/2007/OWL/wiki/OWL_XML_Schema" xmlns:ox="http://www.w3.org/ns/owl11-xml#" xml:base="http://my.domain.com/myOntology" ox:ontologyURI="http://my.domain.com/myOntology"> <ox:Imports>http://my.domain.com/someOtherOntology</ox:Imports> <!-- The ontology axioms go here --> </ox:Ontology>
Entities in ontologies can be declared, as follows:
<ox:Declaration> <ox:OWLClass ox:URI="#animal"/> </ox:Declaration> <ox:Declaration> <ox:ObjectProperty ox:URI="#eats"/> </ox:Declaration>
Here are a couple of basic axioms about properties.
<ox:EquivalentObjectProperties> <ox:ObjectProperty ox:URI="#eats"/> <ox:InverseObjectProperty> <ox:ObjectProperty ox:URI="#eaten_by"/> </ox:InverseObjectProperty> </ox:EquivalentObjectProperties> <ox:SubObjectPropertyOf> <ox:ObjectProperty ox:URI="#has_father"/> <ox:ObjectProperty ox:URI="#has_parent"/> </ox:SubObjectPropertyOf> <ox:ObjectPropertyDomain> <ox:ObjectProperty ox:URI="#eats"/> <ox:OWLClass ox:URI="#animal"/> </ox:ObjectPropertyDomain>
Object property inclusion axioms of OWL 1.1 allow the construction of quite complex axioms regarding object properties. For example, it is possible to state that, if somebody owns an object, then they also own all parts of the object.
<ox:SubObjectPropertyOf> <ox:SubObjectPropertyChain> <ox:ObjectProperty ox:URI="#owns"/> <ox:ObjectProperty ox:URI="#has_part"/> </ox:SubObjectPropertyChain> <ox:ObjectProperty ox:URI="#owns"/> </ox:SubObjectPropertyOf>
Properties can be made disjoint, and one can assert properties to be reflexive, irreflexive, symmetric, or asymmetric. For example, the mother_of property should be irreflexive, because nobody can be their own mother.
<ox:DisjointObjectProperties> <ox:ObjectProperty ox:URI="#mother_of"/> <ox:ObjectProperty ox:URI="#sister_of"/> </ox:DisjointObjectProperties> <ox:IrreflexiveObjectProperty> <ox:ObjectProperty ox:URI="#mother_of"/> </ox:IrreflexiveObjectProperty>
OWL 1.1 provides a rich set of primitives for writing classes and axioms about them.
<ox:SubClassOf> <ox:OWLClass ox:URI="#bicycle"/> <ox:OWLClass ox:URI="#vehicle"/> </ox:SubClassOf> <ox:EquivalentClasses> <ox:OWLClass ox:URI="#bus_driver"/> <ox:ObjectIntersectionOf> <ox:OWLClass ox:URI="#person"/> <ox:ObjectSomeValuesFrom> <ox:ObjectProperty ox:URI="#drives"/> <ox:OWLClass ox:URI="#bus"/> </ox:ObjectSomeValuesFrom> </ox:ObjectIntersectionOf> </ox:EquivalentClasses> <ox:SubClassOf> <ox:OWLClass ox:URI="#white_van_man"/> <ox:ObjectAllValuesFrom> <ox:ObjectProperty ox:URI="#reads"/> <ox:OWLClass ox:URI="#tabloid"/> </ox:ObjectAllValuesFrom> </ox:SubClassOf>
Qualified cardinality restrictions can be used to assert that a dog lover is a person who owns al least three dogs.
<ox:EquivalentClasses> <ox:OWLClass ox:URI="#dog_lover"/> <ox:ObjectIntersectionOf> <ox:OWLClass ox:URI="#person"/> <ox:ObjectMinCardinality ox:cardinality="3"> <ox:ObjectProperty ox:URI="#has_pet"/> <ox:OWLClass ox:URI="#dog"/> </ox:ObjectMinCardinality> </ox:ObjectIntersectionOf> </ox:EquivalentClasses>
OWL 1.1 provides axioms that state positive and negative facts about individuals.
<ox:ClassAssertion> <ox:OWLClass ox:URI="#newespaper"/> <ox:Individual ox:URI="#Daily_Mirror"/> </ox:ClassAssertion> <ox:ClassAssertion> <ox:OWLClass ox:URI="#Fred"/> <ox:Individual ox:URI="#person"/> </ox:ClassAssertion> <ox:ObjectPropertyAssertion> <ox:ObjectProperty ox:URI="#has_pet"/> <ox:Individual ox:URI="#Fred"/> <ox:Individual ox:URI="#Tibbs"/> </ox:ObjectPropertyAssertion> <ox:NegativeObjectPropertyAssertion> <ox:ObjectProperty ox:URI="#brother_of"/> <ox:Individual ox:URI="#Fred"/> <ox:Individual ox:URI="#Alice"/> </ox:NegativeObjectPropertyAssertion>
pfps 16:30, 19 March 2008 (EDT): Unfortunately this is yet another malfeature of the Wiki! I've added the useful comments to the end of this section.)
SandroHawke 12:13, 24 March 2008 (EDT): fixed, by turning the less-than symbols which start XML comments into calls to an LT template.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ox="http://www.w3.org/ns/owl11-xml#" targetNamespace="http://www.w3.org/ns/owl11-xml#" elementFormDefault="qualified" attributeFormDefault="qualified"> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> <!-- Annotations --> <xsd:element name="Annotation"> <xsd:complexType> <xsd:sequence> <xsd:element ref="ox:AnnotationProperty"/> <xsd:choice> <xsd:element ref="ox:Constant"/> <xsd:group ref="ox:OWLEntity"/> </xsd:choice> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="Label"> <xsd:complexType> <xsd:choice> <xsd:element ref="ox:Constant"/> <xsd:group ref="ox:OWLEntity"/> </xsd:choice> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="Comment"> <xsd:complexType> <xsd:choice> <xsd:element ref="ox:Constant"/> <xsd:group ref="ox:OWLEntity"/> </xsd:choice> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:group name="Annotation"> <xsd:choice> <xsd:element ref="ox:Annotation"/> <xsd:element ref="ox:Label"/> <xsd:element ref="ox:Comment"/> </xsd:choice> </xsd:group> <!-- The ontology --> <xsd:element name="Imports"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:anyURI"> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name="Ontology"> <xsd:complexType> <xsd:sequence> <xsd:element ref="ox:Imports" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:Axiom" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="ontologyURI" type="xsd:anyURI"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <!-- Entities --> <xsd:element name="Datatype"> <xsd:complexType> <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> <xsd:attribute name="arity" type="xsd:positiveInteger" use="optional" default="1"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="OWLClass"> <xsd:complexType> <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectProperty"> <xsd:complexType> <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataProperty"> <xsd:complexType> <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="AnnotationProperty"> <xsd:complexType> <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="Individual"> <xsd:complexType> <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:group name="OWLEntity"> <xsd:choice> <xsd:element ref="ox:Datatype"/> <xsd:element ref="ox:OWLClass"/> <xsd:element ref="ox:ObjectProperty"/> <xsd:element ref="ox:DataProperty"/> <xsd:element ref="ox:AnnotationProperty"/> <xsd:element ref="ox:Individual"/> </xsd:choice> </xsd:group> <xsd:element name="Constant"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="datatypeURI" type="xsd:anyURI" use="optional"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <!-- Entity annotations --> <xsd:element name="EntityAnnotation"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <!-- This is the annotation for the axiom --> <xsd:group ref="ox:OWLEntity"/> <xsd:group ref="ox:Annotation" minOccurs="1" maxOccurs="unbounded"/> <!-- This is the annotation for the entity --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <!-- Property expressions --> <xsd:group name="ObjectPropertyExpression"> <xsd:choice> <xsd:element ref="ox:ObjectProperty"/> <xsd:element ref="ox:InverseObjectProperty"/> </xsd:choice> </xsd:group> <xsd:element name="InverseObjectProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:group name="DataPropertyExpression"> <xsd:sequence> <xsd:element ref="ox:DataProperty"/> </xsd:sequence> </xsd:group> <!-- Data ranges --> <xsd:element name="DataComplementOf"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:DataRange"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataOneOf"> <xsd:complexType> <xsd:sequence> <xsd:element ref="ox:Constant" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:simpleType name="FacetType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="length"/> <xsd:enumeration value="minLength"/> <xsd:enumeration value="maxLength"/> <xsd:enumeration value="pattern"/> <xsd:enumeration value="minInclusive"/> <xsd:enumeration value="minExclusive"/> <xsd:enumeration value="maxInclusive"/> <xsd:enumeration value="maxExclusive"/> <xsd:enumeration value="totalDigits"/> <xsd:enumeration value="fractionDigits"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="DatatypeRestriction"> <xsd:complexType> <xsd:sequence> <xsd:element ref="ox:Datatype"/> <xsd:element name="Restriction" minOccurs="1" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element ref="ox:Constant"/> </xsd:sequence> <xsd:attribute name="facet" type="ox:FacetType" use="required"/> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:group name="DataRange"> <xsd:choice> <xsd:element ref="ox:Datatype"/> <xsd:element ref="ox:DataComplementOf"/> <xsd:element ref="ox:DataOneOf"/> <xsd:element ref="ox:DatatypeRestriction"/> </xsd:choice> </xsd:group> <!-- Descriptions --> <xsd:element name="ObjectIntersectionOf"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Description" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectUnionOf"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Description" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectComplementOf"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Description"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectOneOf"> <xsd:complexType> <xsd:sequence> <xsd:element ref="ox:Individual" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectSomeValuesFrom"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:group ref="ox:Description"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectAllValuesFrom"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:group ref="ox:Description"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectExistsSelf"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectHasValue"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:element ref="ox:Individual"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectMinCardinality"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:group ref="ox:Description" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectMaxCardinality"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:group ref="ox:Description" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectExactCardinality"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:group ref="ox:Description" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataSomeValuesFrom"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:group ref="ox:DataRange"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataAllValuesFrom"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:group ref="ox:DataRange"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataHasValue"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:element ref="ox:Constant"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataMinCardinality"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:group ref="ox:DataRange" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataMaxCardinality"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:group ref="ox:DataRange" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataExactCardinality"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:group ref="ox:DataRange" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:group name="Description"> <xsd:choice> <xsd:element ref="ox:OWLClass"/> <xsd:element ref="ox:ObjectIntersectionOf"/> <xsd:element ref="ox:ObjectUnionOf"/> <xsd:element ref="ox:ObjectComplementOf"/> <xsd:element ref="ox:ObjectOneOf"/> <xsd:element ref="ox:ObjectSomeValuesFrom"/> <xsd:element ref="ox:ObjectAllValuesFrom"/> <xsd:element ref="ox:ObjectExistsSelf"/> <xsd:element ref="ox:ObjectHasValue"/> <xsd:element ref="ox:ObjectMinCardinality"/> <xsd:element ref="ox:ObjectMaxCardinality"/> <xsd:element ref="ox:ObjectExactCardinality"/> <xsd:element ref="ox:DataSomeValuesFrom"/> <xsd:element ref="ox:DataAllValuesFrom"/> <xsd:element ref="ox:DataHasValue"/> <xsd:element ref="ox:DataMinCardinality"/> <xsd:element ref="ox:DataMaxCardinality"/> <xsd:element ref="ox:DataExactCardinality"/> </xsd:choice> </xsd:group> <!-- Axioms --> <xsd:element name="SubClassOf"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:Description"/> <!-- This is the subclass --> <xsd:group ref="ox:Description"/> <!-- This is the superclass --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="EquivalentClasses"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:Description" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DisjointClasses"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:Description" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DisjointUnion"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="ox:OWLClass"/> <xsd:group ref="ox:Description" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="SubObjectPropertyOf"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:choice> <!-- This is the subproperty or the property chain --> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:element name="SubObjectPropertyChain"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> </xsd:choice> <xsd:group ref="ox:ObjectPropertyExpression"/> <!-- This is the superproperty --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="EquivalentObjectProperties"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DisjointObjectProperties"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectPropertyDomain"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:group ref="ox:Description"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectPropertyRange"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:group ref="ox:Description"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="InverseObjectProperties"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression" minOccurs="2" maxOccurs="2"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="FunctionalObjectProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="InverseFunctionalObjectProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="SymmetricObjectProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="AsymmetricObjectProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ReflexiveObjectProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="IrreflexiveObjectProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="TransitiveObjectProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="SubDataPropertyOf"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:DataPropertyExpression"/> <!-- This is the subproperty --> <xsd:group ref="ox:DataPropertyExpression"/> <!-- This is the superproperty --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="EquivalentDataProperties"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:DataPropertyExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DisjointDataProperties"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:DataPropertyExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataPropertyDomain"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:group ref="ox:Description"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataPropertyRange"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:group ref="ox:DataRange"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="FunctionalDataProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:DataPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="SameIndividual"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="ox:Individual" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DifferentIndividuals"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="ox:Individual" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ClassAssertion"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:Description"/> <xsd:element ref="ox:Individual"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectPropertyAssertion"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:element ref="ox:Individual"/> <!-- This is the source invididual --> <xsd:element ref="ox:Individual"/> <!-- This is the target individual --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="NegativeObjectPropertyAssertion"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:element ref="ox:Individual"/> <!-- This is the source invididual --> <xsd:element ref="ox:Individual"/> <!-- This is the target individual --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataPropertyAssertion"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:element ref="ox:Individual"/> <!-- This is the source invididual --> <xsd:element ref="ox:Constant"/> <!-- This is the target value --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="NegativeDataPropertyAssertion"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:element ref="ox:Individual"/> <!-- This is the source invididual --> <xsd:element ref="ox:Constant"/> <!-- This is the target value --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="Declaration"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:OWLEntity"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:group name="Axiom"> <xsd:choice> <xsd:element ref="ox:EntityAnnotation"/> <xsd:element ref="ox:SubClassOf"/> <xsd:element ref="ox:EquivalentClasses"/> <xsd:element ref="ox:DisjointClasses"/> <xsd:element ref="ox:DisjointUnion"/> <xsd:element ref="ox:SubObjectPropertyOf"/> <xsd:element ref="ox:EquivalentObjectProperties"/> <xsd:element ref="ox:DisjointObjectProperties"/> <xsd:element ref="ox:ObjectPropertyDomain"/> <xsd:element ref="ox:ObjectPropertyRange"/> <xsd:element ref="ox:InverseObjectProperties"/> <xsd:element ref="ox:FunctionalObjectProperty"/> <xsd:element ref="ox:InverseFunctionalObjectProperty"/> <xsd:element ref="ox:SymmetricObjectProperty"/> <xsd:element ref="ox:AsymmetricObjectProperty"/> <xsd:element ref="ox:ReflexiveObjectProperty"/> <xsd:element ref="ox:IrreflexiveObjectProperty"/> <xsd:element ref="ox:TransitiveObjectProperty"/> <xsd:element ref="ox:SubDataPropertyOf"/> <xsd:element ref="ox:EquivalentDataProperties"/> <xsd:element ref="ox:DisjointDataProperties"/> <xsd:element ref="ox:DataPropertyDomain"/> <xsd:element ref="ox:DataPropertyRange"/> <xsd:element ref="ox:FunctionalDataProperty"/> <xsd:element ref="ox:SameIndividual"/> <xsd:element ref="ox:DifferentIndividuals"/> <xsd:element ref="ox:ClassAssertion"/> <xsd:element ref="ox:ObjectPropertyAssertion"/> <xsd:element ref="ox:NegativeObjectPropertyAssertion"/> <xsd:element ref="ox:DataPropertyAssertion"/> <xsd:element ref="ox:NegativeDataPropertyAssertion"/> <xsd:element ref="ox:Declaration"/> </xsd:choice> </xsd:group> </xsd:schema>
In the EntityAnnotation element the first annotations are annotations on the axiom itself and the second annotations are annotations on the entity. In the SubClassOf element the first description is the subclass and the second is the superclass, similarly for SubObjectPropertyOf and SubDataPropertyOf. For ObjectPropertyAssertion and NegativeObjectPropertyAssertion the first individual is the source and the second is the target.