This document is also available in these non-normative formats: PDF version.
Copyright © 2009 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 has undergone only minor editorial changes since the previous version of 21st April, 2009.
The OWL Working Group seeks to gather experience from implementations in order to increase confidence in the language and meet specific exit criteria. This document will remain a Candidate Recommendation until at least 30 July 2009. After that date, when and if the exit criteria are met, the group intends to request Proposed Recommendation status.
Please send reports of implementation experience, and other feedback, to public-owl-comments@w3.org (public archive). Reports of any success or difficulty with the test cases are encouraged. Open discussion among developers is welcome at public-owl-dev@w3.org (public archive).
Publication as a Candidate Recommendation 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.
Table of Contents |
This document defines the XML serialization for OWL 2, an alternative exchange syntax for OWL 2 designed for use by XML tools (e.g., tools using, for example, XQuery [XQuery]). Although the XML serialization is designed as an exchange syntax for OWL 2, RDF/XML is the only required exchange syntax for OWL---use of the XML serialization by OWL 2 tools is optional.
The italicized keywords MUST, MUST NOT, SHOULD, SHOULD NOT, and MAY are used to specify normative features of OWL 2 documents and tools, and are interpreted as specified in RFC 2119 [RFC 2119].
The XML serialization mirrors the structural specification of OWL 2 [OWL 2 Specification] and is defined by means of an XML schema [XML Schema] plus some additional constraints in prose.
The elements in the XML Schema belong to the <http://www.w3.org/2002/07/owl#> namespace, and the attributes belong to no namespace. The local parts of the names used in the XML Schema are the same as the names of their corresponding elements from the structural specification. Thus, the XML serialization can be seen as a notational variant of the functional syntax.
The following is an example of an OWL 2 ontology written in the XML serialization.
More examples can be found in the OWL 2 Primer [OWL 2 Primer].
<?xml version="1.0" encoding="UTF-8"?> <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="http://www.w3.org/2002/07/owl#" xml:base="http://example.com/myOntology" ontologyIRI="http://example.com/myOntology"> <Prefix name="myOnt" IRI="http://example.com/myOntology#"/> <Import>http://example.com/someOtherOntology</Import> <Declaration> <Class IRI="#Animal"/> </Declaration> <Declaration> <Class abbreviatedIRI="myOnt:Tabloid"/> </Declaration> <Declaration> <ObjectProperty IRI="#eats"/> </Declaration> <Declaration> <ObjectProperty IRI="#reads"/> </Declaration> <SubClassOf> <Class abbreviatedIRI="myOnt:Animal"/> <ObjectAllValuesFrom> <ObjectProperty IRI="#reads"/> <Class IRI="#Tabloid"/> </ObjectAllValuesFrom> </SubClassOf> </Ontology>
During parsing of ontology documents written in the XML serialization of OWL 2, all values that are declared in the schema given below as being of type xsd:anyURI MUST be resolved against the respective base IRI as specified in the XML Base specification [XML Base].
In contrast, OWL 2 literals of the xsd:anyURI datatype MUST NOT be resolved against the base IRI: all literals of OWL 2 are treated as opaque values whose value is fully defined by their lexical representation (as described in Section 4.6 of the OWL 2 Specification]).
Ontology documents written in the XML serialization of OWL 2 may make use of abbreviated IRIs as described in Section 2.4 of the OWL 2 Specification]. Such ontology documents MUST declare all prefixes used in the values of abbreviatedIRI attributes using a Prefix element in that document. In any particular file, a prefix may be defined by only one Prefix element and prefix declarations are scoped to the file in which they lexically appear. Thus, prefix declarations are not imported.
On any element, one, and exactly one, of an IRI attribute or an abbreviatedIRI attribute MUST appear. This constraint is not expressed in the Schema for technical reasons.
During parsing of ontology documents written in the XML serialization of OWL 2, every abbreviatedIRI attribute MUST be replaced with a corresponding IRI attribute. The value of the abbreviatedIRI attribute MUST be expanded into a full IRI as described in Section 2.4 of the [OWL 2 Specification].
Note: The structural specification does not handle either relative IRIs or abbreviated IRIs and their attendant syntax. Thus, an API which exactly conforms to the structural syntax can handle only absolute IRIs as the identifier for OWL entities. However, implementations are free to use whatever internal representation they see fit. An implementation based on the XML DOM [Document Object Model] could sensibly choose to maintain the abbreviated IRI machinery so long as it also exposed an API which presented all corresponding expanded IRIs.
OWL imports are not handled at the XML level, but must be handled separately.
An OWL 2 ontology written in the XML serialization of OWL 2 MUST satisfy the conditions on OWL 2 ontologies from Section 3 of the OWL 2 Specification [OWL 2 Specification].
An OWL 2 DL ontology written in the XML serialization of OWL 2 MUST satisfy the conditions on OWL 2 DL ontologies from Section 3 of the OWL 2 Specification [OWL 2 Specification]. Some of these conditions involve imported ontologies, thus it is possible for an OWL 2 DL ontology written in the XML serialization of OWL 2 to satisfy the conditions to be an OWL 2 DL ontology in a manner invisible to XML Schema checking tools since they are not sensitive to OWL imports.
The XML schema presented here covers the entire OWL 2 structural specification, and thus includes all the features available in OWL 2 profiles [OWL 2 Profiles].
This schema may also be downloaded directly.
<!DOCTYPE xsd:schema [ <!ENTITY PN_CHARS_BASE "[A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-]"> <!ENTITY PN_CHARS_U "&PN_CHARS_BASE;|_"> <!ENTITY PN_CHARS "&PN_CHARS_U;|\-|[0-9]|·|[̀-ͯ]|[‿-⁀]"> <!ENTITY PN_PREFIX "(&PN_CHARS_BASE;)((&PN_CHARS;|\.)*(&PN_CHARS; ))?"> <!ENTITY PN_LOCAL "(&PN_CHARS_U;|[0-9])((&PN_CHARS;|\.)*(&PN_CHARS;))?"> <!ENTITY PNAME_NS "(&PN_PREFIX;)?:"> <!ENTITY PNAME_LN "(&PNAME_NS;)(&PN_LOCAL;)"> <!ENTITY PrefixedName "(&PNAME_LN;)|(&PNAME_NS;)"> ]> <!-- From: http://www.w3.org/TR/rdf-sparql-query/#grammar The entities implement productions [95] (PN_CHARS_BASE), [96] (PN_CHARS_U), [98] (PN_CHARS), [99] (PN_PREFIX), [100] (PN_LOCAL), [71] (PNAME_NS), [72] (PNAME_LN) and [68] (PrefixedName) PN_PREFIX is roughly equivalent to NCName.--> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:owl="http://www.w3.org/2002/07/owl#" targetNamespace="http://www.w3.org/2002/07/owl#" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> <!-- The ontology --> <xsd:complexType name="Prefix"> <xsd:attribute name="name" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="&PN_PREFIX;"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="IRI" type="xsd:anyURI" use="required"/> </xsd:complexType> <xsd:element name="Prefix" type="owl:Prefix"/> <xsd:complexType name="Import"> <xsd:simpleContent> <xsd:extension base="xsd:anyURI"> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:element name="Import" type="owl:Import"/> <xsd:complexType name="Ontology"> <xsd:sequence> <xsd:element ref="owl:Prefix" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="owl:Import" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="owl:ontologyAnnotations"/> <xsd:group ref="owl:Axiom" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="ontologyIRI" type="xsd:anyURI" use="optional"/> <xsd:attribute name="versionIRI" type="xsd:anyURI" use="optional"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> <xsd:element name="Ontology" type="owl:Ontology"> <xsd:unique name="prefix"> <xsd:selector xpath="owl:Prefix"/> <xsd:field xpath="@name"/> </xsd:unique> </xsd:element> <!-- Entities, anonymous individuals, and literals --> <!-- Note that the "Entity" group does not have a corresponding abstract type. This is due to the fact that XML Schema 1.1 does not support multiple inheritence. "owl:Class" is both an entity and a class expression. The authors of this schema determined it was more useful to be able to retrieve "owl:Class" in such queries as schema(*, owl:ClassExpression). --> <xsd:group name="Entity"> <xsd:choice> <xsd:element ref="owl:Class"/> <xsd:element ref="owl:Datatype"/> <xsd:element ref="owl:ObjectProperty"/> <xsd:element ref="owl:DataProperty"/> <xsd:element ref="owl:AnnotationProperty"/> <xsd:element ref="owl:NamedIndividual"/> </xsd:choice> </xsd:group> <!-- This is the type for the attribute. The complex type for the element is capitalized. --> <xsd:simpleType name="abbreviatedIRI"> <xsd:restriction base="xsd:string"> <xsd:pattern value="&PrefixedName;"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="Class"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:attribute name="IRI" type="xsd:anyURI" use="optional"/> <xsd:attribute name="abbreviatedIRI" type="owl:abbreviatedIRI" use="optional"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="Class" type="owl:Class"/> <xsd:complexType name="Datatype"> <xsd:complexContent> <xsd:extension base="owl:DataRange"> <xsd:attribute name="IRI" type="xsd:anyURI" use="optional"/> <xsd:attribute name="abbreviatedIRI" type="owl:abbreviatedIRI" use="optional"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="Datatype" type="owl:Datatype"/> <xsd:complexType name="ObjectProperty"> <xsd:complexContent> <xsd:extension base="owl:ObjectPropertyExpression"> <xsd:attribute name="IRI" type="xsd:anyURI" use="optional"/> <xsd:attribute name="abbreviatedIRI" type="owl:abbreviatedIRI" use="optional"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="ObjectProperty" type="owl:ObjectProperty"/> <xsd:complexType name="DataProperty"> <xsd:complexContent> <xsd:extension base="owl:DataPropertyExpression"> <xsd:attribute name="IRI" type="xsd:anyURI" use="optional"/> <xsd:attribute name="abbreviatedIRI" type="owl:abbreviatedIRI" use="optional"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DataProperty" type="owl:DataProperty"/> <xsd:complexType name="AnnotationProperty"> <xsd:attribute name="IRI" type="xsd:anyURI" use="optional"/> <xsd:attribute name="abbreviatedIRI" type="owl:abbreviatedIRI" use="optional"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> <xsd:element name="AnnotationProperty" type="owl:AnnotationProperty"/> <xsd:complexType name="Individual" abstract="true"> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> <xsd:group name="Individual"> <xsd:choice> <xsd:element ref="owl:NamedIndividual"/> <xsd:element ref="owl:AnonymousIndividual"/> </xsd:choice> </xsd:group> <xsd:complexType name="NamedIndividual"> <xsd:complexContent> <xsd:extension base="owl:Individual"> <xsd:attribute name="IRI" type="xsd:anyURI" use="optional"/> <xsd:attribute name="abbreviatedIRI" type="owl:abbreviatedIRI" use="optional"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="NamedIndividual" type="owl:NamedIndividual"/> <xsd:complexType name="AnonymousIndividual"> <xsd:complexContent> <xsd:extension base="owl:Individual"> <xsd:attribute name="nodeID" type="xsd:NCName" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="AnonymousIndividual" type="owl:AnonymousIndividual"/> <xsd:complexType name="Literal"> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="datatypeIRI" type="xsd:anyURI"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:element name="Literal" type="owl:Literal"/> <!-- Declarations --> <xsd:complexType name="Declaration"> <xsd:complexContent> <xsd:extension base="owl:Axiom"> <xsd:sequence> <xsd:group ref="owl:Entity"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="Declaration" type="owl:Declaration"/> <!-- Object property expressions --> <xsd:complexType name="ObjectPropertyExpression" abstract="true"> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> <xsd:group name="ObjectPropertyExpression"> <xsd:choice> <xsd:element ref="owl:ObjectProperty"/> <xsd:element ref="owl:InverseObjectProperty"/> </xsd:choice> </xsd:group> <xsd:complexType name="InverseObjectProperty"> <xsd:complexContent> <xsd:extension base="owl:ObjectPropertyExpression"> <xsd:sequence> <xsd:element ref="owl:ObjectProperty"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="InverseObjectProperty" type="owl:InverseObjectProperty"/> <!-- Data property expressions --> <xsd:complexType name="DataPropertyExpression" abstract="true"> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> <xsd:group name="DataPropertyExpression"> <xsd:sequence> <xsd:element ref="owl:DataProperty"/> </xsd:sequence> </xsd:group> <!-- Data ranges --> <xsd:complexType name="DataRange" abstract="true"> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> <xsd:group name="DataRange"> <xsd:choice> <xsd:element ref="owl:Datatype"/> <xsd:element ref="owl:DataIntersectionOf"/> <xsd:element ref="owl:DataUnionOf"/> <xsd:element ref="owl:DataComplementOf"/> <xsd:element ref="owl:DataOneOf"/> <xsd:element ref="owl:DatatypeRestriction"/> </xsd:choice> </xsd:group> <xsd:complexType name="DataIntersectionOf"> <xsd:complexContent> <xsd:extension base="owl:DataRange"> <xsd:sequence> <xsd:group ref="owl:DataRange" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DataIntersectionOf" type="owl:DataIntersectionOf"/> <xsd:complexType name="DataUnionOf"> <xsd:complexContent> <xsd:extension base="owl:DataRange"> <xsd:sequence> <xsd:group ref="owl:DataRange" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DataUnionOf" type="owl:DataUnionOf"/> <xsd:complexType name="DataComplementOf"> <xsd:complexContent> <xsd:extension base="owl:DataRange"> <xsd:sequence> <xsd:group ref="owl:DataRange"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DataComplementOf" type="owl:DataComplementOf"/> <xsd:complexType name="DataOneOf"> <xsd:complexContent> <xsd:extension base="owl:DataRange"> <xsd:sequence> <xsd:element ref="owl:Literal" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DataOneOf" type="owl:DataOneOf"/> <xsd:complexType name="DatatypeRestriction"> <xsd:complexContent> <xsd:extension base="owl:DataRange"> <xsd:sequence> <xsd:element ref="owl:Datatype"/> <xsd:element name="FacetRestriction" type="owl:FacetRestriction" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DatatypeRestriction" type="owl:DatatypeRestriction"/> <xsd:complexType name="FacetRestriction"> <xsd:sequence> <xsd:element ref="owl:Literal"/> </xsd:sequence> <xsd:attribute name="facet" type="xsd:anyURI" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> <!-- Class expressions --> <xsd:complexType name="ClassExpression" abstract="true"> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> <xsd:group name="ClassExpression"> <xsd:choice> <xsd:element ref="owl:Class"/> <xsd:element ref="owl:ObjectIntersectionOf"/> <xsd:element ref="owl:ObjectUnionOf"/> <xsd:element ref="owl:ObjectComplementOf"/> <xsd:element ref="owl:ObjectOneOf"/> <xsd:element ref="owl:ObjectSomeValuesFrom"/> <xsd:element ref="owl:ObjectAllValuesFrom"/> <xsd:element ref="owl:ObjectHasValue"/> <xsd:element ref="owl:ObjectHasSelf"/> <xsd:element ref="owl:ObjectMinCardinality"/> <xsd:element ref="owl:ObjectMaxCardinality"/> <xsd:element ref="owl:ObjectExactCardinality"/> <xsd:element ref="owl:DataSomeValuesFrom"/> <xsd:element ref="owl:DataAllValuesFrom"/> <xsd:element ref="owl:DataHasValue"/> <xsd:element ref="owl:DataMinCardinality"/> <xsd:element ref="owl:DataMaxCardinality"/> <xsd:element ref="owl:DataExactCardinality"/> </xsd:choice> </xsd:group> <xsd:complexType name="ObjectIntersectionOf"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:sequence> <xsd:group ref="owl:ClassExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="ObjectIntersectionOf" type="owl:ObjectIntersectionOf"/> <xsd:complexType name="ObjectUnionOf"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:sequence> <xsd:group ref="owl:ClassExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="ObjectUnionOf" type="owl:ObjectUnionOf"/> <xsd:complexType name="ObjectComplementOf"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:sequence> <xsd:group ref="owl:ClassExpression"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="ObjectComplementOf" type="owl:ObjectComplementOf"/> <xsd:complexType name="ObjectOneOf"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:sequence> <xsd:group ref="owl:Individual" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="ObjectOneOf" type="owl:ObjectOneOf"/> <xsd:complexType name="ObjectSomeValuesFrom"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> <xsd:group ref="owl:ClassExpression"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="ObjectSomeValuesFrom" type="owl:ObjectSomeValuesFrom"/> <xsd:complexType name="ObjectAllValuesFrom"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> <xsd:group ref="owl:ClassExpression"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="ObjectAllValuesFrom" type="owl:ObjectAllValuesFrom"/> <xsd:complexType name="ObjectHasValue"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> <xsd:group ref="owl:Individual"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="ObjectHasValue" type="owl:ObjectHasValue"/> <xsd:complexType name="ObjectHasSelf"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="ObjectHasSelf" type="owl:ObjectHasSelf"/> <xsd:complexType name="ObjectMinCardinality"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> <xsd:group ref="owl:ClassExpression" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="ObjectMinCardinality" type="owl:ObjectMinCardinality"/> <xsd:complexType name="ObjectMaxCardinality"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> <xsd:group ref="owl:ClassExpression" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="ObjectMaxCardinality" type="owl:ObjectMaxCardinality"/> <xsd:complexType name="ObjectExactCardinality"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> <xsd:group ref="owl:ClassExpression" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="ObjectExactCardinality" type="owl:ObjectExactCardinality"/> <xsd:complexType name="DataSomeValuesFrom"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:sequence> <xsd:group ref="owl:DataPropertyExpression" minOccurs="1" maxOccurs="unbounded"/> <xsd:group ref="owl:DataRange"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DataSomeValuesFrom" type="owl:DataSomeValuesFrom"/> <xsd:complexType name="DataAllValuesFrom"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:sequence> <xsd:group ref="owl:DataPropertyExpression" minOccurs="1" maxOccurs="unbounded"/> <xsd:group ref="owl:DataRange"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DataAllValuesFrom" type="owl:DataAllValuesFrom"/> <xsd:complexType name="DataHasValue"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:sequence> <xsd:group ref="owl:DataPropertyExpression"/> <xsd:element ref="owl:Literal"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DataHasValue" type="owl:DataHasValue"/> <xsd:complexType name="DataMinCardinality"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:sequence> <xsd:group ref="owl:DataPropertyExpression"/> <xsd:group ref="owl:DataRange" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DataMinCardinality" type="owl:DataMinCardinality"/> <xsd:complexType name="DataMaxCardinality"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:sequence> <xsd:group ref="owl:DataPropertyExpression"/> <xsd:group ref="owl:DataRange" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DataMaxCardinality" type="owl:DataMaxCardinality"/> <xsd:complexType name="DataExactCardinality"> <xsd:complexContent> <xsd:extension base="owl:ClassExpression"> <xsd:sequence> <xsd:group ref="owl:DataPropertyExpression"/> <xsd:group ref="owl:DataRange" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DataExactCardinality" type="owl:DataExactCardinality"/> <!-- Axioms --> <xsd:complexType name="Axiom" abstract="true"> <xsd:sequence> <xsd:group ref="owl:axiomAnnotations"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> <xsd:group name="Axiom"> <xsd:choice> <xsd:element ref="owl:Declaration"/> <xsd:group ref="owl:ClassAxiom"/> <xsd:group ref="owl:ObjectPropertyAxiom"/> <xsd:group ref="owl:DataPropertyAxiom"/> <xsd:element ref="owl:DatatypeDefinition"/> <xsd:element ref="owl:HasKey"/> <xsd:group ref="owl:Assertion"/> <xsd:group ref="owl:AnnotationAxiom"/> </xsd:choice> </xsd:group> <!-- Class expression axioms --> <xsd:complexType name="ClassAxiom" abstract="true"> <xsd:complexContent> <xsd:extension base="owl:Axiom"/> </xsd:complexContent> </xsd:complexType> <xsd:group name="ClassAxiom"> <xsd:choice> <xsd:element ref="owl:SubClassOf"/> <xsd:element ref="owl:EquivalentClasses"/> <xsd:element ref="owl:DisjointClasses"/> <xsd:element ref="owl:DisjointUnion"/> </xsd:choice> </xsd:group> <xsd:complexType name="SubClassOf"> <xsd:complexContent> <xsd:extension base="owl:ClassAxiom"> <xsd:sequence> <xsd:group ref="owl:ClassExpression"/> <!-- This is the subexpression --> <xsd:group ref="owl:ClassExpression"/> <!-- This is the superexpression --> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="SubClassOf" type="owl:SubClassOf"/> <xsd:complexType name="EquivalentClasses"> <xsd:complexContent> <xsd:extension base="owl:ClassAxiom"> <xsd:sequence> <xsd:group ref="owl:ClassExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="EquivalentClasses" type="owl:EquivalentClasses"/> <xsd:complexType name="DisjointClasses"> <xsd:complexContent> <xsd:extension base="owl:ClassAxiom"> <xsd:sequence> <xsd:group ref="owl:ClassExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DisjointClasses" type="owl:DisjointClasses"/> <xsd:complexType name="DisjointUnion"> <xsd:complexContent> <xsd:extension base="owl:ClassAxiom"> <xsd:sequence> <xsd:element ref="owl:Class"/> <xsd:group ref="owl:ClassExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DisjointUnion" type="owl:DisjointUnion"/> <!-- Object property axioms --> <xsd:complexType name="ObjectPropertyAxiom" abstract="true"> <xsd:complexContent> <xsd:extension base="owl:Axiom"/> </xsd:complexContent> </xsd:complexType> <xsd:group name="ObjectPropertyAxiom"> <xsd:choice> <xsd:element ref="owl:SubObjectPropertyOf"/> <xsd:element ref="owl:EquivalentObjectProperties"/> <xsd:element ref="owl:DisjointObjectProperties"/> <xsd:element ref="owl:InverseObjectProperties"/> <xsd:element ref="owl:ObjectPropertyDomain"/> <xsd:element ref="owl:ObjectPropertyRange"/> <xsd:element ref="owl:FunctionalObjectProperty"/> <xsd:element ref="owl:InverseFunctionalObjectProperty"/> <xsd:element ref="owl:ReflexiveObjectProperty"/> <xsd:element ref="owl:IrreflexiveObjectProperty"/> <xsd:element ref="owl:SymmetricObjectProperty"/> <xsd:element ref="owl:AsymmetricObjectProperty"/> <xsd:element ref="owl:TransitiveObjectProperty"/> </xsd:choice> </xsd:group> <xsd:complexType name="SubObjectPropertyOf"> <xsd:complexContent> <xsd:extension base="owl:ObjectPropertyAxiom"> <xsd:sequence> <xsd:choice> <!-- This is the subproperty expression or the property chain --> <xsd:group ref="owl:ObjectPropertyExpression"/> <xsd:element name="PropertyChain" type="owl:PropertyChain"/> </xsd:choice> <xsd:group ref="owl:ObjectPropertyExpression"/> <!-- This is the superproperty expression --> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="SubObjectPropertyOf" type="owl:SubObjectPropertyOf"/> <xsd:complexType name="PropertyChain"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> <xsd:complexType name="EquivalentObjectProperties"> <xsd:complexContent> <xsd:extension base="owl:ObjectPropertyAxiom"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="EquivalentObjectProperties" type="owl:EquivalentObjectProperties"/> <xsd:complexType name="DisjointObjectProperties"> <xsd:complexContent> <xsd:extension base="owl:ObjectPropertyAxiom"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DisjointObjectProperties" type="owl:DisjointObjectProperties"/> <xsd:complexType name="ObjectPropertyDomain"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> <xsd:group ref="owl:ClassExpression"/> </xsd:sequence> </xsd:complexType> <xsd:element name="ObjectPropertyDomain" type="owl:ObjectPropertyDomain"/> <xsd:complexType name="ObjectPropertyRange"> <xsd:complexContent> <xsd:extension base="owl:ObjectPropertyAxiom"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> <xsd:group ref="owl:ClassExpression"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="ObjectPropertyRange" type="owl:ObjectPropertyRange"/> <xsd:complexType name="InverseObjectProperties"> <xsd:complexContent> <xsd:extension base="owl:ObjectPropertyAxiom"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression" minOccurs="2" maxOccurs="2"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="InverseObjectProperties" type="owl:InverseObjectProperties"/> <xsd:complexType name="FunctionalObjectProperty"> <xsd:complexContent> <xsd:extension base="owl:ObjectPropertyAxiom"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="FunctionalObjectProperty" type="owl:FunctionalObjectProperty"/> <xsd:complexType name="InverseFunctionalObjectProperty"> <xsd:complexContent> <xsd:extension base="owl:ObjectPropertyAxiom"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="InverseFunctionalObjectProperty" type="owl:InverseFunctionalObjectProperty"/> <xsd:complexType name="ReflexiveObjectProperty"> <xsd:complexContent> <xsd:extension base="owl:ObjectPropertyAxiom"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="ReflexiveObjectProperty" type="owl:ReflexiveObjectProperty"/> <xsd:complexType name="IrreflexiveObjectProperty"> <xsd:complexContent> <xsd:extension base="owl:ObjectPropertyAxiom"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="IrreflexiveObjectProperty" type="owl:IrreflexiveObjectProperty"/> <xsd:complexType name="SymmetricObjectProperty"> <xsd:complexContent> <xsd:extension base="owl:ObjectPropertyAxiom"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="SymmetricObjectProperty" type="owl:SymmetricObjectProperty"/> <xsd:complexType name="AsymmetricObjectProperty"> <xsd:complexContent> <xsd:extension base="owl:ObjectPropertyAxiom"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="AsymmetricObjectProperty" type="owl:AsymmetricObjectProperty"/> <xsd:complexType name="TransitiveObjectProperty"> <xsd:complexContent> <xsd:extension base="owl:ObjectPropertyAxiom"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="TransitiveObjectProperty" type="owl:TransitiveObjectProperty"/> <!-- Data property axioms --> <xsd:complexType name="DataPropertyAxiom" abstract="true"> <xsd:complexContent> <xsd:extension base="owl:Axiom"/> </xsd:complexContent> </xsd:complexType> <xsd:group name="DataPropertyAxiom"> <xsd:choice> <xsd:element ref="owl:SubDataPropertyOf"/> <xsd:element ref="owl:EquivalentDataProperties"/> <xsd:element ref="owl:DisjointDataProperties"/> <xsd:element ref="owl:DataPropertyDomain"/> <xsd:element ref="owl:DataPropertyRange"/> <xsd:element ref="owl:FunctionalDataProperty"/> </xsd:choice> </xsd:group> <xsd:complexType name="SubDataPropertyOf"> <xsd:complexContent> <xsd:extension base="owl:DataPropertyAxiom"> <xsd:sequence> <xsd:group ref="owl:DataPropertyExpression"/> <!-- This is the subproperty expression --> <xsd:group ref="owl:DataPropertyExpression"/> <!-- This is the superproperty expression --> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="SubDataPropertyOf" type="owl:SubDataPropertyOf"/> <xsd:complexType name="EquivalentDataProperties"> <xsd:complexContent> <xsd:extension base="owl:DataPropertyAxiom"> <xsd:sequence> <xsd:group ref="owl:DataPropertyExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="EquivalentDataProperties" type="owl:EquivalentDataProperties"/> <xsd:complexType name="DisjointDataProperties"> <xsd:complexContent> <xsd:extension base="owl:DataPropertyAxiom"> <xsd:sequence> <xsd:group ref="owl:DataPropertyExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DisjointDataProperties" type="owl:DisjointDataProperties"/> <xsd:complexType name="DataPropertyDomain"> <xsd:complexContent> <xsd:extension base="owl:DataPropertyAxiom"> <xsd:sequence> <xsd:group ref="owl:DataPropertyExpression"/> <xsd:group ref="owl:ClassExpression"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DataPropertyDomain" type="owl:DataPropertyDomain"/> <xsd:complexType name="DataPropertyRange"> <xsd:complexContent> <xsd:extension base="owl:DataPropertyAxiom"> <xsd:sequence> <xsd:group ref="owl:DataPropertyExpression"/> <xsd:group ref="owl:DataRange"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DataPropertyRange" type="owl:DataPropertyRange"/> <xsd:complexType name="FunctionalDataProperty"> <xsd:complexContent> <xsd:extension base="owl:DataPropertyAxiom"> <xsd:sequence> <xsd:group ref="owl:DataPropertyExpression"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="FunctionalDataProperty" type="owl:FunctionalDataProperty"/> <!-- Datatype definitions --> <xsd:complexType name="DatatypeDefinition"> <xsd:complexContent> <xsd:extension base="owl:Axiom"> <xsd:sequence> <xsd:element ref="owl:Datatype"/> <xsd:group ref="owl:DataRange"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DatatypeDefinition" type="owl:DatatypeDefinition"/> <!-- Key axioms --> <xsd:complexType name="HasKey"> <xsd:complexContent> <xsd:extension base="owl:Axiom"> <xsd:sequence> <xsd:group ref="owl:ClassExpression"/> <xsd:group ref="owl:ObjectPropertyExpression" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="owl:DataPropertyExpression" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="HasKey" type="owl:HasKey"/> <!-- Assertions --> <xsd:complexType name="Assertion" abstract="true"> <xsd:complexContent> <xsd:extension base="owl:Axiom"/> </xsd:complexContent> </xsd:complexType> <xsd:group name="Assertion"> <xsd:choice> <xsd:element ref="owl:SameIndividual"/> <xsd:element ref="owl:DifferentIndividuals"/> <xsd:element ref="owl:ClassAssertion"/> <xsd:element ref="owl:ObjectPropertyAssertion"/> <xsd:element ref="owl:NegativeObjectPropertyAssertion"/> <xsd:element ref="owl:DataPropertyAssertion"/> <xsd:element ref="owl:NegativeDataPropertyAssertion"/> </xsd:choice> </xsd:group> <xsd:complexType name="SameIndividual"> <xsd:complexContent> <xsd:extension base="owl:Assertion"> <xsd:sequence> <xsd:group ref="owl:Individual" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="SameIndividual" type="owl:SameIndividual"/> <xsd:complexType name="DifferentIndividuals"> <xsd:complexContent> <xsd:extension base="owl:Assertion"> <xsd:sequence> <xsd:group ref="owl:Individual" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DifferentIndividuals" type="owl:DifferentIndividuals"/> <xsd:complexType name="ClassAssertion"> <xsd:complexContent> <xsd:extension base="owl:Assertion"> <xsd:sequence> <xsd:group ref="owl:ClassExpression"/> <xsd:group ref="owl:Individual"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="ClassAssertion" type="owl:ClassAssertion"/> <xsd:complexType name="ObjectPropertyAssertion"> <xsd:complexContent> <xsd:extension base="owl:Assertion"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> <xsd:group ref="owl:Individual"/> <!-- This is the source invididual --> <xsd:group ref="owl:Individual"/> <!-- This is the target individual --> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="ObjectPropertyAssertion" type="owl:ObjectPropertyAssertion"/> <xsd:complexType name="NegativeObjectPropertyAssertion"> <xsd:complexContent> <xsd:extension base="owl:Assertion"> <xsd:sequence> <xsd:group ref="owl:ObjectPropertyExpression"/> <xsd:group ref="owl:Individual"/> <!-- This is the source invididual --> <xsd:group ref="owl:Individual"/> <!-- This is the target individual --> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="NegativeObjectPropertyAssertion" type="owl:NegativeObjectPropertyAssertion"/> <xsd:complexType name="DataPropertyAssertion"> <xsd:complexContent> <xsd:extension base="owl:Assertion"> <xsd:sequence> <xsd:group ref="owl:DataPropertyExpression"/> <xsd:group ref="owl:Individual"/> <!-- This is the source invididual --> <xsd:element ref="owl:Literal"/> <!-- This is the target individual --> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="DataPropertyAssertion" type="owl:DataPropertyAssertion"/> <xsd:complexType name="NegativeDataPropertyAssertion"> <xsd:complexContent> <xsd:extension base="owl:Assertion"> <xsd:sequence> <xsd:group ref="owl:DataPropertyExpression"/> <xsd:group ref="owl:Individual"/> <!-- This is the source invididual --> <xsd:element ref="owl:Literal"/> <!-- This is the target individual --> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="NegativeDataPropertyAssertion" type="owl:NegativeDataPropertyAssertion"/> <!-- Annotations --> <xsd:complexType name="IRI"> <xsd:simpleContent> <xsd:extension base="xsd:anyURI"> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:element name="IRI" type="owl:IRI"/> <xsd:complexType name="AbbreviatedIRI"> <xsd:simpleContent> <xsd:extension base="owl:abbreviatedIRI"> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:element name="AbbreviatedIRI" type="owl:AbbreviatedIRI"/> <xsd:group name="AnnotationSubject"> <xsd:choice> <xsd:element ref="owl:IRI"/> <xsd:element name="AbbreviatedIRI"/> <xsd:element ref="owl:AnonymousIndividual"/> </xsd:choice> </xsd:group> <xsd:group name="AnnotationValue"> <xsd:choice> <xsd:element ref="owl:IRI"/> <xsd:element name="AbbreviatedIRI"/> <xsd:element ref="owl:AnonymousIndividual"/> <xsd:element ref="owl:Literal"/> </xsd:choice> </xsd:group> <xsd:complexType name="Annotation"> <xsd:sequence> <xsd:group ref="owl:annotationAnnotations"/> <xsd:element ref="owl:AnnotationProperty"/> <xsd:group ref="owl:AnnotationValue"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> <xsd:element name="Annotation" type="owl:Annotation"/> <xsd:group name="axiomAnnotations"> <xsd:sequence> <xsd:element ref="owl:Annotation" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:group> <xsd:group name="ontologyAnnotations"> <xsd:sequence> <xsd:element ref="owl:Annotation" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:group> <xsd:group name="annotationAnnotations"> <xsd:sequence> <xsd:element ref="owl:Annotation" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:group> <!-- Annotation axioms --> <xsd:complexType name="AnnotationAxiom" abstract="true"> <xsd:complexContent> <xsd:extension base="owl:Axiom"/> </xsd:complexContent> </xsd:complexType> <xsd:group name="AnnotationAxiom"> <xsd:choice> <xsd:element ref="owl:AnnotationAssertion"/> <xsd:element ref="owl:SubAnnotationPropertyOf"/> <xsd:element ref="owl:AnnotationPropertyDomain"/> <xsd:element ref="owl:AnnotationPropertyRange"/> </xsd:choice> </xsd:group> <xsd:complexType name="AnnotationAssertion"> <xsd:complexContent> <xsd:extension base="owl:AnnotationAxiom"> <xsd:sequence> <xsd:element ref="owl:AnnotationProperty"/> <xsd:group ref="owl:AnnotationSubject"/> <xsd:group ref="owl:AnnotationValue"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="AnnotationAssertion" type="owl:AnnotationAssertion"/> <xsd:complexType name="SubAnnotationPropertyOf"> <xsd:complexContent> <xsd:extension base="owl:AnnotationAxiom"> <xsd:sequence> <xsd:element ref="owl:AnnotationProperty"/> <!-- This is the subproperty --> <xsd:element ref="owl:AnnotationProperty"/> <!-- This is the superproperty --> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="SubAnnotationPropertyOf" type="owl:SubAnnotationPropertyOf"/> <xsd:complexType name="AnnotationPropertyDomain"> <xsd:complexContent> <xsd:extension base="owl:AnnotationAxiom"> <xsd:sequence> <xsd:element ref="owl:AnnotationProperty"/> <xsd:element ref="owl:IRI"/> <xsd:element name="AbbreviatedIRI"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="AnnotationPropertyDomain" type="owl:AnnotationPropertyDomain"/> <xsd:complexType name="AnnotationPropertyRange"> <xsd:complexContent> <xsd:extension base="owl:AnnotationAxiom"> <xsd:sequence> <xsd:element ref="owl:AnnotationProperty"/> <xsd:element ref="owl:IRI"/> <xsd:element name="AbbreviatedIRI"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="AnnotationPropertyRange" type="owl:AnnotationPropertyRange"/> </xsd:schema>
An OWL 2 XML serialization ontology document is a sequence of Unicode [UNICODE] characters accessible from some IRI by means of the standard protocols that can be parsed into an XML document that conforms to the XML schema defined in this document and adheres to the constraints described in Section 3 of this document.
The XML schema has been obtained by a straightforward translation of the structural specification of the OWL 2 Specification [OWL 2 Specification] in the following way:
Since XML Schema's type system does not support multiple inheritance, some abstract UML classes cannot be directly mapped into an XML Schema type hierarchy with the intended result. In the case where there are multiple parent classes, only the most useful parents are mapped into the active type hierarchy. The excluded groups are:
Some groups are mere documentation in the schema, and therefore are not included as types:
The XML schema thus captures the structure of OWL 2 entities, expressions, and axioms. Not all XML documents which are legal according to this schema correspond to structural correct OWL ontologies.
To get to the OWL Ontology an OWL 2 XML serialization ontology document describes one must:
To determine whether the OWL Ontology is structurally correct, one must:
Each axiom in the XML syntax of OWL 2 contains complete information about the type of all the entities in it. Therefore the OWL 2 XML Syntax parsing process is simpler than the canonical parsing process from Section 3.6 of OWL 2 Specification [OWL 2 Specification].
The Internet Media Type / MIME Type for the OWL XML Serialization is application/owl+xml.
It is recommended that OWL XML Serialization files have the extension .owx (all lowercase) on all platforms.
It is recommended that OWL XML Serialization files stored on Macintosh HFS file systems be given a file type of TEXT.
The information that follows will be submitted to the IESG for review, approval, and registration with IANA.
The starting point for the development of OWL 2 was the OWL1.1 member submission, itself a result of user and developer feedback, and in particular of information gathered during the OWL Experiences and Directions (OWLED) Workshop series. The working group also considered postponed issues from the WebOnt Working Group.
This document has been produced by the OWL Working Group (see below), and its contents reflect extensive discussions within the Working Group as a whole. The editors extend special thanks to Kendall Clark (Clark & Parsia), Achille Fokoue (IBM Corporation) and Michael Grove (Clark & Parsia), Rinke Hoekstra (University of Amsterdam) for their thorough reviews and to Liam Quim (W3C) for his advice on XML Schema.
The regular attendees at meetings of the OWL Working Group at the time of publication of this document were: Jie Bao (RPI), Diego Calvanese (Free University of Bozen-Bolzano), Bernardo Cuenca Grau (Oxford University), Martin Dzbor (Open University), Achille Fokoue (IBM Corporation), Christine Golbreich (Université de Versailles St-Quentin and LIRMM), Sandro Hawke (W3C/MIT), Ivan Herman (W3C/ERCIM), Rinke Hoekstra (University of Amsterdam), Ian Horrocks (Oxford University), Elisa Kendall (Sandpiper Software), Markus Krötzsch (FZI), Carsten Lutz (Universität Bremen), Deborah L. McGuinness (RPI), Boris Motik (Oxford University), Jeff Pan (University of Aberdeen), Bijan Parsia (University of Manchester), Peter F. Patel-Schneider (Bell Labs Research, Alcatel-Lucent), Sebastian Rudolph (FZI), Alan Ruttenberg (Science Commons), Uli Sattler (University of Manchester), Michael Schneider (FZI), Mike Smith (Clark & Parsia), Evan Wallace (NIST), Zhe Wu (Oracle Corporation), and Antoine Zimmermann (DERI Galway). We would also like to thank past members of the working group: Jeremy Carroll, Jim Hendler, Vipul Kashyap.