Project

General

Profile

1
<?xml version="1.0" encoding="UTF-8"?>
2
<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">
3
	<xsd:include schemaLocation="expr.xsd"/>
4
	<xsd:import namespace="http://www.opengis.net/gml" schemaLocation="../../gml/2.1.2/geometry.xsd"/>
5
	<!-- ============================================= -->
6
	<!-- FILTER EXPRESSION                             -->
7
	<!-- ============================================= -->
8
	<xsd:element name="FeatureId" type="ogc:FeatureIdType"/>
9
	<xsd:element name="Filter" type="ogc:FilterType"/>
10
	<!-- ============================================= -->
11
	<!-- COMPARISON OPERATORS                          -->
12
	<!-- ============================================= -->
13
	<xsd:element name="comparisonOps" type="ogc:ComparisonOpsType" abstract="true"/>
14
	<xsd:element name="PropertyIsEqualTo" type="ogc:BinaryComparisonOpType" substitutionGroup="ogc:comparisonOps"/>
15
	<xsd:element name="PropertyIsNotEqualTo" type="ogc:BinaryComparisonOpType" substitutionGroup="ogc:comparisonOps"/>
16
	<xsd:element name="PropertyIsLessThan" type="ogc:BinaryComparisonOpType" substitutionGroup="ogc:comparisonOps"/>
17
	<xsd:element name="PropertyIsGreaterThan" type="ogc:BinaryComparisonOpType" substitutionGroup="ogc:comparisonOps"/>
18
	<xsd:element name="PropertyIsLessThanOrEqualTo" type="ogc:BinaryComparisonOpType" substitutionGroup="ogc:comparisonOps"/>
19
	<xsd:element name="PropertyIsGreaterThanOrEqualTo" type="ogc:BinaryComparisonOpType" substitutionGroup="ogc:comparisonOps"/>
20
	<xsd:element name="PropertyIsLike" type="ogc:PropertyIsLikeType" substitutionGroup="ogc:comparisonOps"/>
21
	<xsd:element name="PropertyIsNull" type="ogc:PropertyIsNullType" substitutionGroup="ogc:comparisonOps"/>
22
	<xsd:element name="PropertyIsBetween" type="ogc:PropertyIsBetweenType" substitutionGroup="ogc:comparisonOps"/>
23
	<xsd:complexType name="ComparisonOpsType" abstract="true"/>
24
	<!-- ============================================= -->
25
	<!-- SPATIAL OPERATORS (sec 3.2.19.2 99-049)       -->
26
	<!-- ============================================= -->
27
	<xsd:element name="spatialOps" type="ogc:SpatialOpsType" abstract="true"/>
28
	<xsd:element name="Equals" type="ogc:BinarySpatialOpType" substitutionGroup="ogc:spatialOps"/>
29
	<xsd:element name="Disjoint" type="ogc:BinarySpatialOpType" substitutionGroup="ogc:spatialOps"/>
30
	<xsd:element name="Touches" type="ogc:BinarySpatialOpType" substitutionGroup="ogc:spatialOps"/>
31
	<xsd:element name="Within" type="ogc:BinarySpatialOpType" substitutionGroup="ogc:spatialOps"/>
32
	<xsd:element name="Overlaps" type="ogc:BinarySpatialOpType" substitutionGroup="ogc:spatialOps"/>
33
	<xsd:element name="Crosses" type="ogc:BinarySpatialOpType" substitutionGroup="ogc:spatialOps"/>
34
	<xsd:element name="Intersects" type="ogc:BinarySpatialOpType" substitutionGroup="ogc:spatialOps"/>
35
	<xsd:element name="Contains" type="ogc:BinarySpatialOpType" substitutionGroup="ogc:spatialOps"/>
36
	<!-- These operatons are from sec 4.2 of OpenGIS Catalog Interface -->
37
	<xsd:element name="DWithin" type="ogc:DistanceBufferType" substitutionGroup="ogc:spatialOps"/>
38
	<xsd:element name="Beyond" type="ogc:DistanceBufferType" substitutionGroup="ogc:spatialOps"/>
39
	<!-- This is a convenience operator to allow simple BBOX queries -->
40
	<xsd:element name="BBOX" type="ogc:BBOXType" substitutionGroup="ogc:spatialOps"/>
41
	<xsd:complexType name="SpatialOpsType" abstract="true"/>
42
	<!-- ============================================= -->
43
	<!-- LOGICAL OPERATORS                             -->
44
	<!-- ============================================= -->
45
	<xsd:element name="logicOps" type="ogc:LogicOpsType" abstract="true"/>
46
	<xsd:element name="And" type="ogc:BinaryLogicOpType" substitutionGroup="ogc:logicOps"/>
47
	<xsd:element name="Or" type="ogc:BinaryLogicOpType" substitutionGroup="ogc:logicOps"/>
48
	<xsd:element name="Not" type="ogc:UnaryLogicOpType" substitutionGroup="ogc:logicOps"/>
49
	<xsd:complexType name="LogicOpsType" abstract="true"/>
50
	<!-- ============================================= -->
51
	<!-- COMPLEX TYPES                                 -->
52
	<!-- ============================================= -->
53
	<xsd:complexType name="FilterType">
54
		<xsd:choice>
55
			<xsd:element ref="ogc:spatialOps"/>
56
			<xsd:element ref="ogc:comparisonOps"/>
57
			<xsd:element ref="ogc:logicOps"/>
58
			<xsd:element ref="ogc:FeatureId" maxOccurs="unbounded"/>
59
		</xsd:choice>
60
	</xsd:complexType>
61
	<xsd:complexType name="FeatureIdType">
62
		<xsd:attribute name="fid" type="xsd:anyURI" use="required"/>
63
	</xsd:complexType>
64
	<xsd:complexType name="BinaryComparisonOpType">
65
		<xsd:complexContent>
66
			<xsd:extension base="ogc:ComparisonOpsType">
67
				<xsd:sequence>
68
					<xsd:element ref="ogc:expression" minOccurs="2" maxOccurs="2"/>
69
				</xsd:sequence>
70
			</xsd:extension>
71
		</xsd:complexContent>
72
	</xsd:complexType>
73
	<xsd:complexType name="PropertyIsLikeType">
74
		<xsd:complexContent>
75
			<xsd:extension base="ogc:ComparisonOpsType">
76
				<xsd:sequence>
77
					<xsd:element ref="ogc:PropertyName"/>
78
					<xsd:element ref="ogc:Literal"/>
79
				</xsd:sequence>
80
				<xsd:attribute name="wildCard" type="xsd:string" use="required"/>
81
				<xsd:attribute name="singleChar" type="xsd:string" use="required"/>
82
				<xsd:attribute name="escape" type="xsd:string" use="required"/>
83
			</xsd:extension>
84
		</xsd:complexContent>
85
	</xsd:complexType>
86
	<xsd:complexType name="PropertyIsNullType">
87
		<xsd:complexContent>
88
			<xsd:extension base="ogc:ComparisonOpsType">
89
				<xsd:choice>
90
					<xsd:element ref="ogc:PropertyName"/>
91
					<xsd:element ref="ogc:Literal"/>
92
				</xsd:choice>
93
			</xsd:extension>
94
		</xsd:complexContent>
95
	</xsd:complexType>
96
	<xsd:complexType name="PropertyIsBetweenType">
97
		<xsd:complexContent>
98
			<xsd:extension base="ogc:ComparisonOpsType">
99
				<xsd:sequence>
100
					<xsd:element ref="ogc:expression"/>
101
					<xsd:element name="LowerBoundary" type="ogc:LowerBoundaryType"/>
102
					<xsd:element name="UpperBoundary" type="ogc:UpperBoundaryType"/>
103
				</xsd:sequence>
104
			</xsd:extension>
105
		</xsd:complexContent>
106
	</xsd:complexType>
107
	<xsd:complexType name="LowerBoundaryType">
108
		<xsd:choice>
109
			<xsd:element ref="ogc:expression"/>
110
		</xsd:choice>
111
	</xsd:complexType>
112
	<xsd:complexType name="UpperBoundaryType">
113
		<xsd:sequence>
114
			<xsd:element ref="ogc:expression"/>
115
		</xsd:sequence>
116
	</xsd:complexType>
117
	<xsd:complexType name="BinarySpatialOpType">
118
		<xsd:complexContent>
119
			<xsd:extension base="ogc:SpatialOpsType">
120
				<xsd:sequence>
121
					<xsd:element ref="ogc:PropertyName"/>
122
					<xsd:choice>
123
						<xsd:element ref="gml:_Geometry"/>
124
						<xsd:element ref="gml:Box"/>
125
					</xsd:choice>
126
				</xsd:sequence>
127
			</xsd:extension>
128
		</xsd:complexContent>
129
	</xsd:complexType>
130
	<xsd:complexType name="BBOXType">
131
		<xsd:complexContent>
132
			<xsd:extension base="ogc:SpatialOpsType">
133
				<xsd:sequence>
134
					<xsd:element ref="ogc:PropertyName"/>
135
					<xsd:element ref="gml:Box"/>
136
				</xsd:sequence>
137
			</xsd:extension>
138
		</xsd:complexContent>
139
	</xsd:complexType>
140
	<xsd:complexType name="DistanceBufferType">
141
		<xsd:complexContent>
142
			<xsd:extension base="ogc:SpatialOpsType">
143
				<xsd:sequence>
144
					<xsd:element ref="ogc:PropertyName"/>
145
					<xsd:element ref="gml:_Geometry"/>
146
					<xsd:element name="Distance" type="ogc:DistanceType"/>
147
				</xsd:sequence>
148
			</xsd:extension>
149
		</xsd:complexContent>
150
	</xsd:complexType>
151
	<xsd:complexType name="DistanceType" mixed="true">
152
		<xsd:attribute name="units" type="xsd:string" use="required"/>
153
	</xsd:complexType>
154
	<xsd:complexType name="BinaryLogicOpType">
155
		<xsd:complexContent>
156
			<xsd:extension base="ogc:LogicOpsType">
157
				<xsd:choice minOccurs="2" maxOccurs="unbounded">
158
					<xsd:element ref="ogc:comparisonOps"/>
159
					<xsd:element ref="ogc:spatialOps"/>
160
					<xsd:element ref="ogc:logicOps"/>
161
				</xsd:choice>
162
			</xsd:extension>
163
		</xsd:complexContent>
164
	</xsd:complexType>
165
	<xsd:complexType name="UnaryLogicOpType">
166
		<xsd:complexContent>
167
			<xsd:extension base="ogc:LogicOpsType">
168
				<xsd:sequence>
169
					<xsd:choice>
170
						<xsd:element ref="ogc:comparisonOps"/>
171
						<xsd:element ref="ogc:spatialOps"/>
172
						<xsd:element ref="ogc:logicOps"/>
173
					</xsd:choice>
174
				</xsd:sequence>
175
			</xsd:extension>
176
		</xsd:complexContent>
177
	</xsd:complexType>
178
</xsd:schema>
(2-2/3)