<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:temporalReferenceSystems:v3.2.0">temporalReferenceSystems.xsd</appinfo>
        <documentation>see GML 14.5</documentation>
    </annotation>
    <include schemaLocation="temporalTopology.xsd"/>
    <include schemaLocation="dictionary.xsd"/>
    <element name="TimeReferenceSystem" type="gml:TimeReferenceSystemType" substitutionGroup="gml:Definition" nillable="false" abstract="false"/>
    <complexType name="TimeReferenceSystemType" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:DefinitionType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element name="domainOfValidity" type="string" minOccurs="1" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <element name="TimeCoordinateSystem" type="gml:TimeCoordinateSystemType" substitutionGroup="gml:TimeReferenceSystem" nillable="false" abstract="false"/>
    <complexType name="TimeCoordinateSystemType" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:TimeReferenceSystemType">
                <sequence minOccurs="1" maxOccurs="1">
                    <choice minOccurs="1" maxOccurs="1">
                        <element name="originPosition" type="gml:TimePositionType" minOccurs="1" maxOccurs="1" nillable="false"/>
                        <element name="origin" type="gml:TimeInstantPropertyType" minOccurs="1" maxOccurs="1" nillable="false"/>
                    </choice>
                    <element name="interval" type="gml:TimeIntervalLengthType" minOccurs="1" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <element name="TimeCalendar" type="gml:TimeCalendarType" substitutionGroup="gml:TimeReferenceSystem" nillable="false" abstract="false"/>
    <complexType name="TimeCalendarType" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:TimeReferenceSystemType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element name="referenceFrame" type="gml:TimeCalendarEraPropertyType" maxOccurs="unbounded" minOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <element name="TimeCalendarEra" type="gml:TimeCalendarEraType" nillable="false" abstract="false"/>
    <complexType name="TimeCalendarEraType" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:DefinitionType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element name="referenceEvent" type="gml:StringOrRefType" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <element name="referenceDate" type="gml:CalDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <element name="julianReference" type="decimal" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <element name="epochOfUse" type="gml:TimePeriodPropertyType" minOccurs="1" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <complexType name="TimeCalendarPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:TimeCalendar" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <complexType name="TimeCalendarEraPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:TimeCalendarEra" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <element name="TimeClock" type="gml:TimeClockType" substitutionGroup="gml:TimeReferenceSystem" nillable="false" abstract="false"/>
    <complexType name="TimeClockType" final="#all" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:TimeReferenceSystemType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element name="referenceEvent" type="gml:StringOrRefType" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <element name="referenceTime" type="time" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <element name="utcReference" type="time" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <element name="dateBasis" type="gml:TimeCalendarPropertyType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <complexType name="TimeClockPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:TimeClock" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <element name="TimeOrdinalReferenceSystem" type="gml:TimeOrdinalReferenceSystemType" substitutionGroup="gml:TimeReferenceSystem" nillable="false" abstract="false"/>
    <complexType name="TimeOrdinalReferenceSystemType" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:TimeReferenceSystemType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element name="component" type="gml:TimeOrdinalEraPropertyType" maxOccurs="unbounded" minOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <element name="TimeOrdinalEra" type="gml:TimeOrdinalEraType" nillable="false" abstract="false"/>
    <complexType name="TimeOrdinalEraType" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:DefinitionType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element name="relatedTime" type="gml:RelatedTimeType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <element name="start" type="gml:TimeNodePropertyType" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <element name="end" type="gml:TimeNodePropertyType" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <element name="extent" type="gml:TimePeriodPropertyType" minOccurs="0" maxOccurs="1" nillable="false"/>
                    <element name="member" type="gml:TimeOrdinalEraPropertyType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <element name="group" type="gml:ReferenceType" minOccurs="0" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <complexType name="TimeOrdinalEraPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:TimeOrdinalEra" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
</schema>