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 intends to make OWL 2 be a superset of OWL 1, except for some small bug fixes and changes to the formal semantics of annotations. This means that OWL 2 will be backward compatible, and creators of OWL 1 documents need only move to OWL 2 when they want to make use of OWL 2 features. More details and advice concerning migration from OWL 1 to OWL 2 will be in future drafts.
The OWL Working Group seeks public feedback on this First Public Working Draft. 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. You may also wish to check the Wiki Version of this document for internal-review comments and changes being drafted which may address your concerns.
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 |
Editor's Note: At the second F2F meeting, the Working Groupd has decided to simplify the vocabulary of OWL ontologies. In future versions of this specification, the terminals of the functional-style grammar and the RDF vocabulary will be significantly smaller.
The Web Ontology Language (OWL) 2 specification [OWL 2 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 web-based syntax that exactly mirrors the functional-style syntax and structural specification of OWL 2 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 2 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 2 Specification [OWL 2 Specification] in the following way:
Note that there are aspects of OWL 2 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 2 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 2 language. In [OWL 2 Profiles] several profiles of OWL 2 have been defined. There are no separate schemata for these profiles; ontologies that can be expressed by the profiles should be written using the most general schema. Validating whether an ontology belongs to a particular profile 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.
Editor's Note: The namespace for the XML serialization is not finalized. The discussion is being tracked by [issue 109].
Editor's Note: This document does not yet address GRDDL integration. This issue is being tracked by [issue 97].
Here is a complete, if toy, example of a complete OWL ontology serialized in accordance with this specification. For more examples (covering the rest of the features of OWL), please consult the Primer and the structural Syntax document.
<?xml version="1.0" encoding="UTF-8"?> <ox:Ontology xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/ns/owl2-xml http://www.w3.org/ns/owl2-xml/live-from-wiki.xsd" xmlns:ox="http://www.w3.org/ns/owl2-xml" xml:base="http://example.com/myOntology" ox:ontologyURI="http://example.com/myOntology"> <ox:Imports ox:URI="http://example.com/someOtherOntology"/> <ox:Declaration> <ox:OWLClass ox:URI="#animal"/> </ox:Declaration> <ox:Declaration> <ox:ObjectProperty ox:URI="#eats"/> </ox:Declaration> <ox:SubClassOf> <ox:OWLClass ox:URI="#animal"/> <ox:ObjectAllValuesFrom> <ox:ObjectProperty ox:URI="#reads"/> <ox:OWLClass ox:URI="#tabloid"/> </ox:ObjectAllValuesFrom> </ox:SubClassOf> </ox:Ontology>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ox="http://www.w3.org/ns/owl2-xml" targetNamespace="http://www.w3.org/ns/owl2-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.