Copyright © 2008 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This document is being published as one of a set of 68 documents:
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.
Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
Contents |
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.
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>
<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:elementname="Annotation"><xsd:complexType><xsd:sequence><xsd:elementref="ox:AnnotationProperty"/><xsd:choice><xsd:elementref="ox:Constant"/><xsd:groupref="ox:OWLEntity"/></xsd:choice></xsd:sequence><xsd:attributeGroupref="xml:specialAttrs"/></xsd:complexType></xsd:element><xsd:elementname="Label"><xsd:complexType><xsd:choice><xsd:elementref="ox:Constant"/><xsd:groupref="ox:OWLEntity"/></xsd:choice><xsd:attributeGroupref="xml:specialAttrs"/></xsd:complexType></xsd:element><xsd:elementname="Comment"><xsd:complexType><xsd:choice><xsd:elementref="ox:Constant"/><xsd:groupref="ox:OWLEntity"/></xsd:choice><xsd:attributeGroupref="xml:specialAttrs"/></xsd:complexType></xsd:element><xsd:groupname="Annotation"><xsd:choice><xsd:elementref="ox:Annotation"/><xsd:elementref="ox:Label"/><xsd:elementref="ox:Comment"/></xsd:choice></xsd:group><!--The ontology --> <xsd:elementname="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:elementref="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:elementname="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:attributename="arity"type="xsd:positiveInteger"use="optional"default="1"/><xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:elementname="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:groupname="OWLEntity"><xsd:choice><xsd:elementref="ox:Datatype"/><xsd:elementref="ox:OWLClass"/><xsd:elementref="ox:ObjectProperty"/><xsd:elementref="ox:DataProperty"/><xsd:elementref="ox:AnnotationProperty"/><xsd:elementref="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:elementname="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> <!--EntityannotationsDeclarations --> <xsd:elementname="EntityAnnotation">name="Declaration"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation"minOccurs="0"maxOccurs="unbounded"/><!--Thisistheannotationfortheaxiom--><xsd:groupref="ox:OWLEntity"/><xsd:groupref="ox:Annotation"minOccurs="1"minOccurs="0" maxOccurs="unbounded"/><!--Thisistheannotationfortheentity--><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:groupref="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:elementref="ox:Constant"ref="ox:Literal" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element><xsd:simpleTypename="FacetType"><xsd:restrictionbase="xsd:string"><xsd:enumerationvalue="length"/><xsd:enumerationvalue="minLength"/><xsd:enumerationvalue="maxLength"/><xsd:enumerationvalue="pattern"/><xsd:enumerationvalue="minInclusive"/><xsd:enumerationvalue="minExclusive"/><xsd:enumerationvalue="maxInclusive"/><xsd:enumerationvalue="maxExclusive"/><xsd:enumerationvalue="totalDigits"/><xsd:enumerationvalue="fractionDigits"/></xsd:restriction></xsd:simpleType><xsd:element name="DatatypeRestriction"> <xsd:complexType> <xsd:sequence> <xsd:element ref="ox:Datatype"/> <xsd:elementname="Restriction"name="FacetRestriction" minOccurs="1" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:elementref="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:groupname="DataRange">name="ClassExpression"> <xsd:choice> <xsd:elementref="ox:Datatype"/>ref="ox:Class"/> <xsd:elementref="ox:DataComplementOf"/>ref="ox:ObjectIntersectionOf"/> <xsd:elementref="ox:DataOneOf"/>ref="ox:ObjectUnionOf"/> <xsd:elementref="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:groupref="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:groupref="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:groupref="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:groupref="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:groupref="ox:Description"/>ref="ox:ClassExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:elementname="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:elementname="ObjectHasValue">name="ObjectExistsSelf"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression"/><xsd:elementref="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:groupref="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:groupref="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:groupref="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:groupref="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:groupref="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:elementref="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:groupname="Description">name="Axiom"> <xsd:choice> <xsd:elementref="ox:OWLClass"/><xsd:elementref="ox:ObjectIntersectionOf"/><xsd:elementref="ox:ObjectUnionOf"/><xsd:elementref="ox:ObjectComplementOf"/><xsd:elementref="ox:ObjectOneOf"/><xsd:elementref="ox:ObjectSomeValuesFrom"/><xsd:elementref="ox:ObjectAllValuesFrom"/><xsd:elementref="ox:ObjectExistsSelf"/><xsd:elementref="ox:ObjectHasValue"/><xsd:elementref="ox:ObjectMinCardinality"/><xsd:elementref="ox:ObjectMaxCardinality"/>ref="ox:Declaration"/> <xsd:group ref="ox:ClassAxiom"/> <xsd:group ref="ox:ObjectPropertyAxiom"/> <xsd:group ref="ox:DataPropertyAxiom"/> <xsd:elementref="ox:ObjectExactCardinality"/>ref="ox:HasKey"/> <xsd:group ref="ox:Assertion"/> <xsd:elementref="ox:DataSomeValuesFrom"/>ref="ox:EntityAnnotation"/> <xsd:elementref="ox:DataAllValuesFrom"/>ref="ox:AnonymousIndividualAnnotation"/> </xsd:choice> </xsd:group> <!-- Class expression axioms --> <xsd:group name="ClassAxiom"> <xsd:choice> <xsd:elementref="ox:DataHasValue"/>ref="ox:SubClassOf"/> <xsd:elementref="ox:DataMinCardinality"/>ref="ox:EquivalentClasses"/> <xsd:elementref="ox:DataMaxCardinality"/>ref="ox:DisjointClasses"/> <xsd:elementref="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:groupref="ox:Description"/>ref="ox:ClassExpression"/> <!-- This is thesubclasssubexpression --> <xsd:groupref="ox:Description"/>ref="ox:ClassExpression"/> <!-- This is thesuperclasssuperexpression --> </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:groupref="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:groupref="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:elementref="ox:OWLClass"/>ref="ox:Class"/> <xsd:groupref="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:elementname="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:groupref="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:groupref="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:elementname="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:elementname="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:elementname="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:elementname="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:groupref="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:elementname="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:groupref="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:elementref="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:elementref="ox:Constant"/>ref="ox:Literal"/> <!-- This is the target value --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <!-- Annotations --> <xsd:elementname="Declaration">name="Annotation"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="ox:AnnotationProperty"/> <xsd:choice> <xsd:groupref="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:groupname="Axiom"><xsd:choice><xsd:elementref="ox:EntityAnnotation"/><xsd:elementref="ox:SubClassOf"/><xsd:elementref="ox:EquivalentClasses"/><xsd:elementref="ox:DisjointClasses"/><xsd:elementref="ox:DisjointUnion"/><xsd:elementref="ox:SubObjectPropertyOf"/><xsd:elementref="ox:EquivalentObjectProperties"/><xsd:elementref="ox:DisjointObjectProperties"/><xsd:elementref="ox:ObjectPropertyDomain"/><xsd:elementref="ox:ObjectPropertyRange"/><xsd:elementref="ox:InverseObjectProperties"/><xsd:elementref="ox:FunctionalObjectProperty"/><xsd:elementref="ox:InverseFunctionalObjectProperty"/><xsd:elementref="ox:SymmetricObjectProperty"/><xsd:elementref="ox:AsymmetricObjectProperty"/><xsd:elementref="ox:ReflexiveObjectProperty"/><xsd:elementref="ox:IrreflexiveObjectProperty"/><xsd:elementref="ox:TransitiveObjectProperty"/><xsd:elementref="ox:SubDataPropertyOf"/><xsd:elementref="ox:EquivalentDataProperties"/><xsd:elementref="ox:DisjointDataProperties"/><xsd:elementref="ox:DataPropertyDomain"/><xsd:elementref="ox:DataPropertyRange"/><xsd:elementref="ox:FunctionalDataProperty"/>name="Label"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:elementref="ox:SameIndividual"/>ref="ox:Literal"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:elementref="ox:DifferentIndividuals"/>name="Comment"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:elementref="ox:ClassAssertion"/>ref="ox:Literal"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:elementref="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:elementref="ox:NegativeObjectPropertyAssertion"/>ref="ox:Annotation"/> <xsd:elementref="ox:DataPropertyAssertion"/>ref="ox:Label"/> <xsd:elementref="ox:NegativeDataPropertyAssertion"/>ref="ox:Comment"/> <xsd:elementref="ox:Declaration"/>ref="ox:Deprecation"/> </xsd:choice> </xsd:group></xsd:schema>IntheEntityAnnotationelement<!-- Annotation axioms --> <xsd:element name="EntityAnnotation"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <!-- This is thefirstannotationsareannotationsonannotation for the axiomitselfandthesecondannotationsareannotationsontheentity.IntheSubClassOfelementthefirstdescription--> <xsd:group ref="ox:Entity"/> <xsd:group ref="ox:Annotation" minOccurs="1" maxOccurs="unbounded"/> <!-- This is thesubclassandannotation for thesecondentity --> </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 thesuperclass,similarlyforSubObjectPropertyOfandSubDataPropertyOf.annotation forObjectPropertyAssertionandNegativeObjectPropertyAssertionthefirstindividualaxiom --> <xsd:element ref="ox:AnonymousIndividual"/> <xsd:group ref="ox:Annotation" minOccurs="1" maxOccurs="unbounded"/> <!-- This is thesourceandthesecondisannotation for thetarget.3anonymous individual --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> </xsd:schema>