source: mauRepo/revitalizationProject/branches/MEDIN/discoverySchema/src/main/resources/DiscoverySchema.xsd @ 8109

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/mauRepo/revitalizationProject/branches/MEDIN/discoverySchema/src/main/resources/DiscoverySchema.xsd@8109
Revision 8109, 18.3 KB checked in by mnagni, 8 years ago (diff)

Modified the DiscoverySchema? to include Polygon and Multipolygon Boxes
Small code improvement following the Sonar suggestions

Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<!-- edited with XMLSPY v2004 rel. 4 U (http://www.xmlspy.com) by Steve Donegan (NERC Earth Observation Data Centre) -->
3<!--
4                Maurizio Nagni <maurizio.nagni@stcf.ac.uk>
5                (NERC Earth Observation Data Centre)
6        -->
7<xs:schema targetNamespace="http://schemas.services.ndg/discovery" elementFormDefault="qualified"
8        xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.services.ndg/discovery">
9        <!-- Request elements -->
10        <xs:element name="DoSearch" type="tns:DoSearchType"/>
11        <xs:element name="DoPresent" type="tns:DoPresentType"/>
12        <xs:element name="GetListNames" nillable="true"/>
13        <xs:element name="GetList" type="tns:GetListType"/>
14        <xs:complexType name="GetVersion"/>
15        <!-- Response elements -->
16        <xs:element name="DoSearchReturn" type="tns:DoSearchReturnType"/>
17        <xs:element name="DoPresentReturn" type="tns:DoPresentReturnType"/>
18        <xs:element name="GetListNamesReturn" type="tns:GetListNamesReturnType"/>
19        <xs:element name="GetListReturn" type="tns:GetListReturnType"/>
20        <xs:complexType name="GetVersionReturn">
21                <xs:complexContent>
22                        <xs:extension base="tns:GetVersionReturnType"/>
23                </xs:complexContent>
24        </xs:complexType>
25        <!-- Request global types -->
26
27        <xs:complexType name="DoPresentType">
28                <xs:sequence>
29                        <xs:element name="Documents" type="tns:SimpleDocument" maxOccurs="unbounded"/>
30                        <xs:element name="RetrieveCriteria" type="tns:RetrieveCriteriaType" minOccurs="0">
31                                <xs:annotation>
32                                        <xs:documentation>Comparison of a date dood  or date range to specified/default dates within metadata.</xs:documentation>
33                                </xs:annotation>
34                        </xs:element>
35                        <xs:element name="TicketId" type="xs:string" minOccurs="0">
36                                <xs:annotation>
37                                        <xs:documentation>Optional term that allow the client to track the request/response messages</xs:documentation>
38                                </xs:annotation>
39                        </xs:element>
40                </xs:sequence>
41        </xs:complexType>
42
43
44        <xs:complexType name="RetrieveCriteriaType">
45                <xs:sequence>
46                        <xs:element name="OrderBy" type="tns:OrderByType" minOccurs="0" maxOccurs="unbounded">
47                                <xs:annotation>
48                                        <xs:documentation>Optional set of field(s) by which to order records in the result set and hence the search response. Direction can be specified alongside each field.</xs:documentation>
49                                </xs:annotation>
50                        </xs:element>
51                        <xs:element name="RecordDetail" type="xs:string" minOccurs="0">
52                                <xs:annotation>
53                                        <xs:documentation>Level of detail to be used for each record in the search response (before initiating doPresent). Values taken from recordDetailList. Default = "id", i.e. just the document id.</xs:documentation>
54                                </xs:annotation>
55                        </xs:element>
56                        <xs:element name="MetadataFormat" type="xs:string" minOccurs="0"/>
57                </xs:sequence>
58        </xs:complexType>
59        <xs:complexType name="DoSearchType">
60                <xs:sequence>
61                        <xs:element name="SearchCriteria">
62                                <xs:annotation>
63                                        <xs:documentation>Must have at least one of : termSearch, spatialSearch, temporalSearch.</xs:documentation>
64                                </xs:annotation>
65                                <xs:complexType>
66                                        <xs:sequence>
67                                                <xs:element name="TermSearch" type="tns:TermSearchType" minOccurs="0"
68                                                        maxOccurs="unbounded">
69                                                        <xs:annotation>
70                                                                <xs:documentation>For multiple TermSearch elements with different TermTargets use the "operator" attribute to define the relationship between successive TermTargets with the "id" attribute providing the ordering information</xs:documentation>
71                                                        </xs:annotation>
72                                                </xs:element>
73                                                <xs:element name="SpatialSearch" type="tns:SpatialType" minOccurs="0">
74                                                        <xs:annotation>
75                                                                <xs:documentation>Comparison of a single search bounding box to spatial coverage(s) of data.</xs:documentation>
76                                                        </xs:annotation>
77                                                </xs:element>
78                                                <xs:element name="TemporalSearch" type="tns:TemporalType" minOccurs="0">
79                                                        <xs:annotation>
80                                                                <xs:documentation>Comparison of a date or date range to specified/default dates within metadata.</xs:documentation>
81                                                        </xs:annotation>
82                                                </xs:element>
83                                                <xs:element name="ResourceLocator" type="xs:string" nillable="true"
84                                                        minOccurs="0"/>
85                                        </xs:sequence>
86                                </xs:complexType>
87                        </xs:element>
88                        <xs:element name="RetrieveCriteria" type="tns:RetrieveCriteriaType" minOccurs="0">
89                                <xs:annotation>
90                                        <xs:documentation>Comparison of a date or date range to specified/default dates within metadata.</xs:documentation>
91                                </xs:annotation>
92                        </xs:element>
93                        <xs:element name="Start" type="xs:unsignedInt" minOccurs="0">
94                                <xs:annotation>
95                                        <xs:documentation>Sequential record number within result set used as first record within returned search response. Useful for pagination.</xs:documentation>
96                                </xs:annotation>
97                        </xs:element>
98                        <xs:element name="HowMany" type="xs:unsignedInt" minOccurs="0">
99                                <xs:annotation>
100                                        <xs:documentation>How many records from result set to include in search response.</xs:documentation>
101                                </xs:annotation>
102                        </xs:element>
103                        <xs:element name="Scope" type="xs:string" minOccurs="0" maxOccurs="unbounded">
104                                <xs:annotation>
105                                        <xs:documentation>Optional term used to restrict search to records tagged with a data provider "scope" as listed in scopeList. </xs:documentation>
106                                </xs:annotation>
107                        </xs:element>
108                        <xs:element name="OriginalFormat" type="xs:string" minOccurs="0">
109                                <xs:annotation>
110                                        <xs:documentation>Optional term used to restrict  search to records where original ingested xml format matches that in OriginalFormatList</xs:documentation>
111                                </xs:annotation>
112                        </xs:element>
113                        <xs:element name="TicketId" type="xs:string" minOccurs="0">
114                                <xs:annotation>
115                                        <xs:documentation>Optional term that allow the client to track the request/response messages</xs:documentation>
116                                </xs:annotation>
117                        </xs:element>
118                </xs:sequence>
119        </xs:complexType>
120        <xs:complexType name="GetListType">
121                <xs:sequence>
122                        <xs:element name="listName" type="xs:string"/>
123                </xs:sequence>
124        </xs:complexType>
125        <!-- Response global types -->
126        <xs:complexType name="DoPresentReturnType">
127                <xs:sequence>
128                        <xs:element name="Status" type="xs:boolean"/>
129                        <xs:element name="StatusMessage" type="xs:string"/>
130                        <xs:element name="TicketId" type="xs:string" minOccurs="0">
131                                <xs:annotation>
132                                        <xs:documentation>Optional term that allow the client to track the request/response messages</xs:documentation>
133                                </xs:annotation>
134                        </xs:element>
135                        <xs:element name="Documents" type="tns:Documents" minOccurs="0"/>
136                </xs:sequence>
137        </xs:complexType>
138        <xs:complexType name="DoSearchReturnType">
139                <xs:sequence>
140                        <xs:element name="Status" type="xs:boolean"/>
141                        <xs:element name="StatusMessage" type="xs:string"/>
142                        <xs:element name="TicketId" type="xs:string" minOccurs="0">
143                                <xs:annotation>
144                                        <xs:documentation>Optional term that allow the client to track the request/response messages</xs:documentation>
145                                </xs:annotation>
146                        </xs:element>
147                        <xs:element name="Hits" type="xs:int" minOccurs="0"/>
148                        <xs:element name="Documents" type="tns:Documents" minOccurs="0"/>
149                </xs:sequence>
150        </xs:complexType>
151        <xs:complexType name="GetListNamesReturnType">
152                <xs:sequence maxOccurs="unbounded">
153                        <xs:element name="listNames">
154                                <xs:complexType>
155                                        <xs:sequence>
156                                                <xs:element name="listName" type="xs:string" maxOccurs="unbounded"/>
157                                        </xs:sequence>
158                                </xs:complexType>
159                        </xs:element>
160                </xs:sequence>
161        </xs:complexType>
162        <xs:complexType name="GetListReturnType">
163                <xs:sequence>
164                        <xs:element name="list" minOccurs="0">
165                                <xs:complexType>
166                                        <xs:sequence>
167                                                <xs:element name="listMember" type="xs:string" maxOccurs="unbounded"/>
168                                        </xs:sequence>
169                                        <xs:attribute name="name" type="xs:string" use="required"/>
170                                </xs:complexType>
171                        </xs:element>
172                </xs:sequence>
173        </xs:complexType>
174        <!-- Other global types-->
175        <xs:complexType name="BoundingBoxType">
176                <xs:all>
177                        <xs:element name="LimitNorth" type="xs:float"/>
178                        <xs:element name="LimitSouth" type="xs:float"/>
179                        <xs:element name="LimitWest" type="xs:float"/>
180                        <xs:element name="LimitEast" type="xs:float"/>
181                </xs:all>
182        </xs:complexType>
183        <xs:complexType name="DateRangeType">
184                <xs:sequence>
185                        <xs:element name="Date" type="tns:DateValueType" maxOccurs="2">
186                                <xs:annotation>
187                                        <xs:documentation>Single date, or pair of dates representing a date range, to be used in search against specified date target in metadata.</xs:documentation>
188                                </xs:annotation>
189                        </xs:element>
190                        <xs:element name="DateRangeTarget" type="xs:string" minOccurs="0">
191                                <xs:annotation>
192                                        <xs:documentation>Target date to which date search should be applied (e.g. temporal coverage of data, date of publication). Value to be chosen from dateRangeTargetList. Default = temporalCoverage.</xs:documentation>
193                                </xs:annotation>
194                        </xs:element>
195                </xs:sequence>
196                <xs:attribute default="false" name="overlap" type="xs:boolean"/>
197        </xs:complexType>
198        <xs:complexType name="DocumentsType"/>
199        <xs:simpleType name="OrderByDirectionType">
200                <xs:restriction base="xs:string">
201                        <xs:enumeration value="ascending"/>
202                        <xs:enumeration value="descending"/>
203                </xs:restriction>
204        </xs:simpleType>
205        <xs:complexType name="SpatialType">
206                <xs:sequence>
207                        <xs:element name="SpatialOperator" type="xs:string" minOccurs="0">
208                                <xs:annotation>
209                                        <xs:documentation>Operator used to compare search bounding box with spatial coverage in metadata. Values from spatialOperatorList. Default is "overlaps".</xs:documentation>
210                                </xs:annotation>
211                        </xs:element>
212                        <xs:element name="SpatialReferenceSystem" type="xs:string" minOccurs="0">
213                                <xs:annotation>
214                                        <xs:documentation>Spatial reference system used for search bounding box e.g. EPSG:4326, taken from list spatialReferenceSystemList </xs:documentation>
215                                </xs:annotation>
216                        </xs:element>
217                        <xs:choice>
218                                <xs:element name="BoundingBox" type="tns:BoundingBoxType">
219                                        <xs:annotation>
220                                                <xs:documentation>Bounding box with coordinates by default in EPSG:4326 (lat/lon)</xs:documentation>
221                                        </xs:annotation>
222                                </xs:element>
223                                <xs:element maxOccurs="1" name="PolygonBox" type="tns:PolygonBoxType"/>
224                                <xs:element maxOccurs="1" name="MultiPolygonBox" type="tns:MultiPolygonBoxType"/>
225                        </xs:choice>
226                </xs:sequence>
227        </xs:complexType>
228        <xs:complexType name="TermSearchType">
229                <xs:sequence>
230                        <xs:element name="Term" type="xs:string" minOccurs="0">
231                                <xs:annotation>
232                                        <xs:documentation>String(s) used in search. Whitespace between strings interpreted as OR combinations of those strings, unless "+" used to combine them, in which case AND combination. </xs:documentation>
233                                </xs:annotation>
234                        </xs:element>
235                        <xs:element name="TermTarget" type="xs:string" minOccurs="0">
236                                <xs:annotation>
237                                        <xs:documentation>Metadata field used as target for search. From list termTargetList</xs:documentation>
238                                </xs:annotation>
239                        </xs:element>
240                </xs:sequence>
241                <xs:attribute name="id" type="xs:short" use="required"/>
242                <xs:attribute name="operator" type="xs:string"/>
243        </xs:complexType>
244        <xs:complexType name="TemporalType">
245                <xs:sequence>
246                        <xs:element name="DateRange" type="tns:DateRangeType">
247                                <xs:annotation>
248                                        <xs:documentation>Specify start or end date, or both, along with target date field within metadata.</xs:documentation>
249                                </xs:annotation>
250                        </xs:element>
251                </xs:sequence>
252        </xs:complexType>
253        <xs:complexType name="DocumentReturnType"/>
254        <xs:complexType name="OrderingMetricType">
255                <xs:annotation>
256                        <xs:documentation>Intented to allow passing of ordering information
257                                at the present level</xs:documentation>
258                </xs:annotation>
259                <xs:sequence>
260                        <xs:element name="MetricName" type="xs:string"/>
261                        <xs:element name="MetricValue" type="xs:string" minOccurs="0">
262                                <xs:annotation>
263                                        <xs:documentation>Specific value of the metric when used in a 1:1 context with a document return</xs:documentation>
264                                </xs:annotation>
265                        </xs:element>
266                </xs:sequence>
267        </xs:complexType>
268        <xs:complexType name="DateValueType">
269                <xs:sequence>
270                        <xs:element name="DateValue" type="xs:date"/>
271                        <xs:element name="TemporalOperator" type="xs:string" minOccurs="0">
272                                <xs:annotation>
273                                        <xs:documentation>Comparison operator taken from temporalOperatorList. Default = "equals"</xs:documentation>
274                                </xs:annotation>
275                        </xs:element>
276                </xs:sequence>
277        </xs:complexType>
278        <xs:complexType name="OrderByType">
279                <xs:sequence>
280                        <xs:element name="OrderByField" type="xs:string">
281                                <xs:annotation>
282                                        <xs:documentation>Field to use for ordering within result set (and hence search response). Value taken from orderByFieldList </xs:documentation>
283                                </xs:annotation>
284                        </xs:element>
285                        <xs:element name="OrderByDirection" type="tns:OrderByDirectionType" minOccurs="0">
286                                <xs:annotation>
287                                        <xs:documentation>Direction of ordering used in result set and hence search response. Valid values : "ascending" or "descending". Default is descending.</xs:documentation>
288                                </xs:annotation>
289                        </xs:element>
290                </xs:sequence>
291        </xs:complexType>
292        <xs:complexType name="SimpleDocument">
293                <xs:sequence>
294                        <xs:element name="DocumentId" type="xs:string"/>
295                </xs:sequence>
296        </xs:complexType>
297        <xs:complexType name="ReturnSimpleType">
298                <xs:complexContent>
299                        <xs:extension base="tns:SimpleDocument"/>
300                </xs:complexContent>
301        </xs:complexType>
302        <xs:complexType name="ReturnBriefType">
303                <xs:complexContent>
304                        <xs:extension base="tns:ReturnSimpleType">
305                                <xs:sequence>
306                                        <xs:element name="AdditionalInformation" type="tns:CustomInfo"/>
307                                        <xs:element name="Title" type="xs:string" minOccurs="0"/>
308                                        <xs:element name="OrderedField" type="tns:OrderingMetricType" minOccurs="0"
309                                                maxOccurs="unbounded">
310                                                <xs:annotation>
311                                                        <xs:documentation>Name value pair(s) representing field(s) corresoponding to orderBy fields in search request. </xs:documentation>
312                                                </xs:annotation>
313                                        </xs:element>
314                                </xs:sequence>
315                        </xs:extension>
316                </xs:complexContent>
317        </xs:complexType>
318        <xs:complexType name="ReturnSummaryType">
319                <xs:complexContent>
320                        <xs:extension base="tns:ReturnSimpleType">
321                                <xs:sequence>
322                                        <xs:element name="AdditionalInformation" type="tns:CustomInfo"/>
323                                        <xs:element name="Title" type="xs:string" minOccurs="0"/>
324                                        <xs:element name="OrderedField" type="tns:OrderingMetricType" minOccurs="0"
325                                                maxOccurs="unbounded">
326                                                <xs:annotation>
327                                                        <xs:documentation>Name value pair(s) representing field(s) corresoponding to orderBy fields in search request. </xs:documentation>
328                                                </xs:annotation>
329                                        </xs:element>
330                                        <xs:element name="Abstract" type="xs:string" minOccurs="0"/>
331                                        <xs:element name="Temporal" type="tns:TemporalType" minOccurs="0"
332                                                maxOccurs="unbounded"/>
333                                        <xs:element name="Spatial" type="tns:SpatialType" minOccurs="0"
334                                                maxOccurs="unbounded"/>
335                                </xs:sequence>
336                        </xs:extension>
337                </xs:complexContent>
338        </xs:complexType>
339        <xs:complexType name="ReturnFullType">
340                <xs:complexContent>
341                        <xs:extension base="tns:ReturnSimpleType">
342                                <xs:sequence>
343                                        <xs:element name="AdditionalInformation" type="tns:CustomInfo"/>
344                                        <xs:element name="Title" type="xs:string" minOccurs="0"/>
345                                        <xs:element name="OrderedField" type="tns:OrderingMetricType" minOccurs="0"
346                                                maxOccurs="unbounded">
347                                                <xs:annotation>
348                                                        <xs:documentation>Name value pair(s) representing field(s) corresoponding to orderBy fields in search request. </xs:documentation>
349                                                </xs:annotation>
350                                        </xs:element>
351                                        <xs:element name="Abstract" type="xs:string" minOccurs="0"/>
352                                        <xs:element name="Temporal" type="tns:TemporalType" minOccurs="0"
353                                                maxOccurs="unbounded"/>
354                                        <xs:element name="Spatial" type="tns:SpatialType" minOccurs="0"
355                                                maxOccurs="unbounded"/>
356                                        <xs:element name="Document" type="xs:string">
357                                                <xs:annotation>
358                                                        <xs:documentation>CDATA content of returned XML document. </xs:documentation>
359                                                </xs:annotation>
360                                        </xs:element>
361                                </xs:sequence>
362                        </xs:extension>
363                </xs:complexContent>
364        </xs:complexType>
365        <xs:complexType name="GetVersionReturnType">
366                <xs:sequence>
367                        <xs:element name="Version" type="xs:string"/>
368                        <xs:element name="Comment" type="xs:string"/>
369                </xs:sequence>
370        </xs:complexType>
371        <xs:complexType name="Documents">
372                <xs:complexContent>
373                        <xs:extension base="tns:DocumentsType">
374                                <xs:choice>
375                                        <xs:sequence>
376                                                <xs:element name="DocumentSimple" type="tns:ReturnSimpleType"
377                                                        maxOccurs="unbounded"/>
378                                        </xs:sequence>
379                                        <xs:sequence>
380                                                <xs:element name="DocumentFull" type="tns:ReturnFullType"
381                                                        maxOccurs="unbounded"/>
382                                        </xs:sequence>
383                                        <xs:sequence>
384                                                <xs:element name="DocumentBrief" type="tns:ReturnBriefType"
385                                                        maxOccurs="unbounded"/>
386                                        </xs:sequence>
387                                        <xs:sequence>
388                                                <xs:element name="DocumentSummary" type="tns:ReturnSummaryType"
389                                                        maxOccurs="unbounded"/>
390                                        </xs:sequence>
391                                </xs:choice>
392                        </xs:extension>
393                </xs:complexContent>
394        </xs:complexType>
395        <xs:complexType name="CustomInfo">
396                <xs:annotation>
397                        <xs:documentation>Customizable part of the document</xs:documentation>
398                </xs:annotation>
399                <xs:sequence>
400                        <xs:element name="Authors" type="xs:string"/>
401                        <xs:element name="Parameters" type="xs:string"/>
402                        <xs:element name="ResourceType" type="xs:string"/>
403                        <xs:element name="TopicCategory" type="xs:string"/>
404                        <xs:element name="Lineage" type="xs:string"/>
405                        <xs:element name="LimitationsPublicAccess" type="xs:string"/>
406                        <xs:element name="DataOriginator" type="xs:string"/>
407                        <xs:element name="OriginalFormatName" type="xs:string"/>
408                        <xs:element name="DatasetUpdateDate" type="xs:string"/>
409                        <xs:element name="ResourceLocator" type="xs:boolean"/>
410                </xs:sequence>
411        </xs:complexType>
412        <xs:complexType name="PolygonPointType">
413                <xs:all maxOccurs="1">
414                        <xs:element name="x" type="xs:float"/>
415                        <xs:element name="y" type="xs:float"/>
416                        <xs:element name="z" type="xs:float" minOccurs="0" nillable="false"/>
417                </xs:all>
418        </xs:complexType>
419        <xs:complexType name="PolygonBoxType">
420                <xs:sequence maxOccurs="unbounded" minOccurs="1">
421                        <xs:element name="polygonPoint" type="tns:PolygonPointType"/>
422                </xs:sequence>
423        </xs:complexType>
424        <xs:complexType name="MultiPolygonBoxType">
425                <xs:sequence maxOccurs="unbounded">
426                        <xs:element maxOccurs="unbounded" minOccurs="2" name="polygonBox"
427                                type="tns:PolygonBoxType"/>
428                </xs:sequence>
429        </xs:complexType>
430</xs:schema>
Note: See TracBrowser for help on using the repository browser.