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 6 documents:
The Working Group.OWL Working Group face-to-face starts tomorrow morning.intends to make OWL 2 be a superset of OWL 1, except for some small bug fixes and changes to the formal semantics of annotations. This means that OWL 2 will be backward compatible, and creators of OWL 1 documents need only move to OWL 2 when they want to make use of OWL 2 features. More details and advice concerning migration from OWL 1 to OWL 2 will be in future drafts.
The OWL Working Group seeks public feedback on these Working Drafts. Please send your comments to public-owl-comments@w3.org (public archive). If possible, please offer specific changes to the text that would address your concern. You may also wish to check the Wiki Version of this document for internal-review comments and changes being drafted which may address your concerns.
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 |
Editor's Note: At the second F2F meeting, the Working Groupd has decided to simplify the vocabulary of OWL ontologies. In future versions of this specification, the terminals of the functional-style grammar and the RDF vocabulary will be significantly smaller.
The Web Ontology Language (OWL) 1.12 specification [OWL 1.12 Specification] defines a functional-style syntax whose intention is to be readable by humans. However, it is widely recognized that an XML syntax is needed as well.
Review comment from BijanParsia 08:31, 14 March 2008 (EDT) I don't think "easily implemented" is the right description. The key isn't easy of implementation (KRSS would probably be better there), but fit with modern XML technology and practices. ( pfps 15:56, 19 March 2008 (EDT) Revised.)The XML syntax can be used when a widely-acceptedweb-based syntax that exactly mirrors the functional-style syntax and structural specification of OWL 1.12 ontologies is needed by tools, such as in the Description Logics Implementors Group (DIG) 2.0 specification [DIG 2.0].
Review comment from BijanParsia 08:31, 14 March 2008 (EDT) I'd make the prior paragraph a temporary editors note. It shouldn't appear in the final spec. ( pfps 15:56, 19 March 2008 (EDT) Revised instead) Review comment from RinkeHoekstra 11:33, 1 April 2008 (EDT)]] Consider rephrasing: two times 'widely needed'The XML syntax for OWL 1.12 is defined as an XML Schema [XML Schema], and is available as a separate document, as well as being included in this document. It has been obtained by a straightforward translation of the structural specification from the OWL 1.12 Specification [ OWL 1.1Template:OWL 2 Specification ]in the following way:
Note that there are aspects of OWL 1.12 ontologies that are global to the ontology itself (such as the requirements on transitive roles) and that thus cannot be captured in an XML Schema.
Review comment from BijanParsia 08:31, 14 March 2008 (EDT) It is very nice to have such a description (except I don't understand "struc spec from dig..."). I'm not sure I can follow it to do my own translation, though. I think having a Relax-NG schema would be good as well. ( pfps In another document?) It might also be smart to point out that Valid by the schema does not mean that its OWL DL 1.1. E.g., the nonstructural restrictions are not captured (and not capturable) by the schema. ( pfps 15:56, 19 March 2008 (EDT) Done) Review comment from Achille 14:51, 18 March 2008 (EDT) +1 for Bijan's comment on stressing that XML schema validation does not mean valid OWL 1.1All URIs in an ontology are assumed to be relative to the xml:base of the ontology document. During parsing, all URIs should be resolved as specified in the XML Base specification [ XMLTemplate:XML Base ]..
The root element of any OWL 1.12 ontology file written in this syntax should be ox:Ontology. However, other specifications are free to reuse other elements from the schema. For example, the DIG 2.0 specification [ DIGTemplate:DIG 2.0 ]can reuse the elements and element groups corresponding to axioms, descriptions, and entities.
The XML schema presented in this document covers the entire OWL 1.12 language. In [ OWL 1.1 Fragments ]Template:OWL 2 Profiles several fragmentsprofiles of OWL 1.12 have been defined. There are no separate schemata for these fragments;profiles; ontologies that can be expressed by the fragment languagesprofiles should be written using the most general schema. Validating whether an ontology belongs to a particular fragmentprofile is not intended to be performed using XML schema mechanisms; this is to be done using other means whose specification is beyond the scope of this document.
Review comment from BijanParsia 08:31, 14 March 2008 (EDT) I think having such schemas, esp. if they were derived from the overall one, would be very valuable! ( pfps yes, but shouldn't this be in a separate note?) 1.1 Issues The major issue to be resolved is exactly what to use asEditor's Note: The namespace for the element names in the syntax. 2 Examples Review comment from RinkeHoekstra 09:29, 2 April 2008 (EDT) I started wondering about this Examples section: how does it relate to the Primer document? That seems to be a more appropriate document for giving examples. Should these examples really be part of the specification? This section presents theXML syntax for OWL 1.1 by means of several examples. The root element of each OWL 1.1 ontology file encoded using XML syntax must be ox:Ontology . This element may contain a number of annotations followed by a sequence of axioms. Each ontology must be assigned a unique URI. Also, it is a good practice to include an xml:base specification to enable correct URI resolution. Review comment from RinkeHoekstra 11:35, 1 April 2008 (EDT)]] It is stated two times that the root element of an 1.1 ontology fileserialization is not finalized. The ox:Ontology element Example: <?xml version="1.0" encoding="UTF-8"?> <?oxygen RNGSchema="owl1.1.xsd" type="xsd"?> <ox:Ontology xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " xsi:schemaLocation=" http://www.w3.org/2007/OWL/wiki/OWL_XML_Schema# http://www.w3.org/2007/OWL/wiki/OWL_XML_Schema " xmlns:ox=" http://www.w3.org/ns/owl11-xml# " xml:base=" http://my.domain.com/myOntology " ox:ontologyURI=" http://my.domain.com/myOntology "> <ox:Imports> http://my.domain.com/someOtherOntology </ox:Imports> <!-- The ontology axioms go here --> </ox:Ontology> Review comment from Achille 14:58, 18 March 2008 (EDT) The value of the "schemaLocation" attribute in the previous examplediscussion is incorrect. "schemaLocation" value consists of pairs of namespaceURI and URL location, with at least one white space between the namespaceUIR and its location. In the previous example, xsi:schemaLocation value should be " http://www.w3.org/2006/12/owl11-xml# http://www.w3.org/2006/12/owl11-xml/owl1.1.xsd " ( pfps Fixed, I think) Review comment from Achille 14:58, 18 March 2008 (EDT) The URL " http://www.w3.org/2006/12/owl11-xml/owl1.1.xsd " cannot successfully be resolved ( pfps Fixed, I think) Entities in ontologies can be declared, as follows: Review comment from BijanParsia 08:35, 14 March 2008 (EDT) I think we should be cautious about having Good Practice comments like this.being tracked by [issue 109].
Editor's Note: This advicedocument does not yet address GRDDL integration. This issue is easily rephrased neutrally. ( pfps 16:18, 19 March 2008 (EDT) Made much more neutral) Example: <ox:Declaration> <ox:OWLClass ox:URI="#animal"/> </ox:Declaration> <ox:Declaration> <ox:ObjectProperty ox:URI="#eats"/> </ox:Declaration>being tracked by [issue 97].
Here areis a couple of basic axioms about properties. Example: <ox:EquivalentObjectProperties> <ox:ObjectProperty ox:URI="#eats"/> <ox:InverseObjectProperty> <ox:ObjectProperty ox:URI="#eaten_by"/> </ox:InverseObjectProperty> </ox:EquivalentObjectProperties> <ox:SubObjectPropertyOf> <ox:ObjectProperty ox:URI="#has_father"/> <ox:ObjectProperty ox:URI="#has_parent"/> </ox:SubObjectPropertyOf> <ox:ObjectPropertyDomain> <ox:ObjectProperty ox:URI="#eats"/> <ox:OWLClass ox:URI="#animal"/> </ox:ObjectPropertyDomain> Object property inclusion axiomscomplete, if toy, example of a complete OWL 1.1 allowontology serialized in accordance with this specification. For more examples (covering the constructionrest of quite complex axioms regarding object properties. For example, it is possible to state that, if somebody owns an object, then they also own all partsthe features of OWL), please consult the object. Example: <ox:SubObjectPropertyOf> <ox:SubObjectPropertyChain> <ox:ObjectProperty ox:URI="#owns"/> <ox:ObjectProperty ox:URI="#has_part"/> </ox:SubObjectPropertyChain> <ox:ObjectProperty ox:URI="#owns"/> </ox:SubObjectPropertyOf> Properties can be made disjoint,Primer and one can assert properties to be reflexive, irreflexive, symmetric, or asymmetric. For example,the mother_of property should be irreflexive, because nobody can be their own mother. Example: <ox:DisjointObjectProperties> <ox:ObjectProperty ox:URI="#mother_of"/> <ox:ObjectProperty ox:URI="#sister_of"/> </ox:DisjointObjectProperties> <ox:IrreflexiveObjectProperty> <ox:ObjectProperty ox:URI="#mother_of"/> </ox:IrreflexiveObjectProperty> OWL 1.1 provides a rich set of primitives for writing classes and axioms about them. Example: <ox:SubClassOf> <ox:OWLClass ox:URI="#bicycle"/> <ox:OWLClass ox:URI="#vehicle"/> </ox:SubClassOf> <ox:EquivalentClasses> <ox:OWLClass ox:URI="#bus_driver"/> <ox:ObjectIntersectionOf>structural Syntax document.
<?xml version="1.0" encoding="UTF-8"?> <ox:Ontology xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2007/OWL/wiki/OWL_XML_Schema# http://www.w3.org/2007/OWL/wiki/OWL_XML_Schema" xmlns:ox="http://www.w3.org/ns/owl2-xml#" xml:base="http://example.com/myOntology" ox:ontologyURI="http://example.com/myOntology"> <ox:Imports ox:URI="http://example.com/someOtherOntology"/> <ox:Declaration> <ox:OWLClassox:URI="#person"/><ox:ObjectSomeValuesFrom>ox:URI="#animal"/> </ox:Declaration> <ox:Declaration> <ox:ObjectPropertyox:URI="#drives"/><ox:OWLClassox:URI="#bus"/></ox:ObjectSomeValuesFrom></ox:ObjectIntersectionOf></ox:EquivalentClasses>ox:URI="#eats"/> </ox:Declaration> <ox:SubClassOf> <ox:OWLClassox:URI="#white_van_man"/>ox:URI="#animal"/> <ox:ObjectAllValuesFrom> <ox:ObjectProperty ox:URI="#reads"/> <ox:OWLClass ox:URI="#tabloid"/> </ox:ObjectAllValuesFrom> </ox:SubClassOf>Qualifiedcardinalityrestrictionscanbeusedtoassertthatadogloverisapersonwhoownsalleastthreedogs.Example:<ox:EquivalentClasses><ox:OWLClassox:URI="#dog_lover"/><ox:ObjectIntersectionOf><ox:OWLClassox:URI="#person"/><ox:ObjectMinCardinalityox:cardinality="3"><ox:ObjectPropertyox:URI="#has_pet"/><ox:OWLClassox:URI="#dog"/></ox:ObjectMinCardinality></ox:ObjectIntersectionOf></ox:EquivalentClasses>OWL1.1providesaxiomsthatstatepositiveandnegativefactsaboutindividuals.Example:<ox:ClassAssertion><ox:OWLClassox:URI="#newespaper"/><ox:Individualox:URI="#Daily_Mirror"/></ox:ClassAssertion><ox:ClassAssertion><ox:OWLClassox:URI="#Fred"/><ox:Individualox:URI="#person"/></ox:ClassAssertion><ox:ObjectPropertyAssertion><ox:ObjectPropertyox:URI="#has_pet"/><ox:Individualox:URI="#Fred"/><ox:Individualox:URI="#Tibbs"/></ox:ObjectPropertyAssertion><ox:NegativeObjectPropertyAssertion><ox:ObjectPropertyox:URI="#brother_of"/><ox:Individualox:URI="#Fred"/><ox:Individualox:URI="#Alice"/></ox:NegativeObjectPropertyAssertion>ReviewcommentfromBijanParsia08:35,14March2008(EDT)Pleaseuseadefaultnamespaceoratleastamuchnicerprefixthanowl11xml.Oneofthe*advantages*ofthissyntaxisthatyou*can*killtheexplicitprefixes.Theseexamplesareillegibleasis.(pfps16:18,19March2008(EDT)Usedoxinstead.)Also,giventheprimer,doweneedtheseexamplesatall?(pfpsIthinkthatsomethingisneededhere.)3</ox:Ontology>
ReviewcommentfromAchille15:19,18March2008(EDT)Veryusefulcommentsdonotshowupinthe"view"mode(e.g.thedifferencebetweenthetwoannotationsinEntityAnnotation).TheyonlyshowupintheeditmodeasXMLcomments(<!--comment-->)pfps16:30,19March2008(EDT):UnfortunatelythisisyetanothermalfeatureoftheWiki!I'veaddedtheusefulcommentstotheendofthissection.)SandroHawke12:13,24March2008(EDT):fixed,byturningtheless-thansymbolswhichstartXMLcommentsintocallstoanLTtemplate.ReviewcommentfromAlan16March2008(EDT)Prefixinschema:owl11xml:doesn'tmatchoneintext:ox:pfps14:12,26March2008(EDT)FixedReviewcommentfromRinkeHoekstra09:31,2April2008(EDT)ForsomereasonIcannotthiscode<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ox="http://www.w3.org/ns/owl11-xml#http://www.w3.org/ns/owl2-xml#" targetNamespace="http://www.w3.org/ns/owl11-xml#http://www.w3.org/ns/owl2-xml#" elementFormDefault="qualified" attributeFormDefault="qualified"> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> <!-- Annotations --> <xsd:element name="Annotation"> <xsd:complexType> <xsd:sequence> <xsd:element ref="ox:AnnotationProperty"/> <xsd:choice> <xsd:element ref="ox:Constant"/> <xsd:group ref="ox:OWLEntity"/> </xsd:choice> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="Label"> <xsd:complexType> <xsd:choice> <xsd:element ref="ox:Constant"/> <xsd:group ref="ox:OWLEntity"/> </xsd:choice> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="Comment"> <xsd:complexType> <xsd:choice> <xsd:element ref="ox:Constant"/> <xsd:group ref="ox:OWLEntity"/> </xsd:choice> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:group name="Annotation"> <xsd:choice> <xsd:element ref="ox:Annotation"/> <xsd:element ref="ox:Label"/> <xsd:element ref="ox:Comment"/> </xsd:choice> </xsd:group> <!-- The ontology --> <xsd:element name="Imports"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:anyURI"> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name="Ontology"> <xsd:complexType> <xsd:sequence> <xsd:element ref="ox:Imports" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:Axiom" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="ontologyURI" type="xsd:anyURI"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <!-- Entities --> <xsd:element name="Datatype"> <xsd:complexType> <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> <xsd:attribute name="arity" type="xsd:positiveInteger" use="optional" default="1"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="OWLClass"> <xsd:complexType> <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectProperty"> <xsd:complexType> <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataProperty"> <xsd:complexType> <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="AnnotationProperty"> <xsd:complexType> <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="Individual"> <xsd:complexType> <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:group name="OWLEntity"> <xsd:choice> <xsd:element ref="ox:Datatype"/> <xsd:element ref="ox:OWLClass"/> <xsd:element ref="ox:ObjectProperty"/> <xsd:element ref="ox:DataProperty"/> <xsd:element ref="ox:AnnotationProperty"/> <xsd:element ref="ox:Individual"/> </xsd:choice> </xsd:group> <xsd:element name="Constant"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="datatypeURI" type="xsd:anyURI" use="optional"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <!-- Entity annotations --> <xsd:element name="EntityAnnotation"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <!-- This is the annotation for the axiom --> <xsd:group ref="ox:OWLEntity"/> <xsd:group ref="ox:Annotation" minOccurs="1" maxOccurs="unbounded"/> <!-- This is the annotation for the entity --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <!-- Property expressions --> <xsd:group name="ObjectPropertyExpression"> <xsd:choice> <xsd:element ref="ox:ObjectProperty"/> <xsd:element ref="ox:InverseObjectProperty"/> </xsd:choice> </xsd:group> <xsd:element name="InverseObjectProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:group name="DataPropertyExpression"> <xsd:sequence> <xsd:element ref="ox:DataProperty"/> </xsd:sequence> </xsd:group> <!-- Data ranges --> <xsd:element name="DataComplementOf"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:DataRange"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataOneOf"> <xsd:complexType> <xsd:sequence> <xsd:element ref="ox:Constant" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:simpleType name="FacetType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="length"/> <xsd:enumeration value="minLength"/> <xsd:enumeration value="maxLength"/> <xsd:enumeration value="pattern"/> <xsd:enumeration value="minInclusive"/> <xsd:enumeration value="minExclusive"/> <xsd:enumeration value="maxInclusive"/> <xsd:enumeration value="maxExclusive"/> <xsd:enumeration value="totalDigits"/> <xsd:enumeration value="fractionDigits"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="DatatypeRestriction"> <xsd:complexType> <xsd:sequence> <xsd:element ref="ox:Datatype"/> <xsd:element name="Restriction" minOccurs="1" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element ref="ox:Constant"/> </xsd:sequence> <xsd:attribute name="facet" type="ox:FacetType" use="required"/> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:group name="DataRange"> <xsd:choice> <xsd:element ref="ox:Datatype"/> <xsd:element ref="ox:DataComplementOf"/> <xsd:element ref="ox:DataOneOf"/> <xsd:element ref="ox:DatatypeRestriction"/> </xsd:choice> </xsd:group> <!-- Descriptions --> <xsd:element name="ObjectIntersectionOf"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Description" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectUnionOf"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Description" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectComplementOf"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Description"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectOneOf"> <xsd:complexType> <xsd:sequence> <xsd:element ref="ox:Individual" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectSomeValuesFrom"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:group ref="ox:Description"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectAllValuesFrom"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:group ref="ox:Description"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectExistsSelf"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectHasValue"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:element ref="ox:Individual"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectMinCardinality"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:group ref="ox:Description" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectMaxCardinality"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:group ref="ox:Description" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectExactCardinality"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:group ref="ox:Description" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataSomeValuesFrom"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:group ref="ox:DataRange"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataAllValuesFrom"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:group ref="ox:DataRange"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataHasValue"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:element ref="ox:Constant"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataMinCardinality"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:group ref="ox:DataRange" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataMaxCardinality"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:group ref="ox:DataRange" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataExactCardinality"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:group ref="ox:DataRange" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="cardinality" type="xsd:nonNegativeInteger" use="required"/> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:group name="Description"> <xsd:choice> <xsd:element ref="ox:OWLClass"/> <xsd:element ref="ox:ObjectIntersectionOf"/> <xsd:element ref="ox:ObjectUnionOf"/> <xsd:element ref="ox:ObjectComplementOf"/> <xsd:element ref="ox:ObjectOneOf"/> <xsd:element ref="ox:ObjectSomeValuesFrom"/> <xsd:element ref="ox:ObjectAllValuesFrom"/> <xsd:element ref="ox:ObjectExistsSelf"/> <xsd:element ref="ox:ObjectHasValue"/> <xsd:element ref="ox:ObjectMinCardinality"/> <xsd:element ref="ox:ObjectMaxCardinality"/> <xsd:element ref="ox:ObjectExactCardinality"/> <xsd:element ref="ox:DataSomeValuesFrom"/> <xsd:element ref="ox:DataAllValuesFrom"/> <xsd:element ref="ox:DataHasValue"/> <xsd:element ref="ox:DataMinCardinality"/> <xsd:element ref="ox:DataMaxCardinality"/> <xsd:element ref="ox:DataExactCardinality"/> </xsd:choice> </xsd:group> <!-- Axioms --> <xsd:element name="SubClassOf"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:Description"/> <!-- This is the subclass --> <xsd:group ref="ox:Description"/> <!-- This is the superclass --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="EquivalentClasses"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:Description" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DisjointClasses"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:Description" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DisjointUnion"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="ox:OWLClass"/> <xsd:group ref="ox:Description" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="SubObjectPropertyOf"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:choice> <!-- This is the subproperty or the property chain --> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:element name="SubObjectPropertyChain"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:ObjectPropertyExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> </xsd:choice> <xsd:group ref="ox:ObjectPropertyExpression"/> <!-- This is the superproperty --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="EquivalentObjectProperties"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DisjointObjectProperties"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectPropertyDomain"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:group ref="ox:Description"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectPropertyRange"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:group ref="ox:Description"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="InverseObjectProperties"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression" minOccurs="2" maxOccurs="2"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="FunctionalObjectProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="InverseFunctionalObjectProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="SymmetricObjectProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="AsymmetricObjectProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ReflexiveObjectProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="IrreflexiveObjectProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="TransitiveObjectProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="SubDataPropertyOf"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:DataPropertyExpression"/> <!-- This is the subproperty --> <xsd:group ref="ox:DataPropertyExpression"/> <!-- This is the superproperty --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="EquivalentDataProperties"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:DataPropertyExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DisjointDataProperties"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:DataPropertyExpression" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataPropertyDomain"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:group ref="ox:Description"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataPropertyRange"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:group ref="ox:DataRange"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="FunctionalDataProperty"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:DataPropertyExpression"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="SameIndividual"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="ox:Individual" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DifferentIndividuals"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="ox:Individual" minOccurs="2" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ClassAssertion"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:Description"/> <xsd:element ref="ox:Individual"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="ObjectPropertyAssertion"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:element ref="ox:Individual"/> <!-- This is the source invididual --> <xsd:element ref="ox:Individual"/> <!-- This is the target individual --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="NegativeObjectPropertyAssertion"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:ObjectPropertyExpression"/> <xsd:element ref="ox:Individual"/> <!-- This is the source invididual --> <xsd:element ref="ox:Individual"/> <!-- This is the target individual --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="DataPropertyAssertion"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:element ref="ox:Individual"/> <!-- This is the source invididual --> <xsd:element ref="ox:Constant"/> <!-- This is the target value --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="NegativeDataPropertyAssertion"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:DataPropertyExpression"/> <xsd:element ref="ox:Individual"/> <!-- This is the source invididual --> <xsd:element ref="ox:Constant"/> <!-- This is the target value --> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:element name="Declaration"> <xsd:complexType> <xsd:sequence> <xsd:group ref="ox:Annotation" minOccurs="0" maxOccurs="unbounded"/> <xsd:group ref="ox:OWLEntity"/> </xsd:sequence> <xsd:attributeGroup ref="xml:specialAttrs"/> </xsd:complexType> </xsd:element> <xsd:group name="Axiom"> <xsd:choice> <xsd:element ref="ox:EntityAnnotation"/> <xsd:element ref="ox:SubClassOf"/> <xsd:element ref="ox:EquivalentClasses"/> <xsd:element ref="ox:DisjointClasses"/> <xsd:element ref="ox:DisjointUnion"/> <xsd:element ref="ox:SubObjectPropertyOf"/> <xsd:element ref="ox:EquivalentObjectProperties"/> <xsd:element ref="ox:DisjointObjectProperties"/> <xsd:element ref="ox:ObjectPropertyDomain"/> <xsd:element ref="ox:ObjectPropertyRange"/> <xsd:element ref="ox:InverseObjectProperties"/> <xsd:element ref="ox:FunctionalObjectProperty"/> <xsd:element ref="ox:InverseFunctionalObjectProperty"/> <xsd:element ref="ox:SymmetricObjectProperty"/> <xsd:element ref="ox:AsymmetricObjectProperty"/> <xsd:element ref="ox:ReflexiveObjectProperty"/> <xsd:element ref="ox:IrreflexiveObjectProperty"/> <xsd:element ref="ox:TransitiveObjectProperty"/> <xsd:element ref="ox:SubDataPropertyOf"/> <xsd:element ref="ox:EquivalentDataProperties"/> <xsd:element ref="ox:DisjointDataProperties"/> <xsd:element ref="ox:DataPropertyDomain"/> <xsd:element ref="ox:DataPropertyRange"/> <xsd:element ref="ox:FunctionalDataProperty"/> <xsd:element ref="ox:SameIndividual"/> <xsd:element ref="ox:DifferentIndividuals"/> <xsd:element ref="ox:ClassAssertion"/> <xsd:element ref="ox:ObjectPropertyAssertion"/> <xsd:element ref="ox:NegativeObjectPropertyAssertion"/> <xsd:element ref="ox:DataPropertyAssertion"/> <xsd:element ref="ox:NegativeDataPropertyAssertion"/> <xsd:element ref="ox:Declaration"/> </xsd:choice> </xsd:group> </xsd:schema>
In the EntityAnnotation element the first annotations are annotations on the axiom itself and the second annotations are annotations on the entity. In the SubClassOf element the first description is the subclass and the second is the superclass, similarly for SubObjectPropertyOf and SubDataPropertyOf. For ObjectPropertyAssertion and NegativeObjectPropertyAssertion the first individual is the source and the second is the target.