<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:swes="http://www.opengis.net/swes/2.0" xmlns:om="http://www.opengis.net/om/2.0" targetNamespace="http://www.opengis.net/swes/2.0" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.0.0">
  <annotation>
    <documentation>
      SWES is an OGC Standard.
      Copyright (c) 2010, 2011 Open Geospatial Consortium. 
      To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .
    </documentation>
  </annotation>
  <import namespace="http://www.opengis.net/gml/3.2" schemaLocation="http://schemas.opengis.net/gml/3.2.1/gml.xsd"/>
  <include schemaLocation="swes.xsd"/>
  <include schemaLocation="swesCommon.xsd"/>
  <!-- ================================================= -->
  <element name="AbstractOffering" type="swes:AbstractOfferingType" abstract="true" substitutionGroup="swes:AbstractSWES">
    <annotation>
      <documentation>contains metadata about a procedure / sensor hosted by the service</documentation>
    </annotation>
  </element>
  <complexType name="AbstractOfferingType" abstract="true">
    <complexContent>
      <extension base="swes:AbstractSWESType">
        <sequence>
          <element name="procedure" type="anyURI">
            <annotation>
              <appinfo>
                <gml:targetElement>unknown</gml:targetElement>
              </appinfo>
              <documentation>Pointer to the procedure / sensor associated with this offering.</documentation>
            </annotation>
          </element>
          <element name="procedureDescriptionFormat" type="anyURI" minOccurs="0" maxOccurs="unbounded">
            <annotation>
              <appinfo>
                <gml:targetElement>swes:FormatCode</gml:targetElement>
              </appinfo>
              <documentation>identifier of a specific procedure / sensor description format</documentation>
            </annotation>
          </element>
          <element name="observableProperty" type="anyURI" minOccurs="0" maxOccurs="unbounded">
            <annotation>
              <appinfo>
                <gml:targetElement>unknown</gml:targetElement>
              </appinfo>
              <documentation>Pointer to a property that can be observed by the procedure, not necessarily a property that has already been observed.</documentation>
            </annotation>
          </element>
          <element name="relatedFeature" minOccurs="0" maxOccurs="unbounded">
            <annotation>
              <documentation>feature that is directly or indirectly observed / observable by the procedure; can be any feature which the service provider thinks the procedure can make valuable observations for</documentation>
            </annotation>
            <complexType>
              <sequence>
                <element ref="swes:FeatureRelationship"/>
              </sequence>
            </complexType>
          </element>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <complexType name="AbstractOfferingPropertyType">
    <sequence minOccurs="0">
      <element ref="swes:AbstractOffering"/>
    </sequence>
    <attributeGroup ref="gml:AssociationAttributeGroup"/>
  </complexType>
  <!-- ================================================= -->
  <element name="AbstractContents" type="swes:AbstractContentsType" abstract="true" substitutionGroup="swes:AbstractSWES">
    <annotation>
      <documentation>provides metadata about the resources managed by the service</documentation>
    </annotation>
  </element>
  <complexType name="AbstractContentsType" abstract="true">
    <complexContent>
      <extension base="swes:AbstractSWESType">
        <sequence>
          <element name="procedureDescriptionFormat" type="anyURI" minOccurs="0" maxOccurs="unbounded">
            <annotation>
              <appinfo>
                <gml:targetElement>swes:FormatCode</gml:targetElement>
              </appinfo>
              <documentation>identifier of a specific procedure / sensor description format</documentation>
            </annotation>
          </element>
          <element name="observableProperty" type="anyURI" minOccurs="0" maxOccurs="unbounded">
            <annotation>
              <appinfo>
                <gml:targetElement>unknown</gml:targetElement>
              </appinfo>
              <documentation>Pointer to a property that can be observed by a procedure, not necessarily a property that has already been observed.</documentation>
            </annotation>
          </element>
          <element name="relatedFeature" minOccurs="0" maxOccurs="unbounded">
            <annotation>
              <documentation>feature that is directly or indirectly observed / observable by a procedure; can be any feature of which the service provider thinks the procedure can make valuable observations for</documentation>
            </annotation>
            <complexType>
              <sequence>
                <element ref="swes:FeatureRelationship"/>
              </sequence>
            </complexType>
          </element>
          <element name="offering" minOccurs="0" maxOccurs="unbounded">
            <annotation>
              <documentation>contains metadata about a procedure / sensor hosted by the service</documentation>
            </annotation>
            <complexType>
              <sequence>
                <element ref="swes:AbstractOffering"/>
              </sequence>
            </complexType>
          </element>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <complexType name="AbstractContentsPropertyType">
    <sequence minOccurs="0">
      <element ref="swes:AbstractContents"/>
    </sequence>
    <attributeGroup ref="gml:AssociationAttributeGroup"/>
  </complexType>
</schema>
