<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
   targetNamespace="http://www.opengis.net/ogc"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:ogc="http://www.opengis.net/ogc"
   elementFormDefault="qualified">

   <xsd:complexType name="Arithmetic_OperatorsType">
      <xsd:choice maxOccurs="unbounded">
         <xsd:element ref="ogc:Simple_Arithmetic"/>
         <xsd:element name="Functions" type="ogc:FunctionsType"/>
      </xsd:choice>
   </xsd:complexType>
   <xsd:element name="BBOX">
      <xsd:complexType/>
   </xsd:element>
   <xsd:element name="Between">
      <xsd:complexType/>
   </xsd:element>
   <xsd:element name="Beyond">
      <xsd:complexType/>
   </xsd:element>
   <xsd:complexType name="Comparison_OperatorsType">
      <xsd:choice maxOccurs="unbounded">
         <xsd:element ref="ogc:Simple_Comparisons"/>
         <xsd:element ref="ogc:Like"/>
         <xsd:element ref="ogc:Between"/>
         <xsd:element ref="ogc:NullCheck"/>
      </xsd:choice>
   </xsd:complexType>
   <xsd:element name="Contains">
      <xsd:complexType/>
   </xsd:element>
   <xsd:element name="Crosses">
      <xsd:complexType/>
   </xsd:element>
   <xsd:element name="Disjoint">
      <xsd:complexType/>
   </xsd:element>
   <xsd:element name="DWithin">
      <xsd:complexType/>
   </xsd:element>
   <xsd:element name="Equals">
      <xsd:complexType/>
   </xsd:element>
   <xsd:element name="Filter_Capabilities">
      <xsd:complexType>
         <xsd:sequence>
            <xsd:element name="Spatial_Capabilities"
                         type="ogc:Spatial_CapabilitiesType"/>
            <xsd:element name="Scalar_Capabilities"
                         type="ogc:Scalar_CapabilitiesType"/>
         </xsd:sequence>
      </xsd:complexType>
   </xsd:element>
   <xsd:complexType name="Function_NameType">
      <xsd:simpleContent>
         <xsd:extension base="xsd:string">
            <xsd:attribute name="nArgs" type="xsd:string" use="required"/>
         </xsd:extension>
      </xsd:simpleContent>
   </xsd:complexType>
   <xsd:complexType name="Function_NamesType">
      <xsd:sequence maxOccurs="unbounded">
         <xsd:element name="Function_Name" type="ogc:Function_NameType"/>
      </xsd:sequence>
   </xsd:complexType>
   <xsd:complexType name="FunctionsType">
      <xsd:sequence>
         <xsd:element name="Function_Names" type="ogc:Function_NamesType"/>
      </xsd:sequence>
   </xsd:complexType>
   <xsd:element name="Intersect">
      <xsd:complexType/>
   </xsd:element>
   <xsd:element name="Like">
      <xsd:complexType/>
   </xsd:element>
   <xsd:element name="Logical_Operators">
      <xsd:complexType/>
   </xsd:element>
   <xsd:element name="NullCheck">
      <xsd:complexType/>
   </xsd:element>
   <xsd:element name="Overlaps">
      <xsd:complexType/>
   </xsd:element>
   <xsd:complexType name="Scalar_CapabilitiesType">
      <xsd:choice maxOccurs="unbounded">
         <xsd:element ref="ogc:Logical_Operators"/>
         <xsd:element name="Comparison_Operators"
                      type="ogc:Comparison_OperatorsType"/>
         <xsd:element name="Arithmetic_Operators"
                      type="ogc:Arithmetic_OperatorsType"/>
      </xsd:choice>
   </xsd:complexType>
   <xsd:element name="Simple_Arithmetic">
      <xsd:complexType/>
   </xsd:element>
   <xsd:element name="Simple_Comparisons">
      <xsd:complexType/>
   </xsd:element>
   <xsd:complexType name="Spatial_CapabilitiesType">
      <xsd:sequence>
         <xsd:element name="Spatial_Operators"
                      type="ogc:Spatial_OperatorsType"/>
      </xsd:sequence>
   </xsd:complexType>
   <xsd:complexType name="Spatial_OperatorsType">
      <xsd:choice maxOccurs="unbounded">
         <xsd:element ref="ogc:BBOX"/>
         <xsd:element ref="ogc:Equals"/>
         <xsd:element ref="ogc:Disjoint"/>
         <xsd:element ref="ogc:Intersect"/>
         <xsd:element ref="ogc:Touches"/>
         <xsd:element ref="ogc:Crosses"/>
         <xsd:element ref="ogc:Within"/>
         <xsd:element ref="ogc:Contains"/>
         <xsd:element ref="ogc:Overlaps"/>
         <xsd:element ref="ogc:Beyond"/>
         <xsd:element ref="ogc:DWithin"/>
      </xsd:choice>
   </xsd:complexType>
   <xsd:element name="Touches">
      <xsd:complexType/>
   </xsd:element>
   <xsd:element name="Within">
      <xsd:complexType/>
   </xsd:element>
</xsd:schema>
