<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:sch="http://www.ascc.net/xml/schematron" 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:geometryAggregates:v3.2.0">geometryAggregates.xsd</appinfo>
        <documentation>see GML 11.3</documentation>
    </annotation>
    <include schemaLocation="geometryPrimitives.xsd"/>
    <complexType name="AbstractGeometricAggregateType" abstract="true" mixed="false">
        <complexContent>
            <extension base="gml:AbstractGeometryType">
                <attributeGroup ref="gml:AggregationAttributeGroup"/>
            </extension>
        </complexContent>
    </complexType>
    <element name="AbstractGeometricAggregate" type="gml:AbstractGeometricAggregateType" abstract="true" substitutionGroup="gml:AbstractGeometry" nillable="false"/>
    <complexType name="MultiGeometryType" mixed="false" abstract="false">
        <complexContent>
            <extension base="gml:AbstractGeometricAggregateType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element ref="gml:geometryMember" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <element ref="gml:geometryMembers" minOccurs="0" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </complexContent>
    </complexType>
    <element name="MultiGeometry" type="gml:MultiGeometryType" substitutionGroup="gml:AbstractGeometricAggregate" nillable="false" abstract="false"/>
    <element name="geometryMember" type="gml:GeometryPropertyType" nillable="false" abstract="false"/>
    <element name="geometryMembers" type="gml:GeometryArrayPropertyType" nillable="false" abstract="false"/>
    <complexType name="MultiGeometryPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:AbstractGeometricAggregate" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
    </complexType>
    <element name="multiGeometryProperty" type="gml:MultiGeometryPropertyType" nillable="false" abstract="false"/>
    <complexType name="MultiPointType" mixed="false" abstract="false">
        <complexContent>
            <extension base="gml:AbstractGeometricAggregateType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element ref="gml:pointMember" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <element ref="gml:pointMembers" minOccurs="0" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </complexContent>
    </complexType>
    <element name="MultiPoint" type="gml:MultiPointType" substitutionGroup="gml:AbstractGeometricAggregate" nillable="false" abstract="false"/>
    <element name="pointMember" type="gml:PointPropertyType" nillable="false" abstract="false"/>
    <element name="pointMembers" type="gml:PointArrayPropertyType" nillable="false" abstract="false"/>
    <complexType name="MultiPointPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:MultiPoint" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
    </complexType>
    <element name="multiPointProperty" type="gml:MultiPointPropertyType" nillable="false" abstract="false"/>
    <complexType name="MultiCurveType" mixed="false" abstract="false">
        <complexContent>
            <extension base="gml:AbstractGeometricAggregateType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element ref="gml:curveMember" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <element ref="gml:curveMembers" minOccurs="0" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </complexContent>
    </complexType>
    <element name="MultiCurve" type="gml:MultiCurveType" substitutionGroup="gml:AbstractGeometricAggregate" nillable="false" abstract="false"/>
    <element name="curveMembers" type="gml:CurveArrayPropertyType" nillable="false" abstract="false"/>
    <complexType name="MultiCurvePropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:MultiCurve" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
    </complexType>
    <element name="multiCurveProperty" type="gml:MultiCurvePropertyType" nillable="false" abstract="false"/>
    <complexType name="MultiSurfaceType" mixed="false" abstract="false">
        <complexContent>
            <extension base="gml:AbstractGeometricAggregateType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element ref="gml:surfaceMember" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <element ref="gml:surfaceMembers" minOccurs="0" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </complexContent>
    </complexType>
    <element name="MultiSurface" type="gml:MultiSurfaceType" substitutionGroup="gml:AbstractGeometricAggregate" nillable="false" abstract="false"/>
    <element name="surfaceMembers" type="gml:SurfaceArrayPropertyType" nillable="false" abstract="false"/>
    <complexType name="MultiSurfacePropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:MultiSurface" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
    </complexType>
    <element name="multiSurfaceProperty" type="gml:MultiSurfacePropertyType" nillable="false" abstract="false"/>
    <complexType name="MultiSolidType" mixed="false" abstract="false">
        <complexContent>
            <extension base="gml:AbstractGeometricAggregateType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element ref="gml:solidMember" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <element ref="gml:solidMembers" minOccurs="0" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </complexContent>
    </complexType>
    <element name="MultiSolid" type="gml:MultiSolidType" substitutionGroup="gml:AbstractGeometricAggregate" nillable="false" abstract="false"/>
    <element name="solidMember" type="gml:SolidPropertyType" nillable="false" abstract="false"/>
    <element name="solidMembers" type="gml:SolidArrayPropertyType" nillable="false" abstract="false"/>
    <complexType name="MultiSolidPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:MultiSolid" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
    </complexType>
    <element name="multiSolidProperty" type="gml:MultiSolidPropertyType" nillable="false" abstract="false"/>
    <element name="multiLocation" type="gml:MultiPointPropertyType" nillable="false" abstract="false"/>
    <element name="multiCenterOf" type="gml:MultiPointPropertyType" nillable="false" abstract="false"/>
    <element name="multiPosition" type="gml:MultiPointPropertyType" nillable="false" abstract="false"/>
    <element name="multiCenterLineOf" type="gml:MultiCurvePropertyType" nillable="false" abstract="false"/>
    <element name="multiEdgeOf" type="gml:MultiCurvePropertyType" nillable="false" abstract="false"/>
    <element name="multiCoverage" type="gml:MultiSurfacePropertyType" nillable="false" abstract="false"/>
    <element name="multiExtentOf" type="gml:MultiSurfacePropertyType" nillable="false" abstract="false"/>
</schema>