<?xml version="1.0" encoding="UTF-8"?>
<schema version="2.0.2" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:gsml="urn:cgi:xmlns:CGI:GeoSciML:2.0" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:sa="http://www.opengis.net/sampling/1.0" targetNamespace="urn:cgi:xmlns:CGI:GeoSciML:2.0" elementFormDefault="qualified" attributeFormDefault="unqualified"><!-- Schema auto-generated by FullMoon, applying rule suite xmi11ea -->
    <annotation>
        <documentation>The GeoSciML GeologicFeature package contains the root  Feature classes MappedFeature and GeologicFeature. 

GeologicFeature represents a conceptual feature that is hypothesized to exist coherently in the world. Specializated geologic features are contained in other packages. 

        v2.0.1 - all links to elements in GMD namespace 'by reference'
        v2.0.2 - inserted XML declaration
        </documentation>
    </annotation>
    <import namespace="http://www.opengis.net/gml" schemaLocation="http://schemas.opengis.net/gml/3.1.1/base/gml.xsd"/>
    <import namespace="http://www.opengis.net/sampling/1.0" schemaLocation="http://schemas.opengis.net/sampling/1.0.0/sampling.xsd"/>
    <include schemaLocation="geosciml.xsd"/>
    <element abstract="true" name="GeologicFeature" substitutionGroup="gml:_Feature" type="gsml:GeologicFeatureType">
        <annotation>
            <documentation>The abstract GeologicFeature class represents a conceptual feature that is hypothesized to exist coherently in the world.
   * this corresponds with a "legend item" from a traditional geologic map
   * while the bounding coordinates of a Geologic Feature may be described, its shape is not.

The implemented Geologic Feature instance acts as the "description package"

    * the description package is classified according to its purpose as an Instance, TypicalNorm, or DefiningNorm.</documentation>
        </annotation>
    </element>
    <complexType abstract="true" name="GeologicFeatureType">
        <complexContent>
            <extension base="gml:AbstractFeatureType">
                <sequence>
                    <element maxOccurs="unbounded" minOccurs="1" name="observationMethod" type="gsml:CGI_TermValuePropertyType">
                        <annotation>
                            <documentation>Term(s) that specify the method by which the values for the GeologicFeature were obtained (e.g. point count, brunton compass on site, air photo interpretation,  field observation, hand specimen,  laboratory, aerial photography, creative imagination...). This corresponds (loosely) to ISO19115 Lineage.

Statement specifies the method that was used to identify the MappedFeature. Examples: . </documentation>
                        </annotation>
                    </element>
                    <element name="purpose" type="gsml:DescriptionPurposeType">
                        <annotation>
                            <documentation>Specification of the intended purpose/level of abstraction for a given feature or object instance. Scoped name because intention is asserted by author of the data instance. Values: Instance, TypicalNorm, IdentifyingNorm. </documentation>
                        </annotation>
                    </element>
                    <element maxOccurs="unbounded" minOccurs="0" name="occurrence" type="gsml:MappedFeaturePropertyType">
                        <annotation>
                            <documentation>Points to any number of mapped features which are occurrences of the geologic feature.  Mapped features may all be from a single map or from several maps.</documentation>
                        </annotation>
                    </element>
                    <element maxOccurs="1" minOccurs="0" name="preferredAge" type="gsml:GeologicEventPropertyType">
                        <annotation>
                            <documentation>Specifies the geologic event that the data supplier considers the 'preferred' event age and event process for that feature.
This is the age and process of the feature that would be commonly shown on a geologic map (eg deposition age, peak temperature age, intrusion age).
Normative geologic unit descriptions are expected to include an age specification whenever the age is constrained--even if the range is very large (e.g. Phanerozoic....).</documentation>
                        </annotation>
                    </element>
                    <element maxOccurs="unbounded" minOccurs="0" name="geologicHistory" type="gsml:GeologicEventPropertyType">
                        <annotation>
                            <documentation>A sequence of GeologicEvents with role geologicHistory allow describing the Genesis of the GeologicFeature. In future versions of GeoSciML this sequence should be ordered.</documentation>
                        </annotation>
                    </element>
                    <element maxOccurs="unbounded" minOccurs="0" name="targetLink" type="gsml:GeologicFeatureRelationPropertyType">
                        <annotation>
                            <documentation>Specifies the GeologicFeatureRelation that links the 'source' GeologicFeature  to the 'target' GeologicFeature.</documentation>
                        </annotation>
                    </element>
                    <element maxOccurs="1" minOccurs="0" name="metadata" type="gml:ReferenceType">
                        <annotation>
                            <appinfo>
                                <gml:targetElement>gmd:MD_Metadata</gml:targetElement>
                            </appinfo>
                            <documentation>feature level metadata associated with the GeologicFeature</documentation>
                        </annotation>
                    </element>
                </sequence>
            </extension>
        </complexContent>
    </complexType>
    <complexType name="GeologicFeaturePropertyType">
        <sequence minOccurs="0">
            <element ref="gsml:GeologicFeature"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <element name="GeologicFeatureRelation" substitutionGroup="gsml:GeologicRelation" type="gsml:GeologicFeatureRelationType">
        <annotation>
            <documentation>The GeologicFeatureRelation class is a concrete subtype of the abstract GeologicRelation class that is used to define relationships between geologic features, ie. structure-structure, unit-unit, and structure-unit relationships.

Relationships are always binary and directional.  There is always a single source and a single target.  The relationship is always defined from the perspective of the Source and is generally an active verb.

Example:  a Source may point to an intrusive igneous rock body.  In this case, the Target would point to the appropriate host rock body and the relationship attribute would be 'intrudes'.  Other appropriate relationship attributes might include: overlies, offsets, crosscuts, folds, etc.

Two or more GeologicFeatures are associated in a GeologicFeatureRelation; each has a role in the relationship. Examples of geological roles include "overlies", "is overlain by", "is younger", "is older", "intrudes", "is intruded by", and so forth. In a relationship where an igneous unit intrudes a sedimentary unit, the geological relationship is "intrudes", the intruded sedimentary unit has the role "host", and the igneous unit has the role "intrusion". </documentation>
        </annotation>
    </element>
    <complexType name="GeologicFeatureRelationType">
        <complexContent>
            <extension base="gsml:GeologicRelationType">
                <sequence>
                    <element name="target" type="gsml:GeologicFeaturePropertyType">
                        <annotation>
                            <documentation>Specifies the GeologicFeature that is playing the role "target" in the GeologicFeatureRelation.</documentation>
                        </annotation>
                    </element>
                    <element name="source" type="gsml:GeologicFeaturePropertyType">
                        <annotation>
                            <documentation>Specifies the GeologicFeature that is playing the role "source" in the GeologicFeatureRelation.</documentation>
                        </annotation>
                    </element>
                </sequence>
            </extension>
        </complexContent>
    </complexType>
    <complexType name="GeologicFeatureRelationPropertyType">
        <sequence minOccurs="0">
            <element ref="gsml:GeologicFeatureRelation"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <element name="MappedFeature" substitutionGroup="gml:_Feature" type="gsml:MappedFeatureType">
        <annotation>
            <documentation>A MappedFeature is part of a geological interpretation. 
It provides a link between a notional feature (description package) and one spatial representation of it, or part of it. (Exposures, Surface Traces and Intercepts, etc)
    * the specific bounded occurrence, such as an outcrop or map polygon
    * the Mapped Feature carries a geometry or shape
          o the association with a Geologic Feature (legend item) provides specification of all the other descriptors
          o the association with a Sampling Feature provides the context and dimensionality 

A Mapped Feature is always associated with some sampling feature - e.g. a mapping surface, a section, a Borehole (see BoreHolesAndObservation) etc.  As noted on the diagram, if the associated sampling feature is a Borehole, then the shape associated with the MappedFeature will usually be either a point or an interval. This reconciles the 2-D ("map", section) and 1-D (borehole, traverse) viewpoints in a common abstraction. </documentation>
        </annotation>
    </element>
    <complexType name="MappedFeatureType">
        <complexContent>
            <extension base="gml:AbstractFeatureType">
                <sequence>
                    <element maxOccurs="unbounded" minOccurs="1" name="observationMethod" type="gsml:CGI_TermValuePropertyType">
                        <annotation>
                            <documentation>Specifies the method that was used to identify the MappedFeature. Examples: digitised,  Global Positioning System, published map, fieldObservation, downhole survey, aerial photography, field survey. This corresponds (loosely) to ISO19115 Lineage.Statement</documentation>
                        </annotation>
                    </element>
                    <element name="positionalAccuracy" type="gsml:CGI_ValuePropertyType">
                        <annotation>
                            <documentation>Examples: accurate, approximate, diagramatic, indefinite, unknown, 5 m. Corresponds to ISO19115 DQ_ThematicAccuracy (either quantitative or non quantitative).result.value</documentation>
                        </annotation>
                    </element>
                    <element name="samplingFrame" type="sa:SpatiallyExtensiveSamplingFeaturePropertyType">
                        <annotation>
                            <documentation>Specifies the sampling frame associated with the MappedFeature
SamplingFrame is MapHorizon or other reference frame within which the MappedFeature is located. Map sheet, outcrop, borehole, flightline, swath, specimen, section, etc
SampledFeature is usually a GSML collection that represent the geology of interest.</documentation>
                        </annotation>
                    </element>
                    <element name="specification" type="gsml:GeologicFeaturePropertyType">
                        <annotation>
                            <documentation>Point to the single geologic feature which describes the mapped feature.</documentation>
                        </annotation>
                    </element>
                    <element name="shape" type="gml:GeometryPropertyType">
                        <annotation>
                            <documentation>Points to the GML shape object that describes the geometry of the MappedFeature. The shape object may have any dimensionality.
The shape of a mapped feature is determined by observation, not assertion</documentation>
                        </annotation>
                    </element>
                    <element maxOccurs="1" minOccurs="0" name="metadata" type="gml:ReferenceType">
                        <annotation>
                            <appinfo>
                                <gml:targetElement>gmd:MD_Metadata</gml:targetElement>
                            </appinfo>
                            <documentation>Specifies the Metadata associated with the MappedFeature</documentation>
                        </annotation>
                    </element>
                </sequence>
            </extension>
        </complexContent>
    </complexType>
    <complexType name="MappedFeaturePropertyType">
        <sequence minOccurs="0">
            <element ref="gsml:MappedFeature"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <simpleType name="DescriptionPurposeType">
        <union memberTypes="gsml:DescriptionPurposeEnumerationType gsml:DescriptionPurposeOtherType"/>
    </simpleType>
    <simpleType name="DescriptionPurposeEnumerationType">
        <restriction base="string">
            <enumeration value="typicalNorm">
                <annotation>
                    <documentation>TypicalNorm -- a description that specifies properties to be expected of some occurrence associated with the GeologicEntity. This description may include many properties that are not part of the DefiningNorm. For example, the fact that granite is typically light-colored is not a defining property, but is certainly a useful typical property. These kinds of descriptions would be used to address queries like 'This area is within a polygon classified as Podunk Formation; what sort of lithology am I most likely to encounter when I start digging?' The Podunk Formation may be defined by the presence of a certain ammonite... TypicalNorm description would be constructed as a summary over many Instance descriptions.</documentation>
                </annotation>
            </enumeration>
            <enumeration value="definingNorm">
                <annotation>
                    <documentation>DefiningNorm -- a description that specifies properties sufficient to identify a new occurrence as belonging to the class represented by the description. Basically these are the 'sufficient conditions' for class membership. Used when presented with a query 'I have an outcrop with these properties; which geologic unit should I assign to the outcrop?' DefiningNorm has to do with the intension of a ControlledConcept.</documentation>
                </annotation>
            </enumeration>
            <enumeration value="instance">
                <annotation>
                    <documentation>Instance -- a description that is specific to a particular observed occurrence. This is 'raw data', and its classification may start out as very general. There are kinds of narrowly defined ControlledConcepts that might not allow 'instances' that are different from the DefiningNorm. It might be worth considering a different relationship between MappedFeature and an Instance GeologicEntity, with the GeologicEntity role being 'description'.</documentation>
                </annotation>
            </enumeration>
        </restriction>
    </simpleType>
    <simpleType name="DescriptionPurposeOtherType">
        <restriction base="string">
            <pattern value="other: \w{2,}"/>
        </restriction>
    </simpleType>
</schema>
