W3C

OWL 1.12 Web Ontology Language:
XML Serialization

W3C Editor's Draft 0208 April 2008

This version:
http://www.w3.org/2007/OWL/draft/ED-owl11-xml-serialization-20080402/http://www.w3.org/2007/OWL/draft/ED-owl2-xml-serialization-20080408/
Latest editor's draft:
http://www.w3.org/2007/OWL/draft/owl11-xml-serialization/http://www.w3.org/2007/OWL/draft/owl2-xml-serialization/
Previous version:
http://www.w3.org/2007/OWL/draft/ED-owl11-xml-serialization-20080326/http://www.w3.org/2007/OWL/draft/ED-owl11-xml-serialization-20080402/ (color-coded diff)
Authors:
Bernardo Cuenca Grau, TheOxford University
of ManchesterBoris 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 1.12 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 1.12 that exactly mirrors its functional-style syntax and structural 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 6 documents:

  1. Structural Specification and Functional-Style Syntax
  2. Model-Theoretic Semantics
  3. Mapping to RDF Graphs
  4. XML Serialization (this document)
  5. FragmentsProfiles
  6. Primer

These are snapshots of expectedCompatibility with OWL deliverables, for review by1

The Working Group.OWL Working Group face-to-face starts tomorrow morning.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.

Please Comment By 2008-04-032008-05-08

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. 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 this specification, the terminals of the functional-style grammar and the RDF vocabulary will be significantly smaller.

The Web Ontology Language (OWL) 1.12 specification [OWL 1.12 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.

Review comment from BijanParsia 08:31, 14 March 2008 (EDT) I don't think "easily implemented" is the right description. The key isn't easy of implementation (KRSS would probably be better there), but fit with modern XML technology and practices. ( pfps 15:56, 19 March 2008 (EDT) Revised.)The XML syntax can be used when a widely-acceptedweb-based syntax that exactly mirrors the functional-style syntax and structural specification of OWL 1.12 ontologies is needed by tools, such as in the Description Logics Implementors Group (DIG) 2.0 specification [DIG 2.0].

Review comment from BijanParsia 08:31, 14 March 2008 (EDT) I'd make the prior paragraph a temporary editors note. It shouldn't appear in the final spec. ( pfps 15:56, 19 March 2008 (EDT) Revised instead) Review comment from RinkeHoekstra 11:33, 1 April 2008 (EDT)]] Consider rephrasing: two times 'widely needed'The XML syntax for OWL 1.12 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.12 Specification [ OWL 1.1Template:OWL 2 Specification ]in the following way:

Note that there are aspects of OWL 1.12 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.

Review comment from BijanParsia 08:31, 14 March 2008 (EDT) It is very nice to have such a description (except I don't understand "struc spec from dig..."). I'm not sure I can follow it to do my own translation, though. I think having a Relax-NG schema would be good as well. ( pfps In another document?) It might also be smart to point out that Valid by the schema does not mean that its OWL DL 1.1. E.g., the nonstructural restrictions are not captured (and not capturable) by the schema. ( pfps 15:56, 19 March 2008 (EDT) Done) Review comment from Achille 14:51, 18 March 2008 (EDT) +1 for Bijan's comment on stressing that XML schema validation does not mean valid OWL 1.1All 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 [ XMLTemplate:XML Base ]..

The root element of any OWL 1.12 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 [ DIGTemplate: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.12 language. In [ OWL 1.1 Fragments ]Template:OWL 2 Profiles several fragmentsprofiles of OWL 1.12 have been defined. There are no separate schemata for these fragments;profiles; ontologies that can be expressed by the fragment languagesprofiles should be written using the most general schema. Validating whether an ontology belongs to a particular fragmentprofile 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.


Review comment from BijanParsia 08:31, 14 March 2008 (EDT) I think having such schemas, esp. if they were derived from the overall one, would be very valuable! ( pfps yes, but shouldn't this be in a separate note?) 1.1 Issues The major issue to be resolved is exactly what to use asEditor's Note: The namespace for the element names in the syntax. 2 Examples Review comment from RinkeHoekstra 09:29, 2 April 2008 (EDT) I started wondering about this Examples section: how does it relate to the Primer document? That seems to be a more appropriate document for giving examples. Should these examples really be part of the specification? This section presents theXML 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. Review comment from RinkeHoekstra 11:35, 1 April 2008 (EDT)]] It is stated two times that the root element of an 1.1 ontology fileserialization is not finalized. The ox:Ontology element Example: <?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> Review comment from Achille 14:58, 18 March 2008 (EDT) The value of the "schemaLocation" attribute in the previous examplediscussion is incorrect. "schemaLocation" value consists of pairs of namespaceURI and URL location, with at least one white space between the namespaceUIR and its location. In the previous example, xsi:schemaLocation value should be " http://www.w3.org/2006/12/owl11-xml# http://www.w3.org/2006/12/owl11-xml/owl1.1.xsd " ( pfps Fixed, I think) Review comment from Achille 14:58, 18 March 2008 (EDT) The URL " http://www.w3.org/2006/12/owl11-xml/owl1.1.xsd " cannot successfully be resolved ( pfps Fixed, I think) Entities in ontologies can be declared, as follows: Review comment from BijanParsia 08:35, 14 March 2008 (EDT) I think we should be cautious about having Good Practice comments like this.being tracked by [issue 109].


Editor's Note: This advicedocument does not yet address GRDDL integration. This issue is easily rephrased neutrally. ( pfps 16:18, 19 March 2008 (EDT) Made much more neutral) Example: <ox:Declaration> <ox:OWLClass ox:URI="#animal"/> </ox:Declaration> <ox:Declaration> <ox:ObjectProperty ox:URI="#eats"/> </ox:Declaration>being tracked by [issue 97].

Here areis a couple of basic axioms about properties. Example: <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 axiomscomplete, if toy, example of a complete OWL 1.1 allowontology serialized in accordance with this specification. For more examples (covering the constructionrest 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 partsthe features of OWL), please consult the object. Example: <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,Primer 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. Example: <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. Example: <ox:SubClassOf> <ox:OWLClass ox:URI="#bicycle"/> <ox:OWLClass ox:URI="#vehicle"/> </ox:SubClassOf> <ox:EquivalentClasses> <ox:OWLClass ox:URI="#bus_driver"/> <ox:ObjectIntersectionOf>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/2007/OWL/wiki/OWL_XML_Schema# http://www.w3.org/2007/OWL/wiki/OWL_XML_Schema"
  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="#person"/> <ox:ObjectSomeValuesFrom>ox:URI="#animal"/>
     </ox:Declaration>
     <ox:Declaration>
           <ox:ObjectProperty  ox:URI="#drives"/> <ox:OWLClass ox:URI="#bus"/> </ox:ObjectSomeValuesFrom> </ox:ObjectIntersectionOf> </ox:EquivalentClasses>ox:URI="#eats"/>
     </ox:Declaration>

     <ox:SubClassOf>
           <ox:OWLClass  ox:URI="#white_van_man"/>ox:URI="#animal"/>
           <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. Example: <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. Example: <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> Review comment from BijanParsia 08:35, 14 March 2008 (EDT) Please use a default namespace or at least a much nicer prefix than owl11xml. One of the *advantages* of this syntax is that you *can* kill the explicit prefixes. These examples are illegible as is. ( pfps 16:18, 19 March 2008 (EDT) Used ox instead.) Also, given the primer, do we need these examples at all? ( pfps I think that something is needed here.) 3</ox:Ontology>

2 The XML Schema

 Review comment from Achille 15:19, 18 March 2008 (EDT) Very useful comments do not show up in the "view" mode (e.g. the difference between the two annotations in EntityAnnotation). They only show up in the edit mode as XML comments (<!-- comment -->) 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. Review comment from Alan 16 March 2008 (EDT) Prefix in schema: owl11xml: doesn't match one in text: ox: pfps 14:12, 26 March 2008 (EDT) Fixed Review comment from RinkeHoekstra 09:31, 2 April 2008 (EDT) For some reason I cannot print this code<xsd:schema 
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:ox=" http://www.w3.org/ns/owl11-xml#http://www.w3.org/ns/owl2-xml#"
  targetNamespace=" http://www.w3.org/ns/owl11-xml#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.

43 References

[OWL 1.1 Specification]OWL 1.12 Specification
OWL 2 Web Ontology Language:Structural Specification and Functional-Style Syntax Boris Motik, Peter F. Patel-Schneider, Ian Horrocks. W3C Editor's Draft, 0208 April 2008, http://www.w3.org/2007/OWL/draft/ED-owl11-syntax-20080402/http://www.w3.org/2007/OWL/draft/ED-owl2-syntax-20080408/. Latest version available at http://www.w3.org/2007/OWL/draft/owl11-syntax/http://www.w3.org/2007/OWL/draft/owl2-syntax/.
[OWL 1.1 Tractable Fragments]OWL 1.12 Profiles
OWL 2 Web Ontology Language: Tractable Fragments .Language:Profiles Bernardo Cuenca Grau, ed., 2006. [XML Base]Boris Motik, Zhe Wu, Achille Fokoue, Carsten Lutz. W3C Editor's Draft, 08 April 2008, http://www.w3.org/2007/OWL/draft/ED-owl2-profiles-20080408/. Latest version available at http://www.w3.org/2007/OWL/draft/owl2-profiles/.
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
DIG 2.0: The DIG Description Logic Interface: Document Index. Sean Bechhofer, ed., DIG Working Group Note, September 2006. http://dig.cs.manchester.ac.uk/