W3C

OWL 2 Web Ontology Language:
XML Serialization

W3C Editor's Draft 11 April22 September 2008

This version:
http://www.w3.org/2007/OWL/draft/ED-owl2-xml-serialization-20080411/http://www.w3.org/2007/OWL/draft/ED-owl2-xml-serialization-20080922/
Latest editor's draft:
http://www.w3.org/2007/OWL/draft/owl2-xml-serialization/
Previous version:
http://www.w3.org/2007/OWL/draft/ED-owl2-xml-serialization-20080408/http://www.w3.org/2007/OWL/draft/ED-owl2-xml-serialization-20080411/ (color-coded diff)
Authors:
Bernardo Cuenca Grau, Oxford University
Boris Motik, Oxford University
Peter Patel-Schneider, Bell Labs Research
Contributors:
Sean Bechhofer, The University of Manchester
Ian Horrocks, Oxford University
Bijan Parsia, The University of Manchester


Abstract

OWL 2 extends the W3C OWL Web Ontology Language with a small but useful set of features that have been requested by users, for which effective reasoning algorithms are now available, and that OWL tool developers are willing to support. The new features include extra syntactic sugar, additional property and qualified cardinality constructors, extended datatype support, simple metamodelling, and extended annotations.
This document specifies an XML syntax for OWL 2 that exactlymirrors its functional-style syntax andstructural specification. An XML schema defines this syntax and is available as a separate document, as well as being included here.

Status of this Document

May Be Superseded

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 68 documents:

  1. Structural Specification and Functional-Style Syntax
  2. Model-Theoretic Semantics
  3. RDF-Based Semantics
  4. Mapping to RDF Graphs
  5. XML Serialization (this document)
  6. Profiles
  7. Primer Compatibility with OWL 1 The OWL Working Group intends to make OWL 2 beConformance and Test Cases
  8. A superset of OWL 1, exceptDatatype 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.Internationalized Text

Please Comment By 11 May 2008ASAP

The OWL Working Group seeks public feedback on this First Publicthese Working Draft.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. 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.

No Endorsement

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.

Patents

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


1 Overview Editor's Note: At the second F2F meeting, the Working Groupd has decided to simplify the vocabulary of OWL ontologies. In future versions of(Normative)

This specification,document defines an XML syntax for OWL 2, which mirrors the terminalsstructural specification of the functional-style grammar and the RDF vocabulary will be significantly smaller. The Web Ontology Language (OWL)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 syntaxitalicized keywords MUST, MUST NOT, SHOULD, SHOULD NOT, and structural specificationMAY specify certain aspects of the normative behavior of OWL 2 ontologies is needed bytools, suchand are interpreted as specified in the Description Logics Implementors Group (DIG) 2.0 specificationRFC 2119 [ DIG 2.0RFC 2119].

The XMLsyntax for OWL 2is defined asby means of an XML schema [XML Schema], andwhich is available as a separate document , as well as being includedin this document. ItSection 2. The XML schema has been obtained by a straightforward translation of the structural specification fromof the OWL 2 Specification [OWL 2 Specification] in the following way:

The local parts of the names used in anthe XML Schema. All URIs in an ontologySchema are assumed to be relative tothe xml:basesame as the names of their corresponding UML classes.

The ontology document. During parsing, all URIs should be resolvedXML schema thus captures the structure of OWL 2 entities, expressions, and axioms. Certain global conditions on OWL 2 ontologies, such as specifiedthe ones described in Sections 5.9.1 and 10 of the XML BaseOWL 2 Specification [OWL 2 Specification], cannot be captured in an XML Baseschema. Tools parsing OWL 2 ontologies in this syntax need to additionally implement these global conditions.

As the XML syntax corresponds most closely to the structural specification of OWL 2 it is fully typed. It thus differs somewhat from the functional-style syntax of OWL 2 [OWL 2 Specification]. For example, whereas the root elementfunctional-style syntax uses a nonterminal SomeValuesFrom for existential restrictions on both the object and data properties, the XML syntax provides two elements ox:ObjectSomeValuesFrom and ox:DataSomeValuesFrom.

Each axiom in the OWL 2 XML syntax contains complete information about the type of anyall the entities in it. Therefore the OWL 2 XML Syntax can be parsed more easily than by using the canonical parsing process from Section 5.9.3 of OWL 2 Specification [OWL 2 Specification]. Nonetheless, each OWL 2 ontology filewritten in thisthe OWL 2 XML syntax shouldMUST satisfy the requirements on declarations and typing from Section 5.9 of the OWL 2 Specification [OWL 2 Specification] that is, declarations for ontology entities MUST be ox:Ontology . However, other specifications are free to reuse otherpresent in the import closure of the ontology as required even if the type of ontology elements can be inferred from the schema. For example,axioms.

Relative URIs in an OWL 2 ontology written in XML syntax MUST be resolved as specified in the DIG 2.0XML Base specification [ DIG 2.0 ] can reuseXML Base]. If present, the elements andxml:base on the ox:Ontology element groups correspondingMAY, but need not, be equal to axioms, descriptions,the ontology and/or the version URI of the ontology. The ontology URI and entities.the version URI, even if present, do not participate in the resolution of relative URIs. The expansion of relative URIs using xml:base is handled at the XML level during parsing, and is thus completely independent of the ontology and version URIs of the ontology being parsed.

The XML schema presented in this documenthere covers the entire OWL 2 language.structural specification, and thus includes all the features available in [OWL 2 profiles ] several profiles of[OWL 2 have been defined.Profiles]. There are no separate schemata for these profiles;profiles that is, ontologies that can be expressed by the profiles shouldMUST 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 whosemechanisms, so the specification of such mechanisms is beyond the scope of this document.

Editor's Note: The namespace for the XML serialization is not finalized. The discussion is being tracked byOWL WG [issue 109 ]. Editor's Note: This document does not yet address97] involves GRDDL integration.transforms from the XML serialization. Its resolution may affect this issue is being tracked by [ issue 97 ]. Heredocument.

2 Example Ontology (Informative)

The following is a complete, if toy,an example of a completean OWL 2 ontology serializedwritten in accordance with this specification. ForXML syntax. More examples (covering the rest of the features of OWL), please consultcan be found in the OWL 2 Primer and the structural Syntax document.[OWL 2 Primer].

<?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:Import>http://example.com/someOtherOntology"</ox:Import>

    <ox:Declaration>
       <ox:OWLClass ox:URI="#animal"/>
    </ox:Declaration>
    <ox:Declaration>
       <ox:OWLClass ox:URI="#tabloid"/>
    </ox:Declaration>
    <ox:Declaration>
       <ox:ObjectProperty ox:URI="#eats"/>
    </ox:Declaration>
    <ox:Declaration>
       <ox:ObjectProperty ox:URI="#reads"/>
    </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>

23 The XML Schema (Normative)

Editor's Note: OWL WG [issue 109] involves the namespace for the XML serialization.
<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">name="Import">
  <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"ref="ox:Import" 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"/>type="xsd:anyURI" use="optional"/>
    <xsd:attribute name="versionURI" type="xsd:anyURI" use="optional"/>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

<!--  EntitiesEntities, anonymous individuals, and literals -->

<xsd:group name="Entity">
  <xsd:choice>
    <xsd:element  name="Datatype">ref="ox:Class"/>
    <xsd:element ref="ox:Datatype"/>
    <xsd:element ref="ox:ObjectProperty"/>
    <xsd:element ref="ox:DataProperty"/>
    <xsd:element ref="ox:AnnotationProperty"/>
    <xsd:element ref="ox:NamedIndividual"/>
  </xsd:choice>
</xsd:group>

<xsd:element name="Class">
  <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">name="Datatype">
  <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<xsd:group name="Individual">
  <xsd:choice>
    <xsd:element ref="ox:NamedIndividual"/>
    <xsd:element ref="ox:AnonymousIndividual"/>
  </xsd:choice>
</xsd:group>
  
<xsd:element name="NamedIndividual">
  <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>name="AnonymousIndividual">
  <xsd:complexType>
    <xsd:attribute name="nodeID" type="xsd:NCName" use="required"/>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

<xsd:element  name="Constant">name="Literal">
 <xsd:complexType>
   <xsd:simpleContent>
     <xsd:extension base="xsd:string">
       <xsd:attribute name="datatypeURI"  type="xsd:anyURI" use="optional"/>type="xsd:anyURI"/>
       <xsd:attributeGroup ref="xml:specialAttrs"/>
     </xsd:extension>
   </xsd:simpleContent>
 </xsd:complexType>
</xsd:element>

<!--  Entity annotationsDeclarations -->

<xsd:element  name="EntityAnnotation">name="Declaration">
  <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"minOccurs="0" maxOccurs="unbounded"/>
       <!-- This is the annotation for the entity --><xsd:group ref="ox:Entity"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>
  
<!-- Object 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:element ref="ox:ObjectProperty"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

<!-- Data property expressions -->

<xsd:group name="DataPropertyExpression">
  <xsd:sequence>
    <xsd:element ref="ox:DataProperty"/>
  </xsd:sequence>
</xsd:group>

<!-- Data ranges -->

<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>

<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"ref="ox:Literal" 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"name="FacetRestriction" minOccurs="1" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element  ref="ox:Constant"/>ref="ox:Literal"/>
          </xsd:sequence>
          <xsd:attribute name="facet"  type="ox:FacetType"type="xsd:string" use="required"/>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

<!-- Class expressions -->

<xsd:group  name="DataRange">name="ClassExpression">
  <xsd:choice>
    <xsd:element  ref="ox:Datatype"/>ref="ox:Class"/>
    <xsd:element  ref="ox:DataComplementOf"/>ref="ox:ObjectIntersectionOf"/>
    <xsd:element  ref="ox:DataOneOf"/>ref="ox:ObjectUnionOf"/>
    <xsd:element  ref="ox:DatatypeRestriction"/>ref="ox:ObjectComplementOf"/>
    <xsd:element ref="ox:ObjectOneOf"/>
    <xsd:element ref="ox:ObjectSomeValuesFrom"/>
    <xsd:element ref="ox:ObjectAllValuesFrom"/>
    <xsd:element ref="ox:ObjectHasValue"/>
    <xsd:element ref="ox:ObjectExistsSelf"/>
    <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>

 <!-- Descriptions --><xsd:element name="ObjectIntersectionOf">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:group  ref="ox:Description"ref="ox:ClassExpression" 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"ref="ox:ClassExpression" 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"/>ref="ox:ClassExpression"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

<xsd:element name="ObjectOneOf">
  <xsd:complexType>
    <xsd:sequence>
       <xsd:element<xsd:group 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"/>ref="ox:ClassExpression"/>
    </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"/>ref="ox:ClassExpression"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

<xsd:element  name="ObjectExistsSelf">name="ObjectHasValue">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:group ref="ox:ObjectPropertyExpression"/>
      <xsd:group ref="ox:Individual"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

<xsd:element  name="ObjectHasValue">name="ObjectExistsSelf">
  <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"ref="ox:ClassExpression" 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"ref="ox:ClassExpression" 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"ref="ox:ClassExpression" 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"/>ref="ox:DataPropertyExpression" minOccurs="1" maxOccurs="unbounded"/>
      <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"/>ref="ox:DataPropertyExpression" minOccurs="1" maxOccurs="unbounded"/>
      <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"/>ref="ox:Literal"/>
    </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>

<!-- Axioms -->

<xsd:group  name="Description">name="Axiom">
  <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"/>ref="ox:Declaration"/>
    <xsd:group ref="ox:ClassAxiom"/>
    <xsd:group ref="ox:ObjectPropertyAxiom"/>
    <xsd:group ref="ox:DataPropertyAxiom"/>
    <xsd:element  ref="ox:ObjectExactCardinality"/>ref="ox:HasKey"/>
    <xsd:group ref="ox:Assertion"/>
    <xsd:element  ref="ox:DataSomeValuesFrom"/>ref="ox:EntityAnnotation"/>
    <xsd:element  ref="ox:DataAllValuesFrom"/>ref="ox:AnonymousIndividualAnnotation"/>
  </xsd:choice>
</xsd:group>

<!-- Class expression axioms -->

<xsd:group name="ClassAxiom">
  <xsd:choice>
    <xsd:element  ref="ox:DataHasValue"/>ref="ox:SubClassOf"/>
    <xsd:element  ref="ox:DataMinCardinality"/>ref="ox:EquivalentClasses"/>
    <xsd:element  ref="ox:DataMaxCardinality"/>ref="ox:DisjointClasses"/>
    <xsd:element  ref="ox:DataExactCardinality"/>ref="ox:DisjointUnion"/>
  </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"/>ref="ox:ClassExpression"/> <!-- This is the  subclasssubexpression -->
      <xsd:group  ref="ox:Description"/>ref="ox:ClassExpression"/>  <!-- This is the  superclasssuperexpression -->
    </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"ref="ox:ClassExpression" 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"ref="ox:ClassExpression" 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"/>ref="ox:Class"/>
      <xsd:group  ref="ox:Description"ref="ox:ClassExpression" minOccurs="2" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

<!-- Object property axioms -->

<xsd:group name="ObjectPropertyAxiom">
  <xsd:choice>
    <xsd:element ref="ox:SubObjectPropertyOf"/>
    <xsd:element ref="ox:EquivalentObjectProperties"/>
    <xsd:element ref="ox:DisjointObjectProperties"/>
    <xsd:element ref="ox:InverseObjectProperties"/>
    <xsd:element ref="ox:ObjectPropertyDomain"/>
    <xsd:element ref="ox:ObjectPropertyRange"/>
    <xsd:element ref="ox:FunctionalObjectProperty"/>
    <xsd:element ref="ox:InverseFunctionalObjectProperty"/>
    <xsd:element ref="ox:ReflexiveObjectProperty"/>
    <xsd:element ref="ox:IrreflexiveObjectProperty"/>
    <xsd:element ref="ox:SymmetricObjectProperty"/>
    <xsd:element ref="ox:AsymmetricObjectProperty"/>
    <xsd:element ref="ox:TransitiveObjectProperty"/>
  </xsd:choice>
</xsd:group>

<xsd:element name="SubObjectPropertyOf">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:choice> <!-- This is the subproperty expression or the property chain -->
        <xsd:group ref="ox:ObjectPropertyExpression"/>
        <xsd:element  name="SubObjectPropertyChain">name="PropertyChain">
          <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 expression -->  
    </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"/>ref="ox:ClassExpression"/>
    </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"/>ref="ox:ClassExpression"/>
    </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">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="AsymmetricObjectProperty">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="ReflexiveObjectProperty">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="IrreflexiveObjectProperty">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="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>

<!-- Data property axioms -->

<xsd:group name="DataPropertyAxiom">
  <xsd:choice>
    <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:choice>
</xsd:group>

<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 expression -->
      <xsd:group ref="ox:DataPropertyExpression"/>  <!-- This is the superproperty expression -->
    </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"/>ref="ox:ClassExpression"/>
    </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>

<!-- Key axioms -->

<xsd:element  name="SameIndividual">name="HasKey">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:group ref="ox:ClassExpression"/>
      <xsd:choice minOccurs="1" maxOccurs="unbounded">
        <xsd:group ref="ox:ObjectPropertyExpression"/>
        <xsd:group ref="ox:DataPropertyExpression"/>
      </xsd:choice>
    </xsd:sequence>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

<!-- Assertions -->

<xsd:group name="Assertion">
  <xsd:choice>
    <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:choice>
</xsd:group> 

<xsd:element name="SameIndividual">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:group 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<xsd:group 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:elementref="ox:ClassExpression"/>
      <xsd:group 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<xsd:group ref="ox:Individual"/> <!-- This is the source invididual  -->
       <xsd:element<xsd:group 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<xsd:group ref="ox:Individual"/> <!-- This is the source invididual  -->
       <xsd:element<xsd:group 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<xsd:group ref="ox:Individual"/> <!-- This is the source invididual  -->
      <xsd:element  ref="ox:Constant"/>ref="ox:Literal"/> <!--  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<xsd:group ref="ox:Individual"/> <!-- This is the source invididual  -->
      <xsd:element  ref="ox:Constant"/>ref="ox:Literal"/> <!--  This is the target value -->
    </xsd:sequence>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

<!-- Annotations  -->

<xsd:element  name="Declaration">name="Annotation">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element ref="ox:AnnotationProperty"/>
      <xsd:choice>
        <xsd:group  ref="ox:OWLEntity"/>ref="ox:Entity"/>
        <xsd:element ref="ox:AnonymousIndividual"/>
        <xsd:element ref="ox:Literal"/>
      </xsd:choice>
    </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"/>name="Label">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element  ref="ox:SameIndividual"/>ref="ox:Literal"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

<xsd:element  ref="ox:DifferentIndividuals"/>name="Comment">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element  ref="ox:ClassAssertion"/>ref="ox:Literal"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

<xsd:element  ref="ox:ObjectPropertyAssertion"/>name="Deprecation">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

<xsd:group name="Annotation">
  <xsd:choice>
     <xsd:element  ref="ox:NegativeObjectPropertyAssertion"/>ref="ox:Annotation"/>
     <xsd:element  ref="ox:DataPropertyAssertion"/>ref="ox:Label"/>
     <xsd:element  ref="ox:NegativeDataPropertyAssertion"/>ref="ox:Comment"/>
     <xsd:element  ref="ox:Declaration"/>ref="ox:Deprecation"/>
  </xsd:choice>
</xsd:group>

 </xsd:schema> In the EntityAnnotation element<!-- Annotation axioms -->

<xsd:element name="EntityAnnotation">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <!-- This is the  first annotations are annotations onannotation for the axiom  itself and the second annotations are annotations on the entity. In the SubClassOf element the first description-->
      <xsd:group ref="ox:Entity"/>
      <xsd:group ref="ox:Annotation" minOccurs="1" maxOccurs="unbounded"/> <!-- This is the  subclass andannotation for the  secondentity -->
    </xsd:sequence>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

<xsd:element name="AnonymousIndividualAnnotation">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <!-- This is the  superclass, similarly for SubObjectPropertyOf and SubDataPropertyOf .annotation for  ObjectPropertyAssertion and NegativeObjectPropertyAssertionthe  first individualaxiom -->
      <xsd:element ref="ox:AnonymousIndividual"/>
      <xsd:group ref="ox:Annotation" minOccurs="1" maxOccurs="unbounded"/> <!-- This is the  source and the second isannotation for the  target. 3anonymous individual -->
    </xsd:sequence>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

</xsd:schema>

4 References

[OWL 2 Primer]
OWL 2 SpecificationWeb Ontology Language: Primer. Bijan Parsia and Peter F. Patel-Schneider, eds., 2008.
[OWL 2 Specification]
OWL 2 Web Ontology Language:Structural Specification and Functional-Style Syntax Boris Motik, Peter F. Patel-Schneider, Ian Horrocks. W3C Editor's Draft, 11 April22 September 2008, http://www.w3.org/2007/OWL/draft/ED-owl2-syntax-20080411/http://www.w3.org/2007/OWL/draft/ED-owl2-syntax-20080922/. Latest version available at http://www.w3.org/2007/OWL/draft/owl2-syntax/.
OWL[OWL 2 ProfilesProfiles]
OWL 2 Web Ontology Language:Profiles Bernardo Cuenca Grau, Boris Motik, Zhe Wu, Achille Fokoue, Carsten Lutz. W3C Editor's Draft, 11 April22 September 2008, http://www.w3.org/2007/OWL/draft/ED-owl2-profiles-20080411/http://www.w3.org/2007/OWL/draft/ED-owl2-profiles-20080922/. Latest version available at http://www.w3.org/2007/OWL/draft/owl2-profiles/.
XML Base[XML Base]
XML Base. Jonathan Marsh, ed. W3C Recommendation 27 June 2001.
http://www.w3.org/TR/xmlbase/ XML Schema[XML Schema]
XML Schema Part 1: Structures Second Edition. Henry S. Thompson, David Beech, Murray Maloney, and Noah Mendelsohn, eds. W3C Recommendation 28 October 2004.
http://www.w3.org/TR/xmlschema-1/ DIG 2.0 DIG 2.0: The DIG Description Logic Interface: Document Index[RFC 2119]
RFC 2119: Key words for use in RFCs to Indicate Requirement Levels. Sean Bechhofer, ed., DIGNetwork Working Group Note, September 2006. http://dig.cs.manchester.ac.uk/Group, S. Bradner. Internet Best Current Practice, March 1997.