XML Presentation Syntax of OWL

Draft 30 December 2002

Masahiro Hori <horim@jp.ibm.com>

This document is non-normative.

Note: XML Schemas in this documents are defined on the basis of the XML Schema for OWL created by Peter F. Patel-Schneider. Peter's XML Schema in itself is not changed from the version as of 19 December 2002, but has been reconfigured for the adaptation to the three sublanguages of OWL.


Abstract

This document provides XML Schemas for the XML presentation sytax of OWL 1.0 sublanguages: OWL Lite, OWL DL, and OWL Full.

Table of Contents

1. Introduction
1.1 Notational Conventions
1.2 How to Use an XML Schema
2. XML Schema Modules
2.1 Common Core
2.2 Class Element Group
2.3 Description Group
2.4 Cardinality Range Type
2.5 Restriction Group
2.6 Inverse Functional Attribute of Data Property
2.7 Inverse Functional Attribute of Object Property
3. XML Schemas
3.1 Schema Drivers
3.2 Schema Modules
References

1. Introduction

This document specifies the XML presentation syntax for OWL. The OWL 1.0 language provides three increasingly expressive sublanguages: OWL Lite, OWL DL, and OWL Full. This document provides XML Schemas for XML presentation syntax corresponding to each of the three sublanguages.

A zip archive of all the Schemas for XML presentation syntax is also available.

1.1 Notational Conventions

This document uses a number of namespace prefixes as listed below. Note that the choice of any namespace prefix is arbitrary, and not semantically significant.

Prefix Namespace Notes
owl "http://www.w3.org/2002/OWL-XMLSchema" The namespace of the XML presentation syntax of OWL defined by this document
xsd "http://www.w3.org/2001/XMLSchema" The namespace of the XML Schema [XMLSchema-1]
xsi "http://www.w3.org/2001/XMLSchema-instance" The namespace of the XML Schema instance [XMLSchema-1]

No consensus yet on the namespace URI "http://www.w3.org/2002/OWL-XMLSchema"

1.2 How to Use an XML Schema

XML Schemas do not have to be specified in an OWL instance itself, but it may be specified in an instance by adding schemaLocation attribute (in the XML Schema instance namespace) to the root element. For example, if an author uses the XML Schema for OWL Lite, the start tag of the Ontology element may designate the location of the XML Schema as shown below:

<owl:Ontology 
  xmlns:owl="http://www.w3.org/2002/OWL-XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.w3.org/2002/OWL-XMLSchema
                      http://example.org/owl1-lite.xsd" >
The convention of the namespace prefix 'owl' may be confusing... alternative: 'ows' ?

A value of the xsi:schemaLocation attribute is a pair (or pairs) of URI references consisting of a namespace name and a location of an XML Schema. Note that a pair of URI references is only a hint for XML Schema processors, which may use alternative XML Schemas indicated by other names. For the further details of schema document access, see "4.3.2 How schema definitions are located on the Web" of the XML Schema Part 1 [XMLSchema-1]

2. XML Schema Modules

This document provides a set of XML Schema modules for XML presentation syntax of OWL. The design goal of this modularization is to set up a core module common to all the OWL sublanguages and define additional modules to be customized for different sublanguages. Note that the modularization here is done primarily for the adaptation to the three sublanguages, and is not designed for the arbitrary customization of OWL.

The top-level Schema document, which collects required modules together, is called a Schema driver. A driver document only includes other modules, and does not contain any markup declarations in itself. Modularization through drivers and modules is being done for the reformulation of the XHTML specification in XML Schema [XHTML m12n].

Three Schema drivers are defined for the sublanguages: OWL Lite (owl1-lite.xsd), OWL DL (owl1-dl.xsd), and OWL Full (owl1-full.xsd). Modules included into the Schema drivers are summarized in the table below. Each row in the table corresponds to a type of Schema modules to be used for a driver depending on the configuration. The three columns labled with OWL Lite, OWL DL, and OWL Full indicate which type of modules to be included into the sublanguages.

OWL LiteOWL DLOWL Full
2.1 Common Core lite lite lite
2.2 Class Element Group (inequality, equality) lite dl dl
2.3 Description Group (Complex classes) lite dl dl
2.4 Cardinality Range Type lite dl dl
2.5 Restriction Group (Property filler restriction) lite dl dl
2.6 Inverse Functional Attribute of Data Property lite lite full
2.7 Inverse Functional Attribute of Object Property lite dl dl

2.1 Common Core

This module specifies a core module (owl1-lite-core.xsd) common to all the sublanguages, and is included into every Schema driver. This core module requires additional modules explained in the following subsections.

2.2 Class Element Group

The Class Element Group modules (owl1-lite-classElementGroup.xsd and owl1-dl-classElementGroup.xsd) control the inclusion of the elements relevant to owl:Class and declared as immediate children of the root element Ontology.

The OWL Lite Schema driver (owl1-lite.xsd) includes an XML Schema module (owl1-lite-classElementGroup.xsd) that makes Class, SubClassOf, and EnumeratedClass available in OWL Lite. However, EquivalentClasses and DisjointClasses are not included in this module because they are not available in OWL Lite.

XML presentation syntax provides two ways for the enumerated classes (owl:oneOf): OntologyType/EnumeratedClass and description/OneOf. Is this correct?
(Inconsistency?) [OWL Guide] says owl:sameClassAs is included in OWL DL, while [OWL Feature] says owl:sameClassAs is in OWL Lite.
module/owl1-lite-classElementGroup.xsd
<xsd:group name="classElements">
  <xsd:choice>
    <xsd:element name="Class" type="owl:ClassAxiomType" />
    <xsd:element name="SubClassOf" type="owl:SubClassOfType" />
    <xsd:element name="EnumeratedClass" type="owl:EnumerationType" />

    <!-- Inequality and equality elements are not included --> 
  </xsd:choice>
</xsd:group>
Class element group for OWL Lite. Inequality (DisjointClasses) and equality (EquivalentClasses) elements are not included. This model group is extended by "owl1-dl-classElementGroup.xsd".

EquivalentClasses and DisjointClasses are decleared for OWL DL in owl1-dl-classElementGroup.xsd that is included by the Schema drivers for OWL DL (owl1-dl.xsd) and OWL Full (owl-full.xsd).

module/owl1-dl-classElementGroup.xsd
<xsd:redefine schemaLocation="owl1-lite-classElementGroup.xsd"> 
  <xsd:group name="classElements">   
    <xsd:choice>
      <xsd:group ref="owl:classElements" /> 
  
      <!-- Inequality and equality elements are added --> 
      <xsd:element name="DisjointClasses" type="owl:DescriptionsTypeNE" />
      <xsd:element name="EquivalentClasses" type="owl:DescriptionsTypeNE" />
    </xsd:choice>
  </xsd:group>
</xsd:redefine> 
Class element group for OWL DL. Inequality (DisjointClasses) and equality (EquivalentClasses) elements are added. This model group extends "owl1-lite-classElementGroup.xsd".

2.3 Description Group

The Description Group modules (owl1-lite-descriptionGroup.xsd and owl1-dl-descriptionGroup.xsd) control the inclusion of the elements that are declared as members of the description group.

The OWL Lite Schema driver (owl1-lite.xsd) includes an XML Schema module (owl1-lite-descriptionGroup.xsd) that makes Class, DataResiction, and IndividualRestriction available in OWL Lite. However, UnionOf, IntersectionOf, ComplementOf, and OneOf are not included in this module because they are not available in OWL Lite.

module/owl1-lite-descriptionGroup.xsd
<xsd:group name="description"> 
  <xsd:choice>
    <xsd:element name="Class" type="owl:ClassIDType"
                 minOccurs="1" maxOccurs="1" />
    <xsd:element name="DataRestriction" type="owl:DataRestrictionType"
                 minOccurs="1" maxOccurs="1" />
    <xsd:element name="IndividualRestriction" type="owl:IndividualRestrictionType"
                 minOccurs="1" maxOccurs="1" /> 

    <!-- Boolean combination and class enumeration are not included --> 
  </xsd:choice>
</xsd:group>
Description group for OWL Lite. Elements for boolean combination of class expressions (UnionOf, IntersectionOf, ComplementOf), and an element for Class enumeration (OneOf) are not included. This model group is extended by "owl1-dl-descriptionGroup.xsd".

UnionOf, IntersectionOf, ComplementOf, and OneOf are decleared for OWL DL in owl1-dl-descriptionGroup.xsd that is included by the Schema drivers for OWL DL (owl1-dl.xsd) and OWL Full (owl-full.xsd).

module/owl1-dl-descriptionGroup.xsd
<xsd:redefine schemaLocation="owl1-lite-descriptionGroup.xsd"> 
  <xsd:group name="description">   
    <xsd:choice>
      <xsd:group ref="owl:description" /> 

      <!-- Elements for boolean combination are added --> 
      <xsd:element name="UnionOf" type="owl:DescriptionsType"
                   minOccurs="1" maxOccurs="1" />
      <xsd:element name="IntersectionOf" type="owl:DescriptionsType"
                   minOccurs="1" maxOccurs="1" />
      <xsd:element name="ComplementOf" type="owl:DescriptionType"
                   minOccurs="1" maxOccurs="1" />

      <!-- An element for class enumeration is added --> 
      <xsd:element name="OneOf" type="owl:IndividualsType"
                   minOccurs="1" maxOccurs="1" />
    </xsd:choice>
  </xsd:group>
</xsd:redefine> 
Description group for OWL DL. Elements for boolean combination of class expressions (UnionOf, IntersectionOf, ComplementOf), and an element for Class enumeration (OneOf) are added. This model group extends "owl1-lite-descriptionGroup.xsd".

2.4 Cardinality Range Type

The Cardinality Range Type modules (owl1-lite-cardinalityRangeType.xsd and owl1-dl-cardinalityRangeType.xsd) allows to change the cardinality restriction features. OWL Lite only permits cardinality values of 0 or 1, while arbitrary non-negative integers are allowed for OWL DL and OWL Full.

In the XML presentation syntax, cardinality restrictions are represented as attributes (minCardinality, maxCardinality, and cardinality) of DataRestriction and IndividualRestriction elements. As shown below, a simple type definition CardinalityRangeType is used for expressing the constraints on cardinality attributes of DataRestriction and IndividualRestriction elements (see the excerption of the complex type definitions below).

Excerption from "module/owl1-lite-core.xsd"
<xsd:complexType name="DataRestrictionType"> 
  <xsd:sequence minOccurs="0" maxOccurs="unbounded">
    <xsd:group ref="owl:dataRestriction" /> 
  </xsd:sequence>
  <xsd:attribute name="property" type="owl:DataPropertyName" 
                 use="required" />
  <xsd:attribute name="minCardinality" type="owl:CardinalityRangeType" />
  <xsd:attribute name="maxCardinality" type="owl:CardinalityRangeType" />
  <xsd:attribute name="cardinality"    type="owl:CardinalityRangeType" /> 
</xsd:complexType>

<xsd:complexType name="IndividualRestrictionType">  
  <xsd:sequence minOccurs="0" maxOccurs="unbounded">
    <xsd:group ref="owl:individualRestriction" /> 
  </xsd:sequence>
  <xsd:attribute name="property" type="owl:IndividualPropertyName" 
                 use="required" />
  <xsd:attribute name="minCardinality" type="owl:CardinalityRangeType" />
  <xsd:attribute name="maxCardinality" type="owl:CardinalityRangeType" />
  <xsd:attribute name="cardinality"    type="owl:CardinalityRangeType" /> 
</xsd:complexType>

The OWL Lite Schema driver (owl1-lite.xsd) includes an XML Schema module (owl1-lite-cardinalityRangeType.xsd) with the cardinality range type that only permits cardinality values of 0 or 1.

module/owl1-lite-cardinalityRangeType.xsd
<xsd:simpleType name="CardinalityRangeType"> 
  <xsd:restriction base="xsd:nonNegativeInteger"> 
    <xsd:minInclusive value="0" />
    <xsd:maxInclusive value="1" />
  </xsd:restriction>
</xsd:simpleType>
Cardinality Range Type for OWL Lite. Cardinality value is restricted to either 0 or 1.

The definition of the cardinality range type is extended for OWL DL in owl1-dl-cardinalityRangeType.xsd, so that cardinality values can be arbitrary non-negative integers. The schema module with the extended range type is included by the Schema drivers for OWL DL (owl1-dl.xsd) and OWL Full (owl-full.xsd).

module/owl1-dl-cardinalityRangeType.xsd
<xsd:simpleType name="CardinalityRangeType">
  <xsd:restriction base="xsd:nonNegativeInteger" /> 
</xsd:simpleType>
Cardinality Range Type for OWL DL. Cardinality value can be an arbitrary non-negative integer.

2.5 Restriction Group

The Restriction Group modules (owl1-lite-restrictionGroup.xsd and owl1-dl-restrictionGroup.xsd) control the inclusion of the elements for property filler restriction listed below.

The OWL Lite Schema driver (owl1-lite.xsd) includes an XML Schema module (owl1-lite-restrictionGroup.xsd) that makes allValuesFrom and someValueFrom elements available for both data and individual restrictions in OWL Lite. However, value elements are not included in this module because they are not available in OWL Lite.

module/owl1-lite-restrictionGroup.xsd
<xsd:group name="dataRestriction">
  <xsd:choice>
    <xsd:element name="allValuesFrom" type="owl:DataRangeType" />
    <xsd:element name="someValueFrom" type="owl:DataRangeType" />
    <!-- An element for property filler restriction (value) is not included --> 
  </xsd:choice>
</xsd:group>

<xsd:group name="individualRestriction"> 
  <xsd:choice>
    <xsd:element name="allValuesFrom" type="owl:DescriptionsType" />
    <xsd:element name="someValueFrom" type="owl:DescriptionsType" />
    <!-- An element for property filler restriction (value) is not included --> 
  </xsd:choice>
</xsd:group>
Restriction group for OWL Lite. An element for property filler restriction (value) is not included. This model group is extended by "owl1-dl-restrictionGroup.xsd".

Additional value restriction elements (value) for data and individual restrictions are declared for OWL DL in owl1-dl-restrictionGroup.xsd that is included by the Schema drivers for OWL DL (owl1-dl.xsd) and OWL Full (owl-full.xsd).

module/owl1-dl-restrictionGroup.xsd
<xsd:redefine schemaLocation="owl1-lite-restrictionGroup.xsd"> 
  <xsd:group name="dataRestriction">   
    <xsd:choice>
      <xsd:group ref="owl:dataRestriction" /> 
      <!-- A element for property filler restriction (value) is added --> 
      <xsd:element name="value" type="xsd:anySimpleType" />
    </xsd:choice>
  </xsd:group>

  <xsd:group name="individualRestriction"> 
    <xsd:choice>
      <xsd:group ref="owl:individualRestriction" /> 
      <!-- A element for property filler restriction (value) is added --> 
      <xsd:element name="value" type="owl:IndividualIDType" />
    </xsd:choice>
  </xsd:group>
</xsd:redefine> 
Restriction group for OWL DL. Elements for property filler restriction (value) are added for both data and individual restriction. This model group extends "owl1-lite-restrictionGroup.xsd".

2.6 Inverse Functional Attribute of Data Property

Datatype Property may be declared as inverse functional in OWL Full, while it must not be in OWL DL and OWL Lite. Note that Object Property may be declared as inverse functional not only in OWL Full but also in OWL DL (see also the section 2.7 Inverse Functional Attribute of Object Property).

The Schema drivers for OWL Lite (owl1-lite.xsd) and OWL DL (owl1-dl.xsd) include a module (owl1-lite-dataPropInverseFuncAttr.xsd) for the inverse functional attribute of Datatype Property to be fixed as 'false'.

module/owl1-lite-dataPropInverseFuncAttr.xsd
<xsd:attributeGroup name="dataPropInverseFuncAttr"> 
  <xsd:attribute name="inverseFunctional" type="xsd:boolean" fixed="false" /> 
</xsd:attributeGroup>

On the other hand, the inverse functional attribute of Datatype Property is set to 'false' by default (and may be changed to 'true' as needed) in the module for OWL Full (owl1-full-dataPropInverseFuncAttr.xsd) that is included by the OWL Full Schema driver (owl1-full.xsd).

module/owl1-full-dataPropInverseFuncAttr.xsd
<xsd:attributeGroup name="dataPropInverseFuncAttr"> 
  <xsd:attribute name="inverseFunctional" type="xsd:boolean" default="false" />
</xsd:attributeGroup>

2.7 Inverse Functional Attribute of Object Property

Object Property may be declared as inverse functional in OWL DL and OWL Full, while it must not be in OWL Lite. Note that Datatype Property must not be inverse functional in OWL DL and OWL Lite (see also the section 2.6 Inverse Functional Attribute of Data Property).

The Schema drivers for OWL Lite (owl1-lite.xsd) includes a module (owl1-lite-dataPropInverseFuncAttr.xsd) for the inverse functional attribute of Object Property to be fixed as 'false'.

module/owl1-lite-objPropInverseFuncAttr.xsd
<xsd:attributeGroup name="objectPropInverseFuncAttr"> 
  <xsd:attribute name="inverseFunctional" type="xsd:boolean" fixed="false" />
</xsd:attributeGroup>

On the other hand, the inverse functional attribute of Object Property is set to 'false' by default (and may be changed to 'true' as needed) in the module (owl1-full-dataPropInverseFuncAttr.xsd) for OWL DL that is included by the Schema drivers for OWL DL (owl1-dl.xsd) and OWL Full (owl1-full.xsd).

module/owl1-dl-objectPropInverseFuncAttr.xsd
<xsd:attributeGroup name="objectPropInverseFuncAttr"> 
  <xsd:attribute name="inverseFunctional" type="xsd:boolean" default="false" />
</xsd:attributeGroup>

3. XML Schemas

3.1 Schema Drivers

3.1.1 OWL Lite Schema Driver

owl1-lite.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:owl="http://www.w3.org/2002/OWL-XMLSchema"
    targetNamespace="http://www.w3.org/2002/OWL-XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="qualified">

  <xsd:annotation>
    <xsd:documentation>
      XML Schema driver for OWL 1.0 Lite
    </xsd:documentation> 
  </xsd:annotation>

  <xsd:include schemaLocation="module/owl1-lite-core.xsd" />
  <xsd:include schemaLocation="module/owl1-lite-classElementGroup.xsd" /> 
  <xsd:include schemaLocation="module/owl1-lite-descriptionGroup.xsd" /> 
  <xsd:include schemaLocation="module/owl1-lite-cardinalityRangeType.xsd" /> 
  <xsd:include schemaLocation="module/owl1-lite-restrictionGroup.xsd" /> 
  <xsd:include schemaLocation="module/owl1-lite-dataPropInverseFuncAttr.xsd" /> 
  <xsd:include schemaLocation="module/owl1-lite-objectPropInverseFuncAttr.xsd" /> 
</xsd:schema>

3.1.2 OWL DL Schema Driver

owl1-dl.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:owl="http://www.w3.org/2002/OWL-XMLSchema"
    targetNamespace="http://www.w3.org/2002/OWL-XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="qualified">

  <xsd:annotation>
    <xsd:documentation>
      XML Schema driver for OWL 1.0 DL
    </xsd:documentation> 
  </xsd:annotation>

  <xsd:include schemaLocation="module/owl1-lite-core.xsd" />
  <xsd:include schemaLocation="module/owl1-dl-classElementGroup.xsd" /> 
  <xsd:include schemaLocation="module/owl1-dl-descriptionGroup.xsd" /> 
  <xsd:include schemaLocation="module/owl1-dl-cardinalityRangeType.xsd" /> 
  <xsd:include schemaLocation="module/owl1-dl-restrictionGroup.xsd" /> 
  <xsd:include schemaLocation="module/owl1-lite-dataPropInverseFuncAttr.xsd" /> 
  <xsd:include schemaLocation="module/owl1-dl-objectPropInverseFuncAttr.xsd" /> 
</xsd:schema>

3.1.3 OWL Full Schema Driver

owl1-full.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:owl="http://www.w3.org/2002/OWL-XMLSchema"
    targetNamespace="http://www.w3.org/2002/OWL-XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="qualified">

  <xsd:annotation>
    <xsd:documentation>
      XML Schema driver for OWL 1.0 Full
    </xsd:documentation> 
  </xsd:annotation>

  <xsd:include schemaLocation="module/owl1-lite-core.xsd" />
  <xsd:include schemaLocation="module/owl1-dl-classElementGroup.xsd" /> 
  <xsd:include schemaLocation="module/owl1-dl-descriptionGroup.xsd" /> 
  <xsd:include schemaLocation="module/owl1-dl-cardinalityRangeType.xsd" /> 
  <xsd:include schemaLocation="module/owl1-dl-restrictionGroup.xsd" /> 
  <xsd:include schemaLocation="module/owl1-full-dataPropInverseFuncAttr.xsd" /> 
  <xsd:include schemaLocation="module/owl1-dl-objectPropInverseFuncAttr.xsd" /> 
</xsd:schema>

3.2 Schema Modules

3.2.1 Common Core Module

module/owl1-lite-core.xsd
<!--		XML Schema for OWL
                Peter F. Patel-Schneider, Bell Labs Research
                19 December 2002

  This is an XML schema for an XML syntax for OWL.  
  I have included some comments in-line, to show what is going on. 

  This XML Schema defines an XML dialect similar to the OWL abstract syntax.
  For arcane technical reasons it is somewhat more general in a few places,
  allowing zero or more descriptions where a single description is allowed in 
  the OWL abstract syntax.  Each of these places can be translated to the OWL 
  abstract syntax by wrapping the descriptions in an intersectionOf.
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:owl="http://www.w3.org/2002/OWL-XMLSchema"
    targetNamespace="http://www.w3.org/2002/OWL-XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="qualified"> 

  <xsd:annotation>
    <xsd:documentation>
      This module (module/owl1-lite-core.xsd) specifies a core 
      module common to all the OWL sublanguages, and is included 
      into every Schema driver. 
    </xsd:documentation>
  </xsd:annotation>

<!-- A OWL document contains an ontology, 
     which has includes, axioms, and facts. -->

<xsd:element name="Ontology" type="owl:OntologyType" >
  <xsd:unique name="classNameUniqueness"> 
    <xsd:annotation>
      <xsd:documentation>
        This constraint ensures that every class name is unique 
        in an ontology document. 
      </xsd:documentation>
    </xsd:annotation>
    <xsd:selector xpath="owl:Class" /> 
    <xsd:field xpath="@owl:name" /> 
  </xsd:unique>

</xsd:element> 


<xsd:complexType name="OntologyType">
  <xsd:sequence minOccurs="0" maxOccurs="unbounded">
    <xsd:choice>
      <xsd:element name="Imports" type="owl:IncludeType" />
      <xsd:element name="Annotation" type="owl:AnnotationType" />

      <!-- ***************************************************** -->
      <!--   + owl:classElements (xsd:group)                     --> 
      <!--  is incluced from                                     --> 
      <!--    either owl1-lite-classElementGroup.xsd             --> 
      <!--        or owl1-dl-classElementGroup.xsd               --> 
      <!-- ***************************************************** -->
      <xsd:group ref="owl:classElements" />

      <xsd:element name="DatatypeProperty" type="owl:DataPropertyAxiomType" />
      <xsd:element name="ObjectProperty" type="owl:ObjectPropertyAxiomType" />
      <!-- The conditions on relationships between properties are 
	   context-sensitive so this lets any property in -->
      <xsd:element name="EquivalentProperties" type="owl:PropertiesTypeNE" />
      <xsd:element name="SubPropertyOf" type="owl:SubPropertyOfType" />
 
      <xsd:element name="Individual" type="owl:IndividualType" />
      <xsd:element name="SameIndividual" type="owl:IndividualsTypeNE" />
      <xsd:element name="DifferentIndividuals" type="owl:IndividualsTypeNE" />
 
    </xsd:choice>
  </xsd:sequence>
  <xsd:attribute name="name" type="owl:OntologyName" />
</xsd:complexType>


<!-- Imports points to another ontology -->

<xsd:complexType name="IncludeType">
  <xsd:attribute name="ontology" type="xsd:anyURI" use="required"/>
</xsd:complexType>

<!-- Annotations allow arbitrary uninterpreted information to be added to
     ontologies -->

<xsd:complexType name="AnnotationType">
  <xsd:attribute name="subject" type="xsd:anyURI" use="required"/>
  <xsd:attribute name="object" type="xsd:anyURI" use="required"/>
</xsd:complexType>

<!-- The body of a class axiom is a potentially empty sequence of
     descriptions.  Attributes provide the name of the class and the
     modality for the class. --> 

<xsd:complexType name="ClassAxiomType">
  <xsd:sequence minOccurs="0" maxOccurs="unbounded">
    <xsd:group ref="owl:description" />
  </xsd:sequence>
  <xsd:attribute name="name" type="owl:ClassName" use="required" />
  <xsd:attribute name="complete" type="xsd:boolean" use="required" />
</xsd:complexType>

<!-- An enumeration is just a sequence of individuals,
     suitably encapsulated. -->

<xsd:complexType name="EnumerationType">
  <xsd:group ref="owl:individuals" />
  <xsd:attribute name="name" type="owl:ClassName" use="required" />
</xsd:complexType>

<!-- Disjoint and Equivalent for classes take a non-empty group of
     descriptions. -->

<xsd:complexType name="DescriptionsTypeNE"> 
  <xsd:sequence minOccurs="1" maxOccurs="unbounded">
    <xsd:group ref="owl:description" />
  </xsd:sequence>
</xsd:complexType>

<!-- A subclassOf statement is just two descriptions, sub and super. -->

<xsd:complexType name="SubClassOfType">
  <xsd:all>
    <xsd:element name="sub" type="owl:DescriptionType"
                 minOccurs="1" maxOccurs="1" />
    <xsd:element name="super" type="owl:DescriptionType"
                 minOccurs="1" maxOccurs="1" />
  </xsd:all>
</xsd:complexType>

<!-- Property axioms contain supers, domains, and ranges, along
     with characteristics of the property. -->

<xsd:complexType name="DataPropertyAxiomType">
  <xsd:sequence minOccurs="0" maxOccurs="unbounded">
    <xsd:choice>
      <xsd:element name="super"  type="owl:DataPropertyIDType" />
      <xsd:element name="domain" type="owl:DescriptionsType" />
      <xsd:element name="range"  type="owl:DataRangeType" />
    </xsd:choice>
  </xsd:sequence>
  <xsd:attribute name="name" type="owl:DataPropertyName" use="required" />
  <xsd:attribute name="functional" type="xsd:boolean" default="false" /> 

  <!-- 'owl:dataPropInverseFuncAttr' is included from    --> 
  <!--    either 'owl1-lite-dataPropInverseFuncAttr.xsd' --> 
  <!--    or     'owl1-full-dataPropInverseFuncAttr.xsd' --> 
  <xsd:attributeGroup ref="owl:dataPropInverseFuncAttr" /> 
</xsd:complexType>

<xsd:complexType name="ObjectPropertyAxiomType">
  <xsd:sequence minOccurs="0" maxOccurs="unbounded">
    <xsd:choice>
      <xsd:element name="super"  type="owl:IndividualPropertyIDType" />
      <xsd:element name="domain" type="owl:DescriptionsType" />
      <xsd:element name="range"  type="owl:DescriptionsType" />
    </xsd:choice>
  </xsd:sequence>
  <xsd:attribute name="name" type="owl:IndividualPropertyName" use="required" />
  <xsd:attribute name="inverseOf"  type="owl:IndividualPropertyName" />
  <xsd:attribute name="transitive" type="xsd:boolean" default="false" />
  <xsd:attribute name="symmetric"  type="xsd:boolean" default="false" />
  <xsd:attribute name="functional" type="xsd:boolean" default="false" />

  <!-- 'owl:objectPropInverseFuncAttr' is included from    --> 
  <!--    either 'owl1-lite-objectPropInverseFuncAttr.xsd' --> 
  <!--    or     'owl1-dl-objectPropInverseFuncAttr.xsd'   --> 
  <xsd:attributeGroup ref="owl:objectPropInverseFuncAttr" /> 
</xsd:complexType>


<!-- Datatypes and sets of values can show up in data property ranges. -->

<xsd:complexType name="DataRangeType">
  <xsd:sequence>
    <xsd:element name="OneOf" type="owl:DataValuesType"
                 minOccurs="0" maxOccurs="1" />
  </xsd:sequence>
  <xsd:attribute name="datatype" type="owl:DatatypeName" />
</xsd:complexType>


<!-- EquivalentProperties takes several propertyIDs, 
     all of the same variety (not expressed here) . -->

<xsd:complexType name="PropertiesTypeNE">    
  <xsd:sequence>
    <xsd:element name="property" type="owl:PropertyIDType"
                 minOccurs="1" maxOccurs="unbounded" />
  </xsd:sequence>
</xsd:complexType>

<!-- A subproperty statement is just two propertyIDs, sub and super, 
     with the following restrictions (not expressed here)
     if sub is a data property then super must be a data property
     if sub is a simple property then super must be an individual property.
     There are other restrictions having to do with transitivity and
     cardinalites. 
-->

<xsd:complexType name="SubPropertyOfType">
  <xsd:attribute name="sub" type="owl:PropertyName" use="required" />
  <xsd:attribute name="super" type="owl:PropertyName" use="required" />
</xsd:complexType>


<!-- **************************************************** -->
<!--   + owl:description (xsd:group)                      --> 
<!--  is included from                                    --> 
<!--     either  owl1-lite-descriptionGroup.xsd           --> 
<!--         or  owl1-dl-descriptionGroup.xsd             --> 
<!-- **************************************************** -->


<xsd:complexType name="DescriptionType"> 
  <xsd:group ref="owl:description" />
</xsd:complexType>

<xsd:complexType name="DescriptionsType"> 
  <xsd:sequence minOccurs="0" maxOccurs="unbounded">
    <xsd:group ref="owl:description" />
  </xsd:sequence>
  <xsd:attribute name="class" type="owl:ClassName" />
</xsd:complexType>

<!-- All types of restrictions have the property name as an attribute, an
     optional cardinality, zero or more ranges, zero or more required
     restrictions, and zero or more value restrictions. 
     There is a side condition that restrictions on transitive properties
     and their sub-properties cannot have cardinality constraints.
-->  

<xsd:complexType name="DataRestrictionType"> 
  <xsd:sequence minOccurs="0" maxOccurs="unbounded">
    <xsd:group ref="owl:dataRestriction" /> 
  </xsd:sequence>
  <xsd:attribute name="property" type="owl:DataPropertyName" 
                 use="required" />
  <xsd:attribute name="minCardinality" type="owl:CardinalityRangeType" />
  <xsd:attribute name="maxCardinality" type="owl:CardinalityRangeType" />
  <xsd:attribute name="cardinality"    type="owl:CardinalityRangeType" /> 
</xsd:complexType>

<xsd:complexType name="IndividualRestrictionType">  
  <xsd:sequence minOccurs="0" maxOccurs="unbounded">
    <xsd:group ref="owl:individualRestriction" /> 
  </xsd:sequence>
  <xsd:attribute name="property" type="owl:IndividualPropertyName" 
                 use="required" />
  <xsd:attribute name="minCardinality" type="owl:CardinalityRangeType" />
  <xsd:attribute name="maxCardinality" type="owl:CardinalityRangeType" />
  <xsd:attribute name="cardinality"    type="owl:CardinalityRangeType" /> 
</xsd:complexType>


<!-- **************************************************** -->
<!--   + owl:dataRestriction (xsd:group)                  --> 
<!--   + owl:individualRestriction (xsd:group)            --> 
<!--  are included from                                   --> 
<!--     either owl1-lite-restrictionGroup.xsd            --> 
<!--         or owl1-dl-restrictionGroup.xsd              --> 
<!-- **************************************************** -->

<!-- **************************************************** -->
<!--   + owl:CardinalityRangeType (xsd:simpleType)        --> 
<!--  is included from                                    --> 
<!--     either owl1-lite-cardinalityRangeType.xsd        --> 
<!--         or owl1-dl-cardinalityRangeType.xsd          --> 
<!-- **************************************************** -->


<!-- Facts about individuals have several types and property
     information, including nested facts.  -->

<xsd:complexType name="IndividualType">        
  <xsd:sequence minOccurs="0" maxOccurs="unbounded">
    <xsd:choice>
      <xsd:element name="type" type="owl:ClassIDType" />
      <xsd:element name="ObjectPropertyValue" 
                   type="owl:IndividualPropertyValueType" />
      <xsd:element name="DataPropertyValue" 
                   type="owl:DataPropertyValueType" />
    </xsd:choice>
  </xsd:sequence>
  <xsd:attribute name="name" type="owl:IndividualName" />
</xsd:complexType>

<xsd:complexType name="IndividualPropertyValueType"> 
  <xsd:group ref="owl:individuals" />
  <xsd:attribute name="property" type="owl:IndividualPropertyName"
                 use="required" />
</xsd:complexType>

<xsd:complexType name="DataPropertyValueType"> 
  <xsd:group ref="owl:datavalues" />
  <xsd:attribute name="property" type="owl:DataPropertyName"
                 use="required" />
</xsd:complexType>

<xsd:group name="individuals">
  <xsd:sequence>
    <xsd:element name="Individual" type="owl:IndividualType"
                 minOccurs="0" maxOccurs="unbounded" />
  </xsd:sequence>
</xsd:group>

<xsd:complexType name="IndividualsType">   
  <xsd:group ref="owl:individuals" />
</xsd:complexType>

<xsd:complexType name="IndividualsTypeNE">   
  <xsd:sequence>
    <xsd:element name="Individual" type="owl:IndividualType"
                 minOccurs="1" maxOccurs="unbounded" />
  </xsd:sequence>
</xsd:complexType>

<xsd:group name="datavalues">
  <xsd:sequence>
    <xsd:element name="DataValue" type="xsd:anySimpleType"
                 minOccurs="0" maxOccurs="unbounded" />
  </xsd:sequence>
</xsd:group>

<xsd:complexType name="DataValuesType">   
  <xsd:group ref="owl:datavalues" />
</xsd:complexType>



<!-- Finally, some utility types for the various kinds of names. -->

<xsd:complexType name="ClassIDType">
  <xsd:attribute name="name" type="owl:ClassName" use="required"/>
</xsd:complexType>

<xsd:complexType name="DatatypeIDType">
  <xsd:attribute name="name" type="owl:DatatypeName" use="required" />
</xsd:complexType>

<xsd:complexType name="PropertyIDType">
  <xsd:attribute name="name" type="owl:PropertyName" use="required"/>
</xsd:complexType>

<xsd:complexType name="DataPropertyIDType">
  <xsd:attribute name="name" type="owl:DataPropertyName" use="required"/>
</xsd:complexType>

<xsd:complexType name="IndividualPropertyIDType">
  <xsd:attribute name="name" type="owl:IndividualPropertyName" use="required"/>
</xsd:complexType>

<xsd:complexType name="IndividualIDType">
  <xsd:attribute name="name" type="owl:IndividualName" use="required"/>
</xsd:complexType>

<xsd:simpleType name="OntologyName">
  <xsd:restriction base="xsd:anyURI" />
</xsd:simpleType>

<xsd:simpleType name="ClassName">
  <xsd:restriction base="xsd:anyURI" />
</xsd:simpleType>

<xsd:simpleType name="DatatypeName">
  <xsd:restriction base="xsd:anyURI" />
</xsd:simpleType>

<xsd:simpleType name="PropertyName">
  <xsd:restriction base="xsd:anyURI" />
</xsd:simpleType>

<xsd:simpleType name="DataPropertyName">
  <xsd:restriction base="xsd:anyURI" />
</xsd:simpleType>

<xsd:simpleType name="IndividualPropertyName">
  <xsd:restriction base="xsd:anyURI" />
</xsd:simpleType>

<xsd:simpleType name="IndividualName">
  <xsd:restriction base="xsd:anyURI" />
</xsd:simpleType>

</xsd:schema>

3.2.2 Class Element Group Module

module/owl1-lite-classElementGroup.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:owl="http://www.w3.org/2002/OWL-XMLSchema"
    targetNamespace="http://www.w3.org/2002/OWL-XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="qualified">

  <xsd:annotation>
    <xsd:documentation>
      Class element group for OWL Lite.  
      Inequality (DisjointClasses) and equality (EquivalentClasses) 
      elements are not included. 
      This model group is extended by "owl1-dl-classElementGroup.xsd". 
    </xsd:documentation>
  </xsd:annotation>

  <xsd:group name="classElements">
    <xsd:choice>
      <xsd:element name="Class" type="owl:ClassAxiomType" />
      <xsd:element name="SubClassOf" type="owl:SubClassOfType" />
      <xsd:element name="EnumeratedClass" type="owl:EnumerationType" />

      <!-- Inequality and equality elements are not included --> 
    </xsd:choice>
  </xsd:group>

</xsd:schema>
module/owl1-dl-classElementGroup.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:owl="http://www.w3.org/2002/OWL-XMLSchema"
    targetNamespace="http://www.w3.org/2002/OWL-XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="qualified">

  <xsd:annotation>
    <xsd:documentation>
      Class element group for OWL DL.  
      Elements for inequality (DisjointClasses) and equality 
      (EquivalentClasses) are added. 
      This model group extends "owl1-lite-classElementGroup.xsd". 
    </xsd:documentation>
  </xsd:annotation>

  <xsd:redefine schemaLocation="owl1-lite-classElementGroup.xsd"> 
    <xsd:group name="classElements">   
      <xsd:choice>
        <xsd:group ref="owl:classElements" /> 
  
        <!-- Inequality and equality elements are added --> 
        <xsd:element name="DisjointClasses" type="owl:DescriptionsTypeNE" />
        <xsd:element name="EquivalentClasses" type="owl:DescriptionsTypeNE" />
      </xsd:choice>
    </xsd:group>
  </xsd:redefine> 

</xsd:schema>

3.2.3 Description Group Module

module/owl1-lite-descriptionGroup.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:owl="http://www.w3.org/2002/OWL-XMLSchema"
    targetNamespace="http://www.w3.org/2002/OWL-XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="qualified">

  <xsd:annotation>
    <xsd:documentation>
      Description group for OWL Lite.  
      Elements for boolean combination of class expressions 
      (UnionOf, IntersectionOf, ComplementOf), and an element 
      for Class enumeration (OneOf) are not included. 
      This model group is extended by "owl1-dl-descriptionGroup.xsd". 
    </xsd:documentation>
  </xsd:annotation>

<!-- Descriptions are either named classes, property restrictions,
     oneOfs, or boolean combinations of descriptions. -->

  <xsd:group name="description"> 
    <xsd:choice>
      <xsd:element name="Class" type="owl:ClassIDType"
                   minOccurs="1" maxOccurs="1" />
      <xsd:element name="DataRestriction" type="owl:DataRestrictionType"
                   minOccurs="1" maxOccurs="1" />
      <xsd:element name="IndividualRestriction" type="owl:IndividualRestrictionType"
                   minOccurs="1" maxOccurs="1" /> 

      <!-- Boolean combination and class enumeration are not included --> 
    </xsd:choice>
  </xsd:group>

</xsd:schema>
module/owl1-dl-descriptionGroup.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:owl="http://www.w3.org/2002/OWL-XMLSchema"
    targetNamespace="http://www.w3.org/2002/OWL-XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="qualified">

  <xsd:annotation>
    <xsd:documentation>
      Description group for OWL DL. 
      Elements for boolean combination of class expressions 
      (UnionOf, IntersectionOf, ComplementOf), and an element 
      for Class enumeration (OneOf) are included. 
      This model group extends "owl1-lite-descriptionGroup.xsd". 
    </xsd:documentation>
  </xsd:annotation>

  <xsd:redefine schemaLocation="owl1-lite-descriptionGroup.xsd"> 
    <xsd:group name="description">   
      <xsd:choice>
        <xsd:group ref="owl:description" /> 

        <!-- Elements for boolean combination are added --> 
        <xsd:element name="UnionOf" type="owl:DescriptionsType"
                     minOccurs="1" maxOccurs="1" />
        <xsd:element name="IntersectionOf" type="owl:DescriptionsType"
                     minOccurs="1" maxOccurs="1" />
        <xsd:element name="ComplementOf" type="owl:DescriptionType"
                     minOccurs="1" maxOccurs="1" />

        <!-- An element for class enumeration is added --> 
        <xsd:element name="OneOf" type="owl:IndividualsType"
                     minOccurs="1" maxOccurs="1" />
      </xsd:choice>
    </xsd:group>
  </xsd:redefine> 

</xsd:schema>

3.2.4 Cardinality Range Type Module

module/owl1-lite-cardinalityRangeType.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:owl="http://www.w3.org/2002/OWL-XMLSchema"
    targetNamespace="http://www.w3.org/2002/OWL-XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="qualified">

  <xsd:annotation>
    <xsd:documentation>
      Cardinality Range Type for OWL Lite.  
      Cardinality value is restricted to either 0 or 1. 
    </xsd:documentation>
  </xsd:annotation>

  <xsd:simpleType name="CardinalityRangeType"> 
    <xsd:restriction base="xsd:nonNegativeInteger"> 
      <xsd:minInclusive value="0" /> 
      <xsd:maxInclusive value="1" />
    </xsd:restriction>
  </xsd:simpleType>

</xsd:schema>
module/owl1-dl-cardinalityRangeType.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:owl="http://www.w3.org/2002/OWL-XMLSchema"
    targetNamespace="http://www.w3.org/2002/OWL-XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="qualified"> 

  <xsd:annotation>
    <xsd:documentation>
      Cardinality Range Type for OWL DL. 
      Cardinality value can be an arbitrary non-negative integer. 
    </xsd:documentation>
  </xsd:annotation>

  <xsd:simpleType name="CardinalityRangeType">
    <xsd:restriction base="xsd:nonNegativeInteger" /> 
  </xsd:simpleType>

</xsd:schema>

3.2.5 Restriction Group Module

module/owl1-lite-restrictionGroup.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:owl="http://www.w3.org/2002/OWL-XMLSchema"
    targetNamespace="http://www.w3.org/2002/OWL-XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="qualified">

  <xsd:annotation>
    <xsd:documentation>
      Restriction group for OWL Lite.  
      An element for property filler restriction (value) is not included. 
      This model group is extended by "owl1-dl-restrictionGroup.xsd". 
    </xsd:documentation>
  </xsd:annotation>

  <xsd:group name="dataRestriction">
    <xsd:choice>
      <xsd:element name="allValuesFrom" type="owl:DataRangeType" />
      <xsd:element name="someValueFrom" type="owl:DataRangeType" />
      <!-- An element for property filler restriction (value) is not included --> 
    </xsd:choice>
  </xsd:group>
  
  <xsd:group name="individualRestriction"> 
    <xsd:choice>
      <xsd:element name="allValuesFrom" type="owl:DescriptionsType" />
      <xsd:element name="someValueFrom" type="owl:DescriptionsType" />
      <!-- An element for property filler restriction (value) is not included --> 
    </xsd:choice>
  </xsd:group>

</xsd:schema>
module/owl1-dl-restrictionGroup.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:owl="http://www.w3.org/2002/OWL-XMLSchema"
    targetNamespace="http://www.w3.org/2002/OWL-XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="qualified">

  <xsd:annotation>
    <xsd:documentation>
      Restriction group for OWL DL.  
      Elements for property filler restriction (value) are added 
      for both data and individual restriction. 
      This model group extends "owl1-lite-restrictionGroup.xsd". 
    </xsd:documentation>
  </xsd:annotation>

  <xsd:redefine schemaLocation="owl1-lite-restrictionGroup.xsd"> 
    <xsd:group name="dataRestriction">   
      <xsd:choice>
        <xsd:group ref="owl:dataRestriction" /> 
        <!-- A element for property filler restriction (value) is added --> 
        <xsd:element name="value" type="xsd:anySimpleType" />
      </xsd:choice>
    </xsd:group>

    <xsd:group name="individualRestriction"> 
      <xsd:choice>
        <xsd:group ref="owl:individualRestriction" /> 
        <!-- A element for property filler restriction (value) is added --> 
        <xsd:element name="value" type="owl:IndividualIDType" />
      </xsd:choice>
    </xsd:group>
  </xsd:redefine> 

</xsd:schema>

3.2.6 Data Property's Inverse Functional Attribute Module

module/owl1-lite-dataPropInverseFuncAttr.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:owl="http://www.w3.org/2002/OWL-XMLSchema"
    targetNamespace="http://www.w3.org/2002/OWL-XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="qualified">

  <xsd:annotation>
    <xsd:documentation>
      'inverseFunctional' attribute of DataPropertyAxiomType 
      is fixed as 'false' for OWL Lite and OWL DL. 
      The attribute value is set to 'false' by default for OWL Full 
      in "owl1-full-dataPropInverseFuncAttr.xsd". 
    </xsd:documentation>
  </xsd:annotation>

  <xsd:attributeGroup name="dataPropInverseFuncAttr"> 
    <xsd:attribute name="inverseFunctional" type="xsd:boolean" fixed="false" /> 
  </xsd:attributeGroup>

</xsd:schema>
module/owl1-full-dataPropInverseFuncAttr.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:owl="http://www.w3.org/2002/OWL-XMLSchema"
    targetNamespace="http://www.w3.org/2002/OWL-XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="qualified">

  <xsd:annotation>
    <xsd:documentation>
      'inverseFunctional' attribute of DataPropertyAxiomType is set 
      to 'false' by default  (and may be changed to 'true' as needed) 
      for OWL Full. 
      The attribute value is fixed as 'false' for OWL Lite and LD 
      in "owl1-lite-dataPropInverseFuncAttr.xsd". 
    </xsd:documentation>
  </xsd:annotation>

  <xsd:attributeGroup name="dataPropInverseFuncAttr"> 
    <xsd:attribute name="inverseFunctional" type="xsd:boolean" default="false" />
  </xsd:attributeGroup>

</xsd:schema>

3.2.7 Object Property's Inverse Functional Attribute Module

module/owl1-lite-objPropInverseFuncAttr.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:owl="http://www.w3.org/2002/OWL-XMLSchema"
    targetNamespace="http://www.w3.org/2002/OWL-XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="qualified">

  <xsd:annotation>
    <xsd:documentation>
      'inverseFunctional' attribute of ObjectPropertyAxiomType 
      is fixed as 'false' for OWL Lite. 
      The attribute value is set to 'false' by default for OWL DL 
      in "owl1-dl-objPropInverseFuncAttr.xsd". 
    </xsd:documentation>
  </xsd:annotation>

  <xsd:attributeGroup name="objectPropInverseFuncAttr"> 
    <xsd:attribute name="inverseFunctional" type="xsd:boolean" fixed="false" />
  </xsd:attributeGroup>

</xsd:schema>
module/owl1-dl-objectPropInverseFuncAttr.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:owl="http://www.w3.org/2002/OWL-XMLSchema"
    targetNamespace="http://www.w3.org/2002/OWL-XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="qualified">

  <xsd:annotation>
    <xsd:documentation>
      'inverseFunctional' attribute of DataPropertyAxiomType 
      is set to 'false' by default for OWL DL. 
      The attribute is fixed as 'false' for OWL Lite in 
      "owl1-lite-objectPropInverseFuncAttr.xsd". 
    </xsd:documentation>
  </xsd:annotation>

  <xsd:attributeGroup name="objectPropInverseFuncAttr"> 
    <xsd:attribute name="inverseFunctional" type="xsd:boolean" default="false" />
  </xsd:attributeGroup>

</xsd:schema>

References

[XHTML m12n]
Modularization of XHTML in XML Schema. W3C Working Draft, http://www.w3.org/TR/xhtml-m12n-schema (2002).
[XMLSchema-1]
XML Schema Part 1: Structures. W3C Recommendation, http://www.w3.org/TR/xmlschema-1/ (2001).