source: TI02-CSML/branches/CSML2/XMLSchemas/csmlMain.xsd @ 1700

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI02-CSML/branches/CSML2/XMLSchemas/csmlMain.xsd@1700
Revision 1700, 21.7 KB checked in by awoolf, 14 years ago (diff)

Slight mods arising from OGC 06-160 GML CR on ReferenceableGrid?.

  • Property svn:executable set to *
Line 
1<!-- edited with XMLSPY v5 rel. 3 U (http://www.xmlspy.com) by Andrew Woolf (CCLRC) -->
2<schema targetNamespace="http://ndg.nerc.ac.uk/csml" xmlns:csml="http://ndg.nerc.ac.uk/csml" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:swe="http://www.opengis.net/swe" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.9">
3        <annotation>
4                <documentation>Main CSML schema file - includes domain geometries, coverage classes, feature types etc.</documentation>
5        </annotation>
6        <import namespace="http://www.opengis.net/gml" schemaLocation="gml/gml.xsd"/>
7        <import namespace="http://www.opengis.net/swe" schemaLocation="sweCommon/phenomenon.xsd"/>
8        <!--====================================================================== -->
9        <!--==== ReferenceableGrid ==== -->
10        <!--====================================================================== -->
11        <annotation>
12                <documentation>TimeValueList and TimePositonListType based on the obvious extensions of GML TimePositionUnion and TimePositionType, and identical to the equivalents in SWE.</documentation>
13        </annotation>
14        <simpleType name="TimeValueList">
15                <list itemType="gml:TimePositionUnion"/>
16        </simpleType>
17        <complexType name="TimePositionListType">
18                <simpleContent>
19                        <extension base="csml:TimeValueList">
20                                <attribute name="frame" type="anyURI" default="#ISO-8601"/>
21                                <attribute name="calendarEraName" type="string"/>
22                                <attribute name="indeterminatePosition" type="gml:TimeIndeterminateValueType"/>
23                        </extension>
24                </simpleContent>
25        </complexType>
26        <element name="timePositionList" type="csml:TimePositionListType"/>
27        <!--====================================================================== -->
28        <complexType name="SpatialOrTemporalPositionListType">
29                <annotation>
30                        <documentation>SpatialOrTemporalPositionList allows efficient lists of either spatial or temporal positions.</documentation>
31                </annotation>
32                <choice>
33                        <element name="coordinateList">
34                                <simpleType>
35                                        <list itemType="double"/>
36                                </simpleType>
37                        </element>
38                        <element ref="csml:timePositionList"/>
39                </choice>
40        </complexType>
41        <element name="SpatialOrTemporalPositionList" type="csml:SpatialOrTemporalPositionListType" substitutionGroup="gml:AbstractObject"/>
42        <complexType name="SpatialOrTemporalPositionListPropertyType">
43                <sequence>
44                        <element ref="csml:SpatialOrTemporalPositionList"/>
45                </sequence>
46                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
47        </complexType>
48        <!--====================================================================== -->
49        <complexType name="GridOrdinateDescriptionType">
50                <annotation>
51                        <documentation>GridOrdinateDescription defines grid point locations over entire Grid for a single spatial or temporal coordinate axis.</documentation>
52                </annotation>
53                <sequence>
54                        <element name="coordAxisLabel" type="NCName"/>
55                        <element name="coordAxisValues" type="csml:SpatialOrTemporalPositionListPropertyType"/>
56                        <element name="gridAxesSpanned" type="gml:NCNameList"/>
57                        <element name="sequenceRule" type="gml:SequenceRuleType"/>
58                </sequence>
59        </complexType>
60        <element name="GridOrdinateDescription" type="csml:GridOrdinateDescriptionType" substitutionGroup="gml:AbstractObject"/>
61        <complexType name="GridOrdinateDescriptionPropertyType">
62                <sequence>
63                        <element ref="csml:GridOrdinateDescription"/>
64                </sequence>
65                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
66        </complexType>
67        <!--====================================================================== -->
68        <complexType name="GridPointDescriptionType">
69                <annotation>
70                        <documentation>GridPointDescription defines grid point locations over entire Grid by listing direct positions in given sequence order.</documentation>
71                </annotation>
72                <sequence>
73                        <group ref="gml:geometricPositionListGroup"/>
74                        <element name="sequenceRule" type="gml:SequenceRuleType"/>
75                </sequence>
76        </complexType>
77        <element name="GridPointDescription" type="csml:GridPointDescriptionType" substitutionGroup="gml:AbstractObject"/>
78        <complexType name="GridPointDescriptionPropertyType">
79                <sequence>
80                        <element ref="csml:GridPointDescription"/>
81                </sequence>
82                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
83        </complexType>
84        <!--====================================================================== -->
85        <complexType name="GridCoordinatesTableType">
86                <annotation>
87                        <documentation>Defines a table providing the transformation between grid coordinates and external coordinate reference system (see ISO 19123 8.2.1). Allows all grid point locations to be listed explicitly (using the gml:gridPoints property), or individual ordinates to be listed for each coordinate system axis (using a set of gml:gridOrdinate elements – one for each axis of the coordinate reference system).</documentation>
88                </annotation>
89                <choice>
90                        <element name="gridOrdinate" type="csml:GridOrdinateDescriptionPropertyType" maxOccurs="unbounded"/>
91                        <element name="gridPoints" type="csml:GridPointDescriptionPropertyType"/>
92                </choice>
93        </complexType>
94        <element name="GridCoordinatesTable" type="csml:GridCoordinatesTableType" substitutionGroup="gml:AbstractObject"/>
95        <complexType name="GridCoordinatesTablePropertyType">
96                <sequence>
97                        <element ref="csml:GridCoordinatesTable"/>
98                </sequence>
99                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
100        </complexType>
101        <!--====================================================================== -->
102        <complexType name="ReferenceableGridType">
103                <annotation>
104                        <documentation>An implementation of CV_ReferenceableGrid of ISO 19123.
105                        The association role 'crs' to the SC_CRS to which it is referenceable is implemented using the gml:SRSReferenceGroup attributeGroup inherited from gml:Grid.</documentation>
106                </annotation>
107                <complexContent>
108                        <extension base="gml:GridType">
109                                <sequence>
110                                        <element name="coordTransformTable" type="csml:GridCoordinatesTablePropertyType"/>
111                                </sequence>
112                        </extension>
113                </complexContent>
114        </complexType>
115        <element name="ReferenceableGrid" type="csml:ReferenceableGridType" substitutionGroup="gml:Grid"/>
116        <complexType name="ReferenceableGridPropertyType">
117                <sequence>
118                        <element ref="csml:ReferenceableGrid"/>
119                </sequence>
120                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
121        </complexType>
122        <!--====================================================================== -->
123        <!--====================================================================== -->
124        <!--==== ReferenceableGridCoverage ====-->
125        <!--====================================================================== -->
126        <complexType name="ReferenceableGridDomainType">
127                <annotation>
128                        <documentation>Implemented by analogy with gml:RectifiedGridDomainType.</documentation>
129                </annotation>
130                <complexContent>
131                        <restriction base="gml:DomainSetType">
132                                <sequence minOccurs="0">
133                                        <element ref="csml:ReferenceableGrid"/>
134                                </sequence>
135                                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
136                                <attributeGroup ref="gml:AssociationAttributeGroup"/>
137                        </restriction>
138                </complexContent>
139        </complexType>
140        <element name="referenceableGridDomain" type="csml:ReferenceableGridDomainType" substitutionGroup="gml:domainSet"/>
141        <!--====================================================================== -->
142        <complexType name="ReferenceableGridCoverageType">
143                <annotation>
144                        <documentation>Implementation of ISO 19123 CV_DiscreteGridPointCoverage for a CV_ReferenceableGrid domain.</documentation>
145                </annotation>
146                <complexContent>
147                        <restriction base="gml:AbstractDiscreteCoverageType">
148                                <sequence>
149                                        <group ref="gml:StandardObjectProperties"/>
150                                        <element ref="gml:boundedBy" minOccurs="0"/>
151                                        <element ref="csml:referenceableGridDomain"/>
152                                        <element ref="gml:rangeSet"/>
153                                        <element ref="gml:coverageFunction" minOccurs="0"/>
154                                </sequence>
155                        </restriction>
156                </complexContent>
157        </complexType>
158        <element name="ReferenceableGridCoverage" type="csml:ReferenceableGridCoverageType" substitutionGroup="gml:AbstractDiscreteCoverage"/>
159        <complexType name="ReferenceableGridCoveragePropertyType">
160                <sequence>
161                        <element ref="csml:ReferenceableGridCoverage"/>
162                </sequence>
163                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
164        </complexType>
165        <!--====================================================================== -->
166        <!--====================================================================== -->
167        <!--==== CSML Grid Feature Type ====-->
168        <!--====================================================================== -->
169        <complexType name="GridFeatureType">
170                <complexContent>
171                        <extension base="gml:AbstractFeatureType">
172                                <sequence>
173                                        <element name="time" type="gml:TimeInstantPropertyType"/>
174                                        <element name="value" type="csml:ReferenceableGridCoveragePropertyType"/>
175                                        <element name="parameter" type="swe:PhenomenonPropertyType"/>
176                                </sequence>
177                        </extension>
178                </complexContent>
179        </complexType>
180        <element name="GridFeature" type="csml:GridFeatureType" substitutionGroup="gml:AbstractFeature"/>
181        <complexType name="GridFeaturePropertyType">
182                <sequence>
183                        <element ref="csml:GridFeature"/>
184                </sequence>
185                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
186        </complexType>
187        <!--====================================================================== -->
188        <!--====================================================================== -->
189        <!--==== CSML GridSeries Feature Type ====-->
190        <!--====================================================================== -->
191        <complexType name="SpatioTemporalCRSType">
192                <annotation>
193                        <documentation>Exactly one component reference system must be a TM_TemporalCRS (i.e. gml:TemporalCRS)</documentation>
194                </annotation>
195                <complexContent>
196                        <extension base="gml:CompoundCRSType"/>
197                </complexContent>
198        </complexType>
199        <element name="SpatioTemporalCRS" type="csml:SpatioTemporalCRSType" substitutionGroup="gml:CompoundCRS"/>
200        <!--====================================================================== -->
201        <complexType name="GridSeriesDomainType">
202                <annotation>
203                        <documentation>The SC_CRS to which this is referenced (via the inherited gml:SRSReferenceGroup attributeGroup) should be a csml:SpatioTemporalCRS. In addition, one of the GridOrdinateDescription objects must have a timePositonList. This could be implemented by deriving by restriction from ReferenceableGridType, or perhaps using schematron. For now, leave it unenforced but understood....</documentation>
204                </annotation>
205                <complexContent>
206                        <extension base="csml:ReferenceableGridType"/>
207                </complexContent>
208        </complexType>
209        <element name="GridSeriesDomain" type="csml:GridSeriesDomainType" substitutionGroup="csml:ReferenceableGrid"/>
210        <complexType name="GridSeriesDomainPropertyType">
211                <sequence>
212                        <element ref="csml:GridSeriesDomain"/>
213                </sequence>
214                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
215        </complexType>
216        <!--====================================================================== -->
217        <complexType name="GridSeriesCoverageDomainType">
218                <complexContent>
219                        <restriction base="gml:GridDomainType">
220                                <sequence minOccurs="0">
221                                        <element ref="csml:GridSeriesDomain"/>
222                                </sequence>
223                        </restriction>
224                </complexContent>
225        </complexType>
226        <element name="gridSeriesDomain" type="csml:GridSeriesCoverageDomainType" substitutionGroup="gml:gridDomain"/>
227        <!--====================================================================== -->
228        <complexType name="GridSeriesCoverageType">
229                <complexContent>
230                        <restriction base="gml:GridCoverageType">
231                                <sequence>
232                                        <group ref="gml:StandardObjectProperties"/>
233                                        <element ref="gml:boundedBy" minOccurs="0"/>
234                                        <element ref="csml:gridSeriesDomain"/>
235                                        <element ref="gml:rangeSet"/>
236                                        <element ref="gml:coverageFunction" minOccurs="0"/>
237                                </sequence>
238                        </restriction>
239                </complexContent>
240        </complexType>
241        <element name="GridSeriesCoverage" type="csml:GridSeriesCoverageType" substitutionGroup="gml:GridCoverage"/>
242        <complexType name="GridSeriesCoveragePropertyType">
243                <sequence>
244                        <element ref="csml:GridSeriesCoverage"/>
245                </sequence>
246                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
247        </complexType>
248        <!--====================================================================== -->
249        <complexType name="GridSeriesFeatureType">
250                <complexContent>
251                        <extension base="gml:AbstractFeatureType">
252                                <sequence>
253                                        <element name="value" type="csml:GridSeriesCoveragePropertyType"/>
254                                        <element name="parameter" type="swe:PhenomenonPropertyType"/>
255                                </sequence>
256                        </extension>
257                </complexContent>
258        </complexType>
259        <element name="GridSeriesFeature" type="csml:GridSeriesFeatureType" substitutionGroup="gml:AbstractFeature"/>
260        <complexType name="GridSeriesFeaturePropertyType">
261                <sequence>
262                        <element ref="csml:GridSeriesFeature"/>
263                </sequence>
264                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
265        </complexType>
266        <!--====================================================================== -->
267        <!--====================================================================== -->
268        <!--==== CSML PointCollection Feature Type ====-->
269        <!--====================================================================== -->
270        <complexType name="PointCollectionFeatureType">
271                <complexContent>
272                        <extension base="gml:AbstractFeatureType">
273                                <sequence>
274                                        <element name="time" type="gml:TimeInstantPropertyType"/>
275                                        <element name="value">
276                                                <complexType>
277                                                        <sequence>
278                                                                <element ref="gml:MultiPointCoverage"/>
279                                                        </sequence>
280                                                </complexType>
281                                        </element>
282                                </sequence>
283                        </extension>
284                </complexContent>
285        </complexType>
286        <element name="PointCollectionFeature" type="csml:PointCollectionFeatureType" substitutionGroup="gml:AbstractFeature"/>
287        <complexType name="PointCollectionFeaturePropertyType">
288                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
289        </complexType>
290        <!--====================================================================== -->
291        <!--====================================================================== -->
292        <!--==== CSML Point Feature Type ====-->
293        <!--====================================================================== -->
294        <complexType name="PointDomainType">
295                <annotation>
296                        <documentation>Restricts a gml:MultiPoint to having a single pointMember.</documentation>
297                </annotation>
298                <complexContent>
299                        <restriction base="gml:MultiPointType">
300                                <sequence>
301                                        <group ref="gml:StandardObjectProperties"/>
302                                        <element ref="gml:pointMember" minOccurs="0"/>
303                                </sequence>
304                        </restriction>
305                </complexContent>
306        </complexType>
307        <element name="PointDomain" type="csml:PointDomainType" substitutionGroup="gml:MultiPoint"/>
308        <complexType name="PointDomainPropertyType">
309                <sequence>
310                        <element ref="csml:PointDomain"/>
311                </sequence>
312                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
313        </complexType>
314        <!--====================================================================== -->
315        <complexType name="PointCoverageDomainType">
316                <complexContent>
317                        <restriction base="gml:MultiPointDomainType">
318                                <sequence minOccurs="0">
319                                        <element ref="csml:PointDomain"/>
320                                </sequence>
321                        </restriction>
322                </complexContent>
323        </complexType>
324        <element name="pointDomain" type="csml:PointCoverageDomainType" substitutionGroup="gml:multiPointDomain"/>
325        <!--====================================================================== -->
326        <complexType name="PointCoverageType">
327                <complexContent>
328                        <restriction base="gml:MultiPointCoverageType">
329                                <sequence>
330                                        <group ref="gml:StandardObjectProperties"/>
331                                        <element ref="gml:boundedBy" minOccurs="0"/>
332                                        <element ref="csml:pointDomain"/>
333                                        <element ref="gml:rangeSet"/>
334                                        <element ref="gml:coverageFunction" minOccurs="0"/>
335                                </sequence>
336                        </restriction>
337                </complexContent>
338        </complexType>
339        <element name="PointCoverage" type="csml:PointCoverageType" substitutionGroup="gml:MultiPointCoverage"/>
340        <complexType name="PointCoveragePropertyType">
341                <sequence>
342                        <element ref="csml:PointCoverage"/>
343                </sequence>
344                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
345        </complexType>
346        <!--====================================================================== -->
347        <complexType name="PointFeatureType">
348                <complexContent>
349                        <extension base="gml:AbstractFeatureType">
350                                <sequence>
351                                        <element name="location" type="gml:PointPropertyType"/>
352                                        <element name="time" type="gml:TimeInstantPropertyType" minOccurs="0"/>
353                                        <element name="value" type="csml:PointCoveragePropertyType"/>
354                                        <element name="parameter" type="swe:PhenomenonPropertyType"/>
355                                </sequence>
356                        </extension>
357                </complexContent>
358        </complexType>
359        <element name="PointFeature" type="csml:PointFeatureType" substitutionGroup="gml:AbstractFeature"/>
360        <complexType name="PointFeaturePropertyType">
361                <sequence>
362                        <element ref="csml:PointFeature"/>
363                </sequence>
364                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
365        </complexType>
366        <!--====================================================================== -->
367        <!--====================================================================== -->
368        <!--==== Alternate Point Feature Type ====-->
369        <!--====================================================================== -->
370        <complexType name="AlternatePointDomainType">
371                <complexContent>
372                        <restriction base="gml:DomainSetType">
373                                <sequence minOccurs="0">
374                                        <element ref="gml:Point"/>
375                                </sequence>
376                        </restriction>
377                </complexContent>
378        </complexType>
379        <element name="alternatePointDomain" type="csml:AlternatePointDomainType" substitutionGroup="gml:domainSet"/>
380        <!--====================================================================== -->
381        <complexType name="AlternatePointCoverageType">
382                <complexContent>
383                        <restriction base="gml:AbstractDiscreteCoverageType">
384                                <sequence>
385                                        <group ref="gml:StandardObjectProperties"/>
386                                        <element ref="gml:boundedBy" minOccurs="0"/>
387                                        <element ref="gml:location" minOccurs="0"/>
388                                        <element ref="csml:alternatePointDomain"/>
389                                        <element ref="gml:rangeSet"/>
390                                        <element ref="gml:coverageFunction" minOccurs="0"/>
391                                </sequence>
392                        </restriction>
393                </complexContent>
394        </complexType>
395        <element name="AlternatePointCoverage" type="csml:AlternatePointCoverageType" substitutionGroup="gml:AbstractDiscreteCoverage"/>
396        <complexType name="AlternatePointCoveragePropertyType">
397                <sequence>
398                        <element ref="csml:AlternatePointCoverage"/>
399                </sequence>
400        </complexType>
401        <!--====================================================================== -->
402        <complexType name="AlternatePointFeatureType">
403                <complexContent>
404                        <extension base="gml:AbstractFeatureType">
405                                <sequence>
406                                        <element name="location" type="gml:PointPropertyType"/>
407                                        <element name="time" type="gml:TimeInstantPropertyType" minOccurs="0"/>
408                                        <element name="value" type="csml:AlternatePointCoveragePropertyType"/>
409                                        <element name="parameter" type="swe:PhenomenonPropertyType"/>
410                                </sequence>
411                        </extension>
412                </complexContent>
413        </complexType>
414        <element name="AlternatePointFeature" type="csml:AlternatePointFeatureType" substitutionGroup="gml:AbstractFeature"/>
415        <complexType name="AlternatePointFeaturePropertyType">
416                <sequence>
417                        <element ref="csml:AlternatePointFeature"/>
418                </sequence>
419                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
420        </complexType>
421        <!--====================================================================== -->
422        <!--====================================================================== -->
423        <!--==== CSML PointSeries Feature Type ====-->
424        <!--====================================================================== -->
425        <complexType name="TimeSeriesDomainType">
426                <complexContent>
427                        <extension base="gml:AbstractTimeComplexType">
428                                <sequence>
429                                        <element ref="csml:timePositionList"/>
430                                </sequence>
431                        </extension>
432                </complexContent>
433        </complexType>
434        <element name="TimeSeriesDomain" type="csml:TimeSeriesDomainType" substitutionGroup="gml:AbstractTimeComplex"/>
435        <complexType name="TimeSeriesDomainPropertyType">
436                <sequence>
437                        <element ref="csml:TimeSeriesDomain"/>
438                </sequence>
439                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
440        </complexType>
441        <!--====================================================================== -->
442        <complexType name="PointSeriesCoverageDomainType">
443                <complexContent>
444                        <restriction base="gml:DomainSetType">
445                                <sequence minOccurs="0">
446                                        <element ref="csml:TimeSeriesDomain"/>
447                                </sequence>
448                        </restriction>
449                </complexContent>
450        </complexType>
451        <element name="pointSeriesDomain" type="csml:PointSeriesCoverageDomainType" substitutionGroup="gml:domainSet"/>
452        <!--====================================================================== -->
453        <complexType name="PointSeriesCoverageType">
454                <complexContent>
455                        <restriction base="gml:AbstractDiscreteCoverageType">
456                                <sequence>
457                                        <group ref="gml:StandardObjectProperties"/>
458                                        <element ref="gml:boundedBy" minOccurs="0"/>
459                                        <element ref="gml:location" minOccurs="0"/>
460                                        <element ref="csml:pointSeriesDomain"/>
461                                        <element ref="gml:rangeSet"/>
462                                        <element ref="gml:coverageFunction" minOccurs="0"/>
463                                </sequence>
464                        </restriction>
465                </complexContent>
466        </complexType>
467        <element name="PointSeriesCoverage" type="csml:PointSeriesCoverageType" substitutionGroup="gml:AbstractDiscreteCoverage"/>
468        <complexType name="PointSeriesCoveragePropertyType">
469                <sequence>
470                        <element ref="csml:PointSeriesCoverage"/>
471                </sequence>
472                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
473        </complexType>
474        <!--====================================================================== -->
475        <complexType name="PointSeriesFeatureType">
476                <complexContent>
477                        <extension base="gml:AbstractFeatureType">
478                                <sequence>
479                                        <element name="location" type="gml:PointPropertyType" minOccurs="0"/>
480                                        <element name="value" type="csml:PointSeriesCoveragePropertyType"/>
481                                        <element name="parameter" type="swe:PhenomenonPropertyType"/>
482                                </sequence>
483                        </extension>
484                </complexContent>
485        </complexType>
486        <element name="PointSeriesFeature" type="csml:PointSeriesFeatureType" substitutionGroup="gml:AbstractFeature"/>
487        <complexType name="PointSeriesFeaturePropertyType">
488                <sequence>
489                        <element ref="csml:PointSeriesFeature"/>
490                </sequence>
491                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
492        </complexType>
493        <!--====================================================================== -->
494        <!--====================================================================== -->
495</schema>
Note: See TracBrowser for help on using the repository browser.