<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" targetNamespace="http://www.opengis.net/gml" elementFormDefault="qualified" version="3.2.0" finalDefault="" blockDefault="" attributeFormDefault="unqualified">
    <annotation>
        <appinfo source="urn:opengis:specification:gml:schema-xsd:feature:v3.2.0">feature.xsd</appinfo>
    </annotation>
    <include schemaLocation="geometryBasic2d.xsd"/>
    <include schemaLocation="temporal.xsd"/>
    <complexType name="AbstractFeatureType" abstract="true" mixed="false">
        <complexContent>
            <extension base="gml:AbstractGMLType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element ref="gml:boundedBy" minOccurs="0" maxOccurs="1" nillable="false"/>
                    <element ref="gml:location" minOccurs="0" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </complexContent>
    </complexType>
    <element name="AbstractFeature" type="gml:AbstractFeatureType" abstract="true" substitutionGroup="gml:AbstractGML" nillable="false"/>
    <element name="boundedBy" type="gml:BoundingShapeType" nillable="true" abstract="false"/>
    <complexType name="BoundingShapeType" mixed="false" abstract="false">
        <sequence minOccurs="1" maxOccurs="1">
            <choice minOccurs="1" maxOccurs="1">
                <element ref="gml:Envelope" minOccurs="1" maxOccurs="1" nillable="false"/>
                <element ref="gml:Null" minOccurs="1" maxOccurs="1" nillable="false"/>
            </choice>
        </sequence>
        <attribute name="nilReason" type="gml:NilReasonType" use="optional"/>
    </complexType>
    <element name="EnvelopeWithTimePeriod" type="gml:EnvelopeWithTimePeriodType" substitutionGroup="gml:Envelope" nillable="false" abstract="false"/>
    <complexType name="EnvelopeWithTimePeriodType" mixed="false" abstract="false">
        <complexContent>
            <extension base="gml:EnvelopeType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element name="beginPosition" type="gml:TimePositionType" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <element name="endPosition" type="gml:TimePositionType" minOccurs="1" maxOccurs="1" nillable="false"/>
                </sequence>
                <attribute name="frame" type="anyURI" default="#ISO-8601" use="optional"/>
            </extension>
        </complexContent>
    </complexType>
    <element name="location" type="gml:LocationPropertyType" nillable="false" abstract="false"/>
    <complexType name="LocationPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="1" maxOccurs="1">
            <choice minOccurs="1" maxOccurs="1">
                <element ref="gml:AbstractGeometry" minOccurs="1" maxOccurs="1" nillable="false"/>
                <element ref="gml:LocationKeyWord" minOccurs="1" maxOccurs="1" nillable="false"/>
                <element ref="gml:LocationString" minOccurs="1" maxOccurs="1" nillable="false"/>
                <element ref="gml:Null" minOccurs="1" maxOccurs="1" nillable="false"/>
            </choice>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <element name="LocationString" type="gml:StringOrRefType" nillable="false" abstract="false"/>
    <element name="LocationKeyWord" type="gml:CodeType" nillable="false" abstract="false"/>
    <element name="locationName" type="gml:CodeType" nillable="false" abstract="false"/>
    <element name="locationReference" type="gml:ReferenceType" nillable="false" abstract="false"/>
    <element name="priorityLocation" type="gml:PriorityLocationPropertyType" substitutionGroup="gml:location" nillable="false" abstract="false"/>
    <complexType name="PriorityLocationPropertyType" mixed="false" abstract="false">
        <complexContent>
            <extension base="gml:LocationPropertyType">
                <attribute name="priority" type="string" use="optional"/>
            </extension>
        </complexContent>
    </complexType>
    <complexType name="FeaturePropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:AbstractFeature" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <element name="featureMember" type="gml:FeaturePropertyType" nillable="false" abstract="false"/>
    <element name="featureProperty" type="gml:FeaturePropertyType" nillable="false" abstract="false"/>
    <complexType name="FeatureArrayPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="unbounded">
            <element ref="gml:AbstractFeature" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
    </complexType>
    <element name="featureMembers" type="gml:FeatureArrayPropertyType" nillable="false" abstract="false"/>
    <element name="centerOf" type="gml:PointPropertyType" nillable="false" abstract="false"/>
    <element name="position" type="gml:PointPropertyType" nillable="false" abstract="false"/>
    <element name="extentOf" type="gml:SurfacePropertyType" nillable="false" abstract="false"/>
    <element name="edgeOf" type="gml:CurvePropertyType" nillable="false" abstract="false"/>
    <element name="centerLineOf" type="gml:CurvePropertyType" nillable="false" abstract="false"/>
    <complexType name="BoundedFeatureType" abstract="true" mixed="false">
        <complexContent>
            <restriction base="gml:AbstractFeatureType">
                <sequence minOccurs="1" maxOccurs="1">
                    <group ref="gml:StandardObjectProperties" minOccurs="1" maxOccurs="1"/>
                    <element ref="gml:boundedBy" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <element ref="gml:location" minOccurs="0" maxOccurs="1" nillable="false"/>
                </sequence>
            </restriction>
        </complexContent>
    </complexType>
    <complexType name="AbstractFeatureMemberType" abstract="true" mixed="false">
        <sequence minOccurs="1" maxOccurs="1"/>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
    </complexType>
    <complexType name="AbstractFeatureCollectionType" abstract="true" mixed="false">
        <complexContent>
            <extension base="gml:AbstractFeatureType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element ref="gml:featureMember" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <element ref="gml:featureMembers" minOccurs="0" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </complexContent>
    </complexType>
    <element name="AbstractFeatureCollection" type="gml:AbstractFeatureCollectionType" abstract="true" substitutionGroup="gml:AbstractFeature" nillable="false"/>
    <element name="FeatureCollection" type="gml:FeatureCollectionType" substitutionGroup="gml:AbstractFeature" nillable="false" abstract="false"/>
    <complexType name="FeatureCollectionType" mixed="false" abstract="false">
        <complexContent>
            <extension base="gml:AbstractFeatureCollectionType"/>
        </complexContent>
    </complexType>
</schema>