<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.opengis.net/gml" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" elementFormDefault="qualified" version="2.1.2" xmlns:oraxdb="http://xmlns.oracle.com/xdb" oraxdb:storeVarrayAsTable="true" oraxdb:flags="8497" oraxdb:schemaURL="http://www.opengis.net/gml/feature.xsd" oraxdb:schemaOwner="MDSYS" oraxdb:numProps="58">
  <annotation>
    <appinfo>feature.xsd v2.1.2 2002-07</appinfo>
    <documentation xml:lang="en">
      GML Feature schema. Copyright (c) 2002 OGC, All Rights Reserved.
    </documentation>
  </annotation>
  <!-- include constructs from the GML Geometry schema -->
  <include schemaLocation="http://www.opengis.net/gml/geometry.xsd"/>
  <!-- bring in the XLink namespace -->
  <import namespace="http://www.w3.org/1999/xlink" schemaLocation="http://www.w3.org/1999/xlink/xlinks.xsd"/>
  <!-- ==============================================================
       global declarations
  =================================================================== -->
  <element name="_Feature" type="gml:AbstractFeatureType" abstract="true" oraxdb:propNumber="3800" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="_Feature" oraxdb:memType="258"/>
  <element name="_FeatureCollection" type="gml:AbstractFeatureCollectionType" abstract="true" substitutionGroup="gml:_Feature" oraxdb:propNumber="3801" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="_FeatureCollection" oraxdb:memType="258"/>
  <element name="featureMember" type="gml:FeatureAssociationType" oraxdb:propNumber="3802" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="featureMember" oraxdb:memType="258"/>
  <!-- some basic geometric properties of features -->
  <element name="_geometryProperty" type="gml:GeometryAssociationType" abstract="true" oraxdb:propNumber="3803" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="_geometryProperty" oraxdb:memType="258"/>
  <element name="geometryProperty" type="gml:GeometryAssociationType" oraxdb:propNumber="3804" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="geometryProperty" oraxdb:memType="258"/>
  <element name="boundedBy" type="gml:BoundingShapeType" oraxdb:propNumber="3805" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="boundedBy" oraxdb:memType="258"/>
  <element name="pointProperty" type="gml:PointPropertyType" substitutionGroup="gml:_geometryProperty" oraxdb:propNumber="3806" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="pointProperty" oraxdb:memType="258"/>
  <element name="polygonProperty" type="gml:PolygonPropertyType" substitutionGroup="gml:_geometryProperty" oraxdb:propNumber="3807" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="polygonProperty" oraxdb:memType="258"/>
  <element name="lineStringProperty" type="gml:LineStringPropertyType" substitutionGroup="gml:_geometryProperty" oraxdb:propNumber="3808" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="lineStringProperty" oraxdb:memType="258"/>
  <element name="multiPointProperty" type="gml:MultiPointPropertyType" substitutionGroup="gml:_geometryProperty" oraxdb:propNumber="3809" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="multiPointProperty" oraxdb:memType="258"/>
  <element name="multiLineStringProperty" type="gml:MultiLineStringPropertyType" substitutionGroup="gml:_geometryProperty" oraxdb:propNumber="3810" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="multiLineStringProperty" oraxdb:memType="258"/>
  <element name="multiPolygonProperty" type="gml:MultiPolygonPropertyType" substitutionGroup="gml:_geometryProperty" oraxdb:propNumber="3811" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="multiPolygonProperty" oraxdb:memType="258"/>
  <element name="multiGeometryProperty" type="gml:MultiGeometryPropertyType" substitutionGroup="gml:_geometryProperty" oraxdb:propNumber="3812" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="multiGeometryProperty" oraxdb:memType="258"/>
  <!-- common aliases for geometry properties -->
  <element name="location" type="gml:PointPropertyType" substitutionGroup="gml:pointProperty" oraxdb:propNumber="3813" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="location" oraxdb:memType="258"/>
  <element name="centerOf" type="gml:PointPropertyType" substitutionGroup="gml:pointProperty" oraxdb:propNumber="3814" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="centerOf" oraxdb:memType="258"/>
  <element name="position" type="gml:PointPropertyType" substitutionGroup="gml:pointProperty" oraxdb:propNumber="3815" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="position" oraxdb:memType="258"/>
  <element name="extentOf" type="gml:PolygonPropertyType" substitutionGroup="gml:polygonProperty" oraxdb:propNumber="3816" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="extentOf" oraxdb:memType="258"/>
  <element name="coverage" type="gml:PolygonPropertyType" substitutionGroup="gml:polygonProperty" oraxdb:propNumber="3817" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="coverage" oraxdb:memType="258"/>
  <element name="edgeOf" type="gml:LineStringPropertyType" substitutionGroup="gml:lineStringProperty" oraxdb:propNumber="3818" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="edgeOf" oraxdb:memType="258"/>
  <element name="centerLineOf" type="gml:LineStringPropertyType" substitutionGroup="gml:lineStringProperty" oraxdb:propNumber="3819" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="centerLineOf" oraxdb:memType="258"/>
  <element name="multiLocation" type="gml:MultiPointPropertyType" substitutionGroup="gml:multiPointProperty" oraxdb:propNumber="3820" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="multiLocation" oraxdb:memType="258"/>
  <element name="multiCenterOf" type="gml:MultiPointPropertyType" substitutionGroup="gml:multiPointProperty" oraxdb:propNumber="3821" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="multiCenterOf" oraxdb:memType="258"/>
  <element name="multiPosition" type="gml:MultiPointPropertyType" substitutionGroup="gml:multiPointProperty" oraxdb:propNumber="3822" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="multiPosition" oraxdb:memType="258"/>
  <element name="multiCenterLineOf" type="gml:MultiLineStringPropertyType" substitutionGroup="gml:multiLineStringProperty" oraxdb:propNumber="3823" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="multiCenterLineOf" oraxdb:memType="258"/>
  <element name="multiEdgeOf" type="gml:MultiLineStringPropertyType" substitutionGroup="gml:multiLineStringProperty" oraxdb:propNumber="3824" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="multiEdgeOf" oraxdb:memType="258"/>
  <element name="multiCoverage" type="gml:MultiPolygonPropertyType" substitutionGroup="gml:multiPolygonProperty" oraxdb:propNumber="3825" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="multiCoverage" oraxdb:memType="258"/>
  <element name="multiExtentOf" type="gml:MultiPolygonPropertyType" substitutionGroup="gml:multiPolygonProperty" oraxdb:propNumber="3826" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="multiExtentOf" oraxdb:memType="258"/>
  <!-- common feature descriptors -->
  <element name="description" type="string" oraxdb:propNumber="3827" oraxdb:global="true" oraxdb:SQLName="description" oraxdb:memType="1"/>
  <element name="name" type="string" oraxdb:propNumber="3828" oraxdb:global="true" oraxdb:SQLName="name" oraxdb:memType="1"/>
  <!-- ==============================================================
       abstract supertypes
  =================================================================== -->
  <complexType name="AbstractFeatureType" abstract="true" oraxdb:SQLType="CLOB">
    <annotation>
      <documentation>
        An abstract feature provides a set of common properties. A concrete
        feature type must derive from this type and specify additional
        properties in an application schema. A feature may optionally
        possess an identifying attribute (fid).
      </documentation>
    </annotation>
    <sequence>
      <element ref="gml:description" minOccurs="0" oraxdb:propNumber="3830" oraxdb:global="false" oraxdb:memType="1" oraxdb:MemInline="false" oraxdb:SQLInline="true" oraxdb:JavaInline="false"/>
      <element ref="gml:name" minOccurs="0" oraxdb:propNumber="3831" oraxdb:global="false" oraxdb:memType="1" oraxdb:MemInline="false" oraxdb:SQLInline="true" oraxdb:JavaInline="false"/>
      <element ref="gml:boundedBy" minOccurs="0" oraxdb:propNumber="3832" oraxdb:global="false" oraxdb:SQLType="CLOB" oraxdb:memType="258" oraxdb:MemInline="false" oraxdb:SQLInline="true" oraxdb:JavaInline="false"/>
      <!-- additional properties must be specified in an application schema -->
    </sequence>
    <attribute name="fid" type="ID" use="optional" oraxdb:propNumber="3829" oraxdb:global="false" oraxdb:memType="1"/>
  </complexType>
  <complexType name="AbstractFeatureCollectionBaseType" abstract="true" oraxdb:SQLType="CLOB">
    <annotation>
      <documentation>
        This abstract base type just makes the boundedBy element mandatory
        for a feature collection.
      </documentation>
    </annotation>
    <complexContent>
      <restriction base="gml:AbstractFeatureType">
        <sequence>
          <element ref="gml:description" minOccurs="0" oraxdb:propNumber="3834" oraxdb:global="false" oraxdb:memType="1" oraxdb:SQLInline="true" oraxdb:MemInline="false" oraxdb:JavaInline="false"/>
          <element ref="gml:name" minOccurs="0" oraxdb:propNumber="3835" oraxdb:global="false" oraxdb:memType="1" oraxdb:SQLInline="true" oraxdb:MemInline="false" oraxdb:JavaInline="false"/>
          <element ref="gml:boundedBy" oraxdb:propNumber="3836" oraxdb:global="false" oraxdb:SQLType="CLOB" oraxdb:memType="258" oraxdb:SQLInline="true" oraxdb:MemInline="false" oraxdb:JavaInline="false"/>
        </sequence>
        <attribute name="fid" type="ID" use="optional" oraxdb:propNumber="3833" oraxdb:global="false" oraxdb:memType="1"/>
      </restriction>
    </complexContent>
  </complexType>
  <complexType name="AbstractFeatureCollectionType" abstract="true" oraxdb:SQLType="CLOB">
    <annotation>
      <documentation>
        A feature collection contains zero or more featureMember elements.
      </documentation>
    </annotation>
    <complexContent>
      <extension base="gml:AbstractFeatureCollectionBaseType">
        <sequence>
          <element ref="gml:featureMember" minOccurs="0" maxOccurs="unbounded" oraxdb:propNumber="3837" oraxdb:global="false" oraxdb:SQLType="CLOB" oraxdb:memType="258" oraxdb:MemInline="false" oraxdb:SQLInline="true" oraxdb:JavaInline="false"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <complexType name="GeometryPropertyType" oraxdb:SQLType="CLOB">
    <annotation>
      <documentation>
        A simple geometry property encapsulates a geometry element.
        Alternatively, it can function as a pointer (simple-type link)
        that refers to a remote geometry element.
      </documentation>
    </annotation>
    <sequence minOccurs="0">
      <element ref="gml:_Geometry" oraxdb:propNumber="3839" oraxdb:global="false" oraxdb:SQLType="CLOB" oraxdb:memType="258" oraxdb:MemInline="false" oraxdb:SQLInline="true" oraxdb:JavaInline="false"/>
    </sequence>
    <attributeGroup ref="xlink:simpleLink"/>
    <attribute ref="gml:remoteSchema" use="optional" oraxdb:propNumber="3838" oraxdb:global="false" oraxdb:memType="1"/>
  </complexType>
  <complexType name="FeatureAssociationType" oraxdb:SQLType="CLOB">
    <annotation>
      <documentation>
        An instance of this type (e.g. a featureMember) can either
        enclose or point to a feature (or feature collection); this
        type can be restricted in an application schema to allow only
        specified features as valid participants in the association.
        When serving as a simple link that references a remote feature
        instance, the value of the gml:remoteSchema attribute can be
        used to locate a schema fragment that constrains the target
        instance.
      </documentation>
    </annotation>
    <sequence minOccurs="0">
      <element ref="gml:_Feature" oraxdb:propNumber="3841" oraxdb:global="false" oraxdb:SQLType="CLOB" oraxdb:memType="258" oraxdb:MemInline="false" oraxdb:SQLInline="true" oraxdb:JavaInline="false"/>
    </sequence>
    <attributeGroup ref="xlink:simpleLink"/>
    <attribute ref="gml:remoteSchema" use="optional" oraxdb:propNumber="3840" oraxdb:global="false" oraxdb:memType="1"/>
  </complexType>
  <complexType name="BoundingShapeType" oraxdb:SQLType="CLOB">
    <annotation>
      <documentation>
        Bounding shapes--a Box or a null element are currently allowed.
      </documentation>
    </annotation>
    <sequence>
      <choice>
        <element ref="gml:Box" oraxdb:propNumber="3842" oraxdb:global="false" oraxdb:SQLType="CLOB" oraxdb:memType="258" oraxdb:MemInline="false" oraxdb:SQLInline="true" oraxdb:JavaInline="false"/>
        <element name="null" type="gml:NullType" oraxdb:propNumber="3843" oraxdb:global="false" oraxdb:memType="259" oraxdb:MemInline="true" oraxdb:SQLInline="true" oraxdb:JavaInline="true"/>
      </choice>
    </sequence>
  </complexType>
  <!-- ==============================================================
       geometry properties
  =================================================================== -->
  <complexType name="PointPropertyType" oraxdb:SQLType="CLOB">
    <annotation>
      <documentation>
        Encapsulates a single point to represent position, location, or
        centerOf properties.
      </documentation>
    </annotation>
    <complexContent>
      <restriction base="gml:GeometryAssociationType">
        <sequence minOccurs="0">
          <element ref="gml:Point" oraxdb:propNumber="3845" oraxdb:global="false" oraxdb:SQLType="CLOB" oraxdb:memType="258" oraxdb:SQLInline="true" oraxdb:MemInline="false" oraxdb:JavaInline="false"/>
        </sequence>
        <attributeGroup ref="xlink:simpleLink"/>
        <attribute ref="gml:remoteSchema" use="optional" oraxdb:propNumber="3844" oraxdb:global="false" oraxdb:memType="1"/>
      </restriction>
    </complexContent>
  </complexType>
  <complexType name="PolygonPropertyType" oraxdb:SQLType="CLOB">
    <annotation>
      <documentation>
        Encapsulates a single polygon to represent coverage or extentOf
        properties.
      </documentation>
    </annotation>
    <complexContent>
      <restriction base="gml:GeometryAssociationType">
        <sequence minOccurs="0">
          <element ref="gml:Polygon" oraxdb:propNumber="3847" oraxdb:global="false" oraxdb:SQLType="CLOB" oraxdb:memType="258" oraxdb:SQLInline="true" oraxdb:MemInline="false" oraxdb:JavaInline="false"/>
        </sequence>
        <attributeGroup ref="xlink:simpleLink"/>
        <attribute ref="gml:remoteSchema" use="optional" oraxdb:propNumber="3846" oraxdb:global="false" oraxdb:memType="1"/>
      </restriction>
    </complexContent>
  </complexType>
  <complexType name="LineStringPropertyType" oraxdb:SQLType="CLOB">
    <annotation>
      <documentation>
        Encapsulates a single LineString to represent centerLineOf or
        edgeOf properties.
      </documentation>
    </annotation>
    <complexContent>
      <restriction base="gml:GeometryAssociationType">
        <sequence minOccurs="0">
          <element ref="gml:LineString" oraxdb:propNumber="3849" oraxdb:global="false" oraxdb:SQLType="CLOB" oraxdb:memType="258" oraxdb:SQLInline="true" oraxdb:MemInline="false" oraxdb:JavaInline="false"/>
        </sequence>
        <attributeGroup ref="xlink:simpleLink"/>
        <attribute ref="gml:remoteSchema" use="optional" oraxdb:propNumber="3848" oraxdb:global="false" oraxdb:memType="1"/>
      </restriction>
    </complexContent>
  </complexType>
  <complexType name="MultiPointPropertyType" oraxdb:SQLType="CLOB">
    <annotation>
      <documentation>
        Encapsulates a MultiPoint element to represent the following
        discontiguous geometric properties: multiLocation, multiPosition,
        multiCenterOf.
      </documentation>
    </annotation>
    <complexContent>
      <restriction base="gml:GeometryAssociationType">
        <sequence minOccurs="0">
          <element ref="gml:MultiPoint" oraxdb:propNumber="3851" oraxdb:global="false" oraxdb:SQLType="CLOB" oraxdb:memType="258" oraxdb:SQLInline="true" oraxdb:MemInline="false" oraxdb:JavaInline="false"/>
        </sequence>
        <attributeGroup ref="xlink:simpleLink"/>
        <attribute ref="gml:remoteSchema" use="optional" oraxdb:propNumber="3850" oraxdb:global="false" oraxdb:memType="1"/>
      </restriction>
    </complexContent>
  </complexType>
  <complexType name="MultiLineStringPropertyType" oraxdb:SQLType="CLOB">
    <annotation>
      <documentation>
        Encapsulates a MultiLineString element to represent the following
        discontiguous geometric properties: multiEdgeOf, multiCenterLineOf.
      </documentation>
    </annotation>
    <complexContent>
      <restriction base="gml:GeometryAssociationType">
        <sequence minOccurs="0">
          <element ref="gml:MultiLineString" oraxdb:propNumber="3853" oraxdb:global="false" oraxdb:SQLType="CLOB" oraxdb:memType="258" oraxdb:SQLInline="true" oraxdb:MemInline="false" oraxdb:JavaInline="false"/>
        </sequence>
        <attributeGroup ref="xlink:simpleLink"/>
        <attribute ref="gml:remoteSchema" use="optional" oraxdb:propNumber="3852" oraxdb:global="false" oraxdb:memType="1"/>
      </restriction>
    </complexContent>
  </complexType>
  <complexType name="MultiPolygonPropertyType" oraxdb:SQLType="CLOB">
    <annotation>
      <documentation>
        Encapsulates a MultiPolygon to represent the following discontiguous
        geometric properties: multiCoverage, multiExtentOf.
      </documentation>
    </annotation>
    <complexContent>
      <restriction base="gml:GeometryAssociationType">
        <sequence minOccurs="0">
          <element ref="gml:MultiPolygon" oraxdb:propNumber="3855" oraxdb:global="false" oraxdb:SQLType="CLOB" oraxdb:memType="258" oraxdb:SQLInline="true" oraxdb:MemInline="false" oraxdb:JavaInline="false"/>
        </sequence>
        <attributeGroup ref="xlink:simpleLink"/>
        <attribute ref="gml:remoteSchema" use="optional" oraxdb:propNumber="3854" oraxdb:global="false" oraxdb:memType="1"/>
      </restriction>
    </complexContent>
  </complexType>
  <complexType name="MultiGeometryPropertyType" oraxdb:SQLType="CLOB">
    <annotation>
      <documentation>Encapsulates a MultiGeometry element.</documentation>
    </annotation>
    <complexContent>
      <restriction base="gml:GeometryAssociationType">
        <sequence minOccurs="0">
          <element ref="gml:MultiGeometry" oraxdb:propNumber="3857" oraxdb:global="false" oraxdb:SQLType="CLOB" oraxdb:memType="258" oraxdb:SQLInline="true" oraxdb:MemInline="false" oraxdb:JavaInline="false"/>
        </sequence>
        <attributeGroup ref="xlink:simpleLink"/>
        <attribute ref="gml:remoteSchema" use="optional" oraxdb:propNumber="3856" oraxdb:global="false" oraxdb:memType="1"/>
      </restriction>
    </complexContent>
  </complexType>
  <simpleType name="NullType">
    <annotation>
      <documentation>
        If a bounding shape is not provided for a feature collection,
        explain why. Allowable values are:
        innapplicable - the features do not have geometry
        unknown - the boundingBox cannot be computed
        unavailable - there may be a boundingBox but it is not divulged
        missing - there are no features
      </documentation>
    </annotation>
    <restriction base="string">
      <enumeration value="inapplicable"/>
      <enumeration value="unknown"/>
      <enumeration value="unavailable"/>
      <enumeration value="missing"/>
    </restriction>
  </simpleType>
</schema>
