<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" 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:geometryBasic2d:v3.2.0">geometryBasic2d.xsd</appinfo>
        <documentation>see GML 9.2.4</documentation>
    </annotation>
    <include schemaLocation="geometryBasic0d1d.xsd"/>
    <element name="AbstractSurface" type="gml:AbstractSurfaceType" abstract="true" substitutionGroup="gml:AbstractGeometricPrimitive" nillable="false"/>
    <complexType name="SurfacePropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:AbstractSurface" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
    </complexType>
    <element name="surfaceProperty" type="gml:SurfacePropertyType" nillable="false" abstract="false"/>
    <complexType name="SurfaceArrayPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="unbounded">
            <element ref="gml:AbstractSurface" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
    </complexType>
    <element name="surfaceArrayProperty" type="gml:SurfaceArrayPropertyType" nillable="false" abstract="false"/>
    <complexType name="PolygonType" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:AbstractSurfaceType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element ref="gml:exterior" minOccurs="0" maxOccurs="1" nillable="false"/>
                    <element ref="gml:interior" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <element name="Polygon" type="gml:PolygonType" substitutionGroup="gml:AbstractSurface" nillable="false" abstract="false"/>
    <element name="exterior" type="gml:AbstractRingPropertyType" nillable="false" abstract="false"/>
    <element name="interior" type="gml:AbstractRingPropertyType" nillable="false" abstract="false"/>
    <complexType name="AbstractRingType" abstract="true" mixed="false">
        <sequence minOccurs="1" maxOccurs="1"/>
    </complexType>
    <element name="AbstractRing" type="gml:AbstractRingType" abstract="true" substitutionGroup="gml:AbstractObject" nillable="false"/>
    <complexType name="AbstractRingPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="1" maxOccurs="1">
            <element ref="gml:AbstractRing" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
    </complexType>
    <complexType name="LinearRingType" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:AbstractRingType">
                <sequence minOccurs="1" maxOccurs="1">
                    <choice minOccurs="1" maxOccurs="1">
                        <choice minOccurs="4" maxOccurs="unbounded">
                            <element ref="gml:pos" minOccurs="1" maxOccurs="1" nillable="false"/>
                            <element ref="gml:pointProperty" minOccurs="1" maxOccurs="1" nillable="false"/>
                            <element ref="gml:pointRep" minOccurs="1" maxOccurs="1" nillable="false"/>
                        </choice>
                        <element ref="gml:posList" minOccurs="1" maxOccurs="1" nillable="false"/>
                        <element ref="gml:coordinates" minOccurs="1" maxOccurs="1" nillable="false"/>
                    </choice>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <element name="LinearRing" type="gml:LinearRingType" substitutionGroup="gml:AbstractRing" nillable="false" abstract="false"/>
    <complexType name="LinearRingPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="1" maxOccurs="1">
            <element ref="gml:LinearRing" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
    </complexType>
</schema>