OWL XML Schema

From OWL

Jump to: navigation, search
<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"/>

<!-- The ontology -->
  
<xsd:element 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: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" use="optional"/>
    <xsd:attribute name="versionURI" type="xsd:anyURI" use="optional"/>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

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

<xsd:group name="Entity">
  <xsd:choice>
    <xsd:element 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:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

<xsd:element 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: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:element 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="Literal">
 <xsd:complexType>
   <xsd:simpleContent>
     <xsd:extension base="xsd:string">
       <xsd:attribute name="datatypeURI" type="xsd:anyURI"/>
       <xsd:attributeGroup ref="xml:specialAttrs"/>
     </xsd:extension>
   </xsd:simpleContent>
 </xsd:complexType>
</xsd:element>

<!-- Declarations -->

<xsd:element name="Declaration">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/>
      <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: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:Literal" minOccurs="1" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

<xsd:element name="DatatypeRestriction">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element ref="ox:Datatype"/>
      <xsd:element name="FacetRestriction" minOccurs="1" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element ref="ox:Literal"/>
          </xsd:sequence>
          <xsd:attribute name="facet" type="xsd:anyURI" use="required"/>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

<!-- Class expressions -->

<xsd:group name="ClassExpression">
  <xsd:choice>
    <xsd:element ref="ox:Class"/>
    <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: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>

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

<xsd:element name="ObjectOneOf">
  <xsd:complexType>
    <xsd:sequence>
      <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: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:ClassExpression"/>
    </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:group ref="ox:Individual"/>
    </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="ObjectMinCardinality">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:group ref="ox:ObjectPropertyExpression"/>
      <xsd:group 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: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: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" 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" 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: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="Axiom">
  <xsd:choice>
    <xsd:element ref="ox:Declaration"/>
    <xsd:group ref="ox:ClassAxiom"/>
    <xsd:group ref="ox:ObjectPropertyAxiom"/>
    <xsd:group ref="ox:DataPropertyAxiom"/>
    <xsd:element ref="ox:HasKey"/>
    <xsd:group ref="ox:Assertion"/>
    <xsd:element ref="ox:EntityAnnotation"/>
    <xsd:element ref="ox:AnonymousIndividualAnnotation"/>
  </xsd:choice>
</xsd:group>

<!-- Class expression axioms -->

<xsd:group name="ClassAxiom">
  <xsd:choice>
    <xsd:element ref="ox:SubClassOf"/>
    <xsd:element ref="ox:EquivalentClasses"/>
    <xsd:element ref="ox:DisjointClasses"/>
    <xsd:element ref="ox:DisjointUnion"/>
  </xsd:choice>
</xsd:group>

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

<!-- Annotations  -->

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

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

<xsd:element 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:Annotation"/>
     <xsd:element ref="ox:Label"/>
     <xsd:element ref="ox:Comment"/>
     <xsd:element ref="ox:Deprecation"/>
  </xsd:choice>
</xsd:group>

<!-- Annotation axioms -->

<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:Entity"/>
      <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>

<xsd:element name="AnonymousIndividualAnnotation">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <!-- This is the annotation for the axiom -->
      <xsd:element ref="ox:AnonymousIndividual"/>
      <xsd:group ref="ox:Annotation" minOccurs="1" maxOccurs="unbounded"/> <!-- This is the annotation for the anonymous individual -->
    </xsd:sequence>
    <xsd:attributeGroup ref="xml:specialAttrs"/>
  </xsd:complexType>
</xsd:element>

</xsd:schema>
Personal tools