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

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

CSML2: * UML updated for {PointSeries?,Trajectory}Coverage to <<implement>> CV_DiscreteCoverage (rather than CV_DiscretePointCoverage); * Schema updated to include {GridSeries?,PointCollection?,Point,PointSeries?}Feature.

  • 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                        <group ref="gml:geometricPositionListGroup"/>
34                        <element ref="csml:timePositionList"/>
35                </choice>
36        </complexType>
37        <element name="SpatialOrTemporalPositionList" type="csml:SpatialOrTemporalPositionListType" substitutionGroup="gml:AbstractObject"/>
38        <complexType name="SpatialOrTemporalPositionListPropertyType">
39                <sequence>
40                        <element ref="csml:SpatialOrTemporalPositionList"/>
41                </sequence>
42                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
43        </complexType>
44        <!--====================================================================== -->
45        <complexType name="GridOrdinateDescriptionType">
46                <annotation>
47                        <documentation>GridOrdinateDescription defines grid point locations over entire Grid for a single spatial or temporal coordinate axis.</documentation>
48                </annotation>
49                <sequence>
50                        <element name="coordAxisLabel" type="NCName"/>
51                        <element name="coordAxisValues" type="csml:SpatialOrTemporalPositionListPropertyType"/>
52                        <element name="gridAxesSpanned">
53                                <simpleType>
54                                        <list itemType="int"/>
55                                </simpleType>
56                        </element>
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 references system. See ISO 19123 8.2.1.</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                       
106                        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>
107                </annotation>
108                <complexContent>
109                        <extension base="gml:GridType">
110                                <sequence>
111                                        <element name="coordTransformTable" type="csml:GridCoordinatesTablePropertyType"/>
112                                </sequence>
113                        </extension>
114                </complexContent>
115        </complexType>
116        <element name="ReferenceableGrid" type="csml:ReferenceableGridType" substitutionGroup="gml:Grid"/>
117        <complexType name="ReferenceableGridPropertyType">
118                <sequence>
119                        <element ref="csml:ReferenceableGrid"/>
120                </sequence>
121                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
122        </complexType>
123        <!--====================================================================== -->
124        <!--====================================================================== -->
125        <!--==== ReferenceableGridCoverage ====-->
126        <!--====================================================================== -->
127        <complexType name="ReferenceableGridDomainType">
128                <annotation>
129                        <documentation>Implemented by analogy with gml:RectifiedGridDomainType.</documentation>
130                </annotation>
131                <complexContent>
132                        <restriction base="gml:DomainSetType">
133                                <sequence minOccurs="0">
134                                        <element ref="csml:ReferenceableGrid"/>
135                                </sequence>
136                                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
137                                <attributeGroup ref="gml:AssociationAttributeGroup"/>
138                        </restriction>
139                </complexContent>
140        </complexType>
141        <element name="referenceableGridDomain" type="csml:ReferenceableGridDomainType" substitutionGroup="gml:domainSet"/>
142        <!--====================================================================== -->
143        <complexType name="ReferenceableGridCoverageType">
144                <annotation>
145                        <documentation>Implementation of ISO 19123 CV_DiscreteGridPointCoverage for a CV_ReferenceableGrid domain.</documentation>
146                </annotation>
147                <complexContent>
148                        <restriction base="gml:AbstractDiscreteCoverageType">
149                                <sequence>
150                                        <group ref="gml:StandardObjectProperties"/>
151                                        <element ref="gml:boundedBy" minOccurs="0"/>
152                                        <element ref="csml:referenceableGridDomain"/>
153                                        <element ref="gml:rangeSet"/>
154                                        <element ref="gml:coverageFunction" minOccurs="0"/>
155                                </sequence>
156                        </restriction>
157                </complexContent>
158        </complexType>
159        <element name="ReferenceableGridCoverage" type="csml:ReferenceableGridCoverageType" substitutionGroup="gml:AbstractDiscreteCoverage"/>
160        <complexType name="ReferenceableGridCoveragePropertyType">
161                <sequence>
162                        <element ref="csml:ReferenceableGridCoverage"/>
163                </sequence>
164                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
165        </complexType>
166        <!--====================================================================== -->
167        <!--====================================================================== -->
168        <!--==== CSML Grid Feature Type ====-->
169        <!--====================================================================== -->
170        <complexType name="GridFeatureType">
171                <complexContent>
172                        <extension base="gml:AbstractFeatureType">
173                                <sequence>
174                                        <element name="time" type="gml:TimeInstantPropertyType"/>
175                                        <element name="value" type="csml:ReferenceableGridCoveragePropertyType"/>
176                                        <element name="parameter" type="swe:PhenomenonPropertyType"/>
177                                </sequence>
178                        </extension>
179                </complexContent>
180        </complexType>
181        <element name="GridFeature" type="csml:GridFeatureType" substitutionGroup="gml:AbstractFeature"/>
182        <complexType name="GridFeaturePropertyType">
183                <sequence>
184                        <element ref="csml:GridFeature"/>
185                </sequence>
186                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
187        </complexType>
188        <!--====================================================================== -->
189        <!--====================================================================== -->
190        <!--==== CSML GridSeries Feature Type ====-->
191        <!--====================================================================== -->
192        <complexType name="SpatioTemporalCRSType">
193                <annotation>
194                        <documentation>Exactly one component reference system must be a TM_TemporalCRS (i.e. gml:TemporalCRS)</documentation>
195                </annotation>
196                <complexContent>
197                        <extension base="gml:CompoundCRSType"/>
198                </complexContent>
199        </complexType>
200        <element name="SpatioTemporalCRS" type="csml:SpatioTemporalCRSType" substitutionGroup="gml:CompoundCRS"/>
201        <!--====================================================================== -->
202        <complexType name="GridSeriesDomainType">
203                <annotation>
204                        <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>
205                </annotation>
206                <complexContent>
207                        <extension base="csml:ReferenceableGridType"/>
208                </complexContent>
209        </complexType>
210        <element name="GridSeriesDomain" type="csml:GridSeriesDomainType" substitutionGroup="csml:ReferenceableGrid"/>
211        <complexType name="GridSeriesDomainPropertyType">
212                <sequence>
213                        <element ref="csml:GridSeriesDomain"/>
214                </sequence>
215                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
216        </complexType>
217        <!--====================================================================== -->
218        <complexType name="GridSeriesCoverageDomainType">
219                <complexContent>
220                        <restriction base="gml:GridDomainType">
221                                <sequence minOccurs="0">
222                                        <element ref="csml:GridSeriesDomain"/>
223                                </sequence>
224                        </restriction>
225                </complexContent>
226        </complexType>
227        <element name="gridSeriesDomain" type="csml:GridSeriesCoverageDomainType" substitutionGroup="gml:gridDomain"/>
228        <!--====================================================================== -->
229        <complexType name="GridSeriesCoverageType">
230                <complexContent>
231                        <restriction base="gml:GridCoverageType">
232                                <sequence>
233                                        <group ref="gml:StandardObjectProperties"/>
234                                        <element ref="gml:boundedBy" minOccurs="0"/>
235                                        <element ref="csml:gridSeriesDomain"/>
236                                        <element ref="gml:rangeSet"/>
237                                        <element ref="gml:coverageFunction" minOccurs="0"/>
238                                </sequence>
239                        </restriction>
240                </complexContent>
241        </complexType>
242        <element name="GridSeriesCoverage" type="csml:GridSeriesCoverageType" substitutionGroup="gml:GridCoverage"/>
243        <complexType name="GridSeriesCoveragePropertyType">
244                <sequence>
245                        <element ref="csml:GridSeriesCoverage"/>
246                </sequence>
247                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
248        </complexType>
249        <!--====================================================================== -->
250        <complexType name="GridSeriesFeatureType">
251                <complexContent>
252                        <extension base="gml:AbstractFeatureType">
253                                <sequence>
254                                        <element name="value" type="csml:GridSeriesCoveragePropertyType"/>
255                                        <element name="parameter" type="swe:PhenomenonPropertyType"/>
256                                </sequence>
257                        </extension>
258                </complexContent>
259        </complexType>
260        <element name="GridSeriesFeature" type="csml:GridSeriesFeatureType" substitutionGroup="gml:AbstractFeature"/>
261        <complexType name="GridSeriesFeaturePropertyType">
262                <sequence>
263                        <element ref="csml:GridSeriesFeature"/>
264                </sequence>
265                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
266        </complexType>
267        <!--====================================================================== -->
268        <!--====================================================================== -->
269        <!--==== CSML PointCollection Feature Type ====-->
270        <!--====================================================================== -->
271        <complexType name="PointCollectionFeatureType">
272                <complexContent>
273                        <extension base="gml:AbstractFeatureType">
274                                <sequence>
275                                        <element name="time" type="gml:TimeInstantPropertyType"/>
276                                        <element name="value">
277                                                <complexType>
278                                                        <sequence>
279                                                                <element ref="gml:MultiPointCoverage"/>
280                                                        </sequence>
281                                                </complexType>
282                                        </element>
283                                </sequence>
284                        </extension>
285                </complexContent>
286        </complexType>
287        <element name="PointCollectionFeature" type="csml:PointCollectionFeatureType" substitutionGroup="gml:AbstractFeature"/>
288        <complexType name="PointCollectionFeaturePropertyType">
289                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
290        </complexType>
291        <!--====================================================================== -->
292        <!--====================================================================== -->
293        <!--==== CSML Point Feature Type ====-->
294        <!--====================================================================== -->
295        <complexType name="PointDomainType">
296                <annotation>
297                        <documentation>Restricts a gml:MultiPoint to having a single pointMember.</documentation>
298                </annotation>
299                <complexContent>
300                        <restriction base="gml:MultiPointType">
301                                <sequence>
302                                        <group ref="gml:StandardObjectProperties"/>
303                                        <element ref="gml:pointMember" minOccurs="0"/>
304                                </sequence>
305                        </restriction>
306                </complexContent>
307        </complexType>
308        <element name="PointDomain" type="csml:PointDomainType" substitutionGroup="gml:MultiPoint"/>
309        <complexType name="PointDomainPropertyType">
310                <sequence>
311                        <element ref="csml:PointDomain"/>
312                </sequence>
313                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
314        </complexType>
315        <!--====================================================================== -->
316        <complexType name="PointCoverageDomainType">
317                <complexContent>
318                        <restriction base="gml:MultiPointDomainType">
319                                <sequence minOccurs="0">
320                                        <element ref="csml:PointDomain"/>
321                                </sequence>
322                        </restriction>
323                </complexContent>
324        </complexType>
325        <element name="pointDomain" type="csml:PointCoverageDomainType" substitutionGroup="gml:multiPointDomain"/>
326        <!--====================================================================== -->
327        <complexType name="PointCoverageType">
328                <complexContent>
329                        <restriction base="gml:MultiPointCoverageType">
330                                <sequence>
331                                        <group ref="gml:StandardObjectProperties"/>
332                                        <element ref="gml:boundedBy" minOccurs="0"/>
333                                        <element ref="csml:pointDomain"/>
334                                        <element ref="gml:rangeSet"/>
335                                        <element ref="gml:coverageFunction" minOccurs="0"/>
336                                </sequence>
337                        </restriction>
338                </complexContent>
339        </complexType>
340        <element name="PointCoverage" type="csml:PointCoverageType" substitutionGroup="gml:MultiPointCoverage"/>
341        <complexType name="PointCoveragePropertyType">
342                <sequence>
343                        <element ref="csml:PointCoverage"/>
344                </sequence>
345                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
346        </complexType>
347        <!--====================================================================== -->
348        <complexType name="PointFeatureType">
349                <complexContent>
350                        <extension base="gml:AbstractFeatureType">
351                                <sequence>
352                                        <element name="location" type="gml:PointPropertyType"/>
353                                        <element name="time" type="gml:TimeInstantPropertyType" minOccurs="0"/>
354                                        <element name="value" type="csml:PointCoveragePropertyType"/>
355                                        <element name="parameter" type="swe:PhenomenonPropertyType"/>
356                                </sequence>
357                        </extension>
358                </complexContent>
359        </complexType>
360        <element name="PointFeature" type="csml:PointFeatureType" substitutionGroup="gml:AbstractFeature"/>
361        <complexType name="PointFeaturePropertyType">
362                <sequence>
363                        <element ref="csml:PointFeature"/>
364                </sequence>
365                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
366        </complexType>
367        <!--====================================================================== -->
368        <!--====================================================================== -->
369        <!--==== Alternate Point Feature Type ====-->
370        <!--====================================================================== -->
371        <complexType name="AlternatePointDomainType">
372                <complexContent>
373                        <restriction base="gml:DomainSetType">
374                                <sequence minOccurs="0">
375                                        <element ref="gml:Point"/>
376                                </sequence>
377                        </restriction>
378                </complexContent>
379        </complexType>
380        <element name="alternatePointDomain" type="csml:AlternatePointDomainType" substitutionGroup="gml:domainSet"/>
381        <!--====================================================================== -->
382        <complexType name="AlternatePointCoverageType">
383                <complexContent>
384                        <restriction base="gml:AbstractDiscreteCoverageType">
385                                <sequence>
386                                        <group ref="gml:StandardObjectProperties"/>
387                                        <element ref="gml:boundedBy" minOccurs="0"/>
388                                        <element ref="gml:location" minOccurs="0"/>
389                                        <element ref="csml:alternatePointDomain"/>
390                                        <element ref="gml:rangeSet"/>
391                                        <element ref="gml:coverageFunction" minOccurs="0"/>
392                                </sequence>
393                        </restriction>
394                </complexContent>
395        </complexType>
396        <element name="AlternatePointCoverage" type="csml:AlternatePointCoverageType" substitutionGroup="gml:AbstractDiscreteCoverage"/>
397        <complexType name="AlternatePointCoveragePropertyType">
398                <sequence>
399                        <element ref="csml:AlternatePointCoverage"/>
400                </sequence>
401        </complexType>
402        <!--====================================================================== -->
403        <complexType name="AlternatePointFeatureType">
404                <complexContent>
405                        <extension base="gml:AbstractFeatureType">
406                                <sequence>
407                                        <element name="location" type="gml:PointPropertyType"/>
408                                        <element name="time" type="gml:TimeInstantPropertyType" minOccurs="0"/>
409                                        <element name="value" type="csml:AlternatePointCoveragePropertyType"/>
410                                        <element name="parameter" type="swe:PhenomenonPropertyType"/>
411                                </sequence>
412                        </extension>
413                </complexContent>
414        </complexType>
415        <element name="AlternatePointFeature" type="csml:AlternatePointFeatureType" substitutionGroup="gml:AbstractFeature"/>
416        <complexType name="AlternatePointFeaturePropertyType">
417                <sequence>
418                        <element ref="csml:AlternatePointFeature"/>
419                </sequence>
420                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
421        </complexType>
422        <!--====================================================================== -->
423        <!--====================================================================== -->
424        <!--==== CSML PointSeries Feature Type ====-->
425        <!--====================================================================== -->
426        <complexType name="TimeSeriesDomainType">
427                <complexContent>
428                        <extension base="gml:AbstractTimeComplexType">
429                                <sequence>
430                                        <element ref="csml:timePositionList"/>
431                                </sequence>
432                        </extension>
433                </complexContent>
434        </complexType>
435        <element name="TimeSeriesDomain" type="csml:TimeSeriesDomainType" substitutionGroup="gml:AbstractTimeComplex"/>
436        <complexType name="TimeSeriesDomainPropertyType">
437                <sequence>
438                        <element ref="csml:TimeSeriesDomain"/>
439                </sequence>
440                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
441        </complexType>
442        <!--====================================================================== -->
443        <complexType name="PointSeriesCoverageDomainType">
444                <complexContent>
445                        <restriction base="gml:DomainSetType">
446                                <sequence minOccurs="0">
447                                        <element ref="csml:TimeSeriesDomain"/>
448                                </sequence>
449                        </restriction>
450                </complexContent>
451        </complexType>
452        <element name="pointSeriesDomain" type="csml:PointSeriesCoverageDomainType" substitutionGroup="gml:domainSet"/>
453        <!--====================================================================== -->
454        <complexType name="PointSeriesCoverageType">
455                <complexContent>
456                        <restriction base="gml:AbstractDiscreteCoverageType">
457                                <sequence>
458                                        <group ref="gml:StandardObjectProperties"/>
459                                        <element ref="gml:boundedBy" minOccurs="0"/>
460                                        <element ref="gml:location" minOccurs="0"/>
461                                        <element ref="csml:pointSeriesDomain"/>
462                                        <element ref="gml:rangeSet"/>
463                                        <element ref="gml:coverageFunction" minOccurs="0"/>
464                                </sequence>
465                        </restriction>
466                </complexContent>
467        </complexType>
468        <element name="PointSeriesCoverage" type="csml:PointSeriesCoverageType" substitutionGroup="gml:AbstractDiscreteCoverage"/>
469        <complexType name="PointSeriesCoveragePropertyType">
470                <sequence>
471                        <element ref="csml:PointSeriesCoverage"/>
472                </sequence>
473                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
474        </complexType>
475        <!--====================================================================== -->
476        <complexType name="PointSeriesFeatureType">
477                <complexContent>
478                        <extension base="gml:AbstractFeatureType">
479                                <sequence>
480                                        <element name="location" type="gml:PointPropertyType" minOccurs="0"/>
481                                        <element name="value" type="csml:PointSeriesCoveragePropertyType"/>
482                                        <element name="parameter" type="swe:PhenomenonPropertyType"/>
483                                </sequence>
484                        </extension>
485                </complexContent>
486        </complexType>
487        <element name="PointSeriesFeature" type="csml:PointSeriesFeatureType" substitutionGroup="gml:AbstractFeature"/>
488        <complexType name="PointSeriesFeaturePropertyType">
489                <sequence>
490                        <element ref="csml:PointSeriesFeature"/>
491                </sequence>
492                <attributeGroup ref="gml:OwnershipAttributeGroup"/>
493        </complexType>
494        <!--====================================================================== -->
495        <!--====================================================================== -->
496</schema>
Note: See TracBrowser for help on using the repository browser.