<xsd:schema targetNamespace="http://www.opengis.net/ogc"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:gml="http://www.opengis.net/gml"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
version="1.1.0">
<xsd:include schemaLocation="expr.xsd"/>
<xsd:include schemaLocation="sort.xsd"/>
<xsd:include schemaLocation="filterCapabilities.xsd"/>
<xsd:import namespace="http://www.opengis.net/gml"
schemaLocation="../../gml/3.1.1/base/geometryAggregates.xsd"/>
<xsd:element name="_Id" type="ogc:AbstractIdType" abstract="true"/>
<xsd:element name="FeatureId"
type="ogc:FeatureIdType"
substitutionGroup="ogc:_Id"/>
<xsd:element name="GmlObjectId"
type="ogc:GmlObjectIdType"
substitutionGroup="ogc:_Id"/>
<xsd:element name="Filter" type="ogc:FilterType"/>
<xsd:complexType name="FilterType">
<xsd:choice>
<xsd:element ref="ogc:spatialOps"/>
<xsd:element ref="ogc:comparisonOps"/>
<xsd:element ref="ogc:logicOps"/>
<xsd:element ref="ogc:_Id" maxOccurs="unbounded"/>
</xsd:choice>
</xsd:complexType>
<xsd:element name="comparisonOps"
type="ogc:ComparisonOpsType"
abstract="true"/>
<xsd:element name="PropertyIsEqualTo"
type="ogc:BinaryComparisonOpType"
substitutionGroup="ogc:comparisonOps"/>
<xsd:element name="PropertyIsNotEqualTo"
type="ogc:BinaryComparisonOpType"
substitutionGroup="ogc:comparisonOps"/>
<xsd:element name="PropertyIsLessThan"
type="ogc:BinaryComparisonOpType"
substitutionGroup="ogc:comparisonOps"/>
<xsd:element name="PropertyIsGreaterThan"
type="ogc:BinaryComparisonOpType"
substitutionGroup="ogc:comparisonOps"/>
<xsd:element name="PropertyIsLessThanOrEqualTo"
type="ogc:BinaryComparisonOpType"
substitutionGroup="ogc:comparisonOps"/>
<xsd:element name="PropertyIsGreaterThanOrEqualTo"
type="ogc:BinaryComparisonOpType"
substitutionGroup="ogc:comparisonOps"/>
<xsd:element name="PropertyIsLike"
type="ogc:PropertyIsLikeType"
substitutionGroup="ogc:comparisonOps"/>
<xsd:element name="PropertyIsNull"
type="ogc:PropertyIsNullType"
substitutionGroup="ogc:comparisonOps"/>
<xsd:element name="PropertyIsBetween"
type="ogc:PropertyIsBetweenType"
substitutionGroup="ogc:comparisonOps"/>
<xsd:complexType name="ComparisonOpsType" abstract="true"/>
<xsd:element name="spatialOps" type="ogc:SpatialOpsType" abstract="true"/>
<xsd:element name="Equals"
type="ogc:BinarySpatialOpType"
substitutionGroup="ogc:spatialOps"/>
<xsd:element name="Disjoint"
type="ogc:BinarySpatialOpType"
substitutionGroup="ogc:spatialOps"/>
<xsd:element name="Touches"
type="ogc:BinarySpatialOpType"
substitutionGroup="ogc:spatialOps"/>
<xsd:element name="Within"
type="ogc:BinarySpatialOpType"
substitutionGroup="ogc:spatialOps"/>
<xsd:element name="Overlaps"
type="ogc:BinarySpatialOpType"
substitutionGroup="ogc:spatialOps"/>
<xsd:element name="Crosses"
type="ogc:BinarySpatialOpType"
substitutionGroup="ogc:spatialOps"/>
<xsd:element name="Intersects"
type="ogc:BinarySpatialOpType"
substitutionGroup="ogc:spatialOps"/>
<xsd:element name="Contains"
type="ogc:BinarySpatialOpType"
substitutionGroup="ogc:spatialOps"/>
<xsd:element name="DWithin"
type="ogc:DistanceBufferType"
substitutionGroup="ogc:spatialOps"/>
<xsd:element name="Beyond"
type="ogc:DistanceBufferType"
substitutionGroup="ogc:spatialOps"/>
<xsd:element name="BBOX"
type="ogc:BBOXType"
substitutionGroup="ogc:spatialOps"/>
<xsd:complexType name="SpatialOpsType" abstract="true"/>
<xsd:element name="logicOps" type="ogc:LogicOpsType" abstract="true"/>
<xsd:element name="And"
type="ogc:BinaryLogicOpType"
substitutionGroup="ogc:logicOps"/>
<xsd:element name="Or"
type="ogc:BinaryLogicOpType"
substitutionGroup="ogc:logicOps"/>
<xsd:element name="Not"
type="ogc:UnaryLogicOpType"
substitutionGroup="ogc:logicOps"/>
<xsd:complexType name="LogicOpsType" abstract="true"/>
<xsd:complexType name="AbstractIdType" abstract="true"/>
<xsd:complexType name="FeatureIdType">
<xsd:complexContent>
<xsd:extension base="ogc:AbstractIdType">
<xsd:attribute name="fid" type="xsd:ID" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="GmlObjectIdType">
<xsd:complexContent>
<xsd:extension base="ogc:AbstractIdType">
<xsd:attribute ref="gml:id" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="BinaryComparisonOpType">
<xsd:complexContent>
<xsd:extension base="ogc:ComparisonOpsType">
<xsd:sequence>
<xsd:element ref="ogc:expression" minOccurs="2" maxOccurs="2"/>
</xsd:sequence>
<xsd:attribute name="matchCase" type="xsd:boolean"
use="optional" default="true"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="PropertyIsLikeType">
<xsd:complexContent>
<xsd:extension base="ogc:ComparisonOpsType">
<xsd:sequence>
<xsd:element ref="ogc:PropertyName"/>
<xsd:element ref="ogc:Literal"/>
</xsd:sequence>
<xsd:attribute name="wildCard" type="xsd:string" use="required"/>
<xsd:attribute name="singleChar" type="xsd:string" use="required"/>
<xsd:attribute name="escapeChar" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="PropertyIsNullType">
<xsd:complexContent>
<xsd:extension base="ogc:ComparisonOpsType">
<xsd:sequence>
<xsd:element ref="ogc:PropertyName"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="PropertyIsBetweenType">
<xsd:complexContent>
<xsd:extension base="ogc:ComparisonOpsType">
<xsd:sequence>
<xsd:element ref="ogc:expression"/>
<xsd:element name="LowerBoundary" type="ogc:LowerBoundaryType"/>
<xsd:element name="UpperBoundary" type="ogc:UpperBoundaryType"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="LowerBoundaryType">
<xsd:choice>
<xsd:element ref="ogc:expression"/>
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="UpperBoundaryType">
<xsd:sequence>
<xsd:element ref="ogc:expression"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BinarySpatialOpType">
<xsd:complexContent>
<xsd:extension base="ogc:SpatialOpsType">
<xsd:sequence>
<xsd:element ref="ogc:PropertyName"/>
<xsd:choice>
<xsd:element ref="gml:_Geometry"/>
<xsd:element ref="gml:Envelope"/>
</xsd:choice>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="BBOXType">
<xsd:complexContent>
<xsd:extension base="ogc:SpatialOpsType">
<xsd:sequence>
<xsd:element ref="ogc:PropertyName"/>
<xsd:element ref="gml:Envelope"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="DistanceBufferType">
<xsd:complexContent>
<xsd:extension base="ogc:SpatialOpsType">
<xsd:sequence>
<xsd:element ref="ogc:PropertyName"/>
<xsd:element ref="gml:_Geometry"/>
<xsd:element name="Distance" type="ogc:DistanceType"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="DistanceType">
<xsd:attribute name="units" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="BinaryLogicOpType">
<xsd:complexContent>
<xsd:extension base="ogc:LogicOpsType">
<xsd:choice minOccurs="2" maxOccurs="unbounded">
<xsd:element ref="ogc:comparisonOps"/>
<xsd:element ref="ogc:spatialOps"/>
<xsd:element ref="ogc:logicOps"/>
</xsd:choice>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="UnaryLogicOpType">
<xsd:complexContent>
<xsd:extension base="ogc:LogicOpsType">
<xsd:sequence>
<xsd:choice>
<xsd:element ref="ogc:comparisonOps"/>
<xsd:element ref="ogc:spatialOps"/>
<xsd:element ref="ogc:logicOps"/>
</xsd:choice>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>
|