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

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

Now the Discovery's getList and getListNames are retrieved from two new tables in the DiscoveryDB
Refactored the TermTarget?, others ListNames? to be done soon
Preliminary dependency for the DbUnit?/HSQLDB environment
In the Discovery XSD Schema the ResourceLocator? changed from xs:String to xs:Boolean

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:boolean" 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="1">
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:element name="Status" type="xs:boolean"/>
161                        <xs:element name="StatusMessage" type="xs:string"/>
162                </xs:sequence>
163        </xs:complexType>
164        <xs:complexType name="GetListReturnType">
165                <xs:sequence>
166                        <xs:element name="list" minOccurs="0">
167                                <xs:complexType>
168                                        <xs:sequence>
169                                                <xs:element name="listMember" type="xs:string" maxOccurs="unbounded"/>
170                                        </xs:sequence>
171                                        <xs:attribute name="name" type="xs:string" use="required"/>
172                                </xs:complexType>
173                        </xs:element>
174                        <xs:element name="Status" type="xs:boolean"/>
175                        <xs:element name="StatusMessage" type="xs:string"/>
176                </xs:sequence>
177        </xs:complexType>
178        <!-- Other global types-->
179        <xs:complexType name="DateRangeType">
180                <xs:sequence>
181                        <xs:element name="Date" type="tns:DateValueType" maxOccurs="2">
182                                <xs:annotation>
183                                        <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>
184                                </xs:annotation>
185                        </xs:element>
186                        <xs:element name="DateRangeTarget" type="xs:string" minOccurs="0">
187                                <xs:annotation>
188                                        <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>
189                                </xs:annotation>
190                        </xs:element>
191                </xs:sequence>
192                <xs:attribute default="false" name="overlap" type="xs:boolean"/>
193        </xs:complexType>
194        <xs:complexType name="DocumentsType"/>
195        <xs:simpleType name="OrderByDirectionType">
196                <xs:restriction base="xs:string">
197                        <xs:enumeration value="ascending"/>
198                        <xs:enumeration value="descending"/>
199                </xs:restriction>
200        </xs:simpleType>
201        <xs:complexType name="SpatialType">
202                <xs:sequence>
203                        <xs:element name="SpatialOperator" type="xs:string" minOccurs="0">
204                                <xs:annotation>
205                                        <xs:documentation>Operator used to compare search bounding box with spatial coverage in metadata. Values from spatialOperatorList. Default is "overlaps".</xs:documentation>
206                                </xs:annotation>
207                        </xs:element>
208                        <xs:element name="SpatialReferenceSystem" type="xs:string" minOccurs="0">
209                                <xs:annotation>
210                                        <xs:documentation>Spatial reference system used for search bounding box e.g. EPSG:4326, taken from list spatialReferenceSystemList </xs:documentation>
211                                </xs:annotation>
212                        </xs:element>
213                        <xs:element minOccurs="0" ref="tns:ContourType"/>
214                </xs:sequence>
215        </xs:complexType>
216        <xs:complexType name="TermSearchType">
217                <xs:sequence>
218                        <xs:element name="Term" type="xs:string" minOccurs="0">
219                                <xs:annotation>
220                                        <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>
221                                </xs:annotation>
222                        </xs:element>
223                        <xs:element name="TermTarget" type="xs:string" minOccurs="0">
224                                <xs:annotation>
225                                        <xs:documentation>Metadata field used as target for search. From list termTargetList</xs:documentation>
226                                </xs:annotation>
227                        </xs:element>
228                </xs:sequence>
229                <xs:attribute name="id" type="xs:short" use="required"/>
230                <xs:attribute name="operator" type="xs:string"/>
231        </xs:complexType>
232        <xs:complexType name="TemporalType">
233                <xs:sequence>
234                        <xs:element name="DateRange" type="tns:DateRangeType">
235                                <xs:annotation>
236                                        <xs:documentation>Specify start or end date, or both, along with target date field within metadata.</xs:documentation>
237                                </xs:annotation>
238                        </xs:element>
239                </xs:sequence>
240        </xs:complexType>
241        <xs:complexType name="DocumentReturnType"/>
242        <xs:complexType name="OrderingMetricType">
243                <xs:annotation>
244                        <xs:documentation>Intented to allow passing of ordering information
245                                at the present level</xs:documentation>
246                </xs:annotation>
247                <xs:sequence>
248                        <xs:element name="MetricName" type="xs:string"/>
249                        <xs:element name="MetricValue" type="xs:string" minOccurs="0">
250                                <xs:annotation>
251                                        <xs:documentation>Specific value of the metric when used in a 1:1 context with a document return</xs:documentation>
252                                </xs:annotation>
253                        </xs:element>
254                </xs:sequence>
255        </xs:complexType>
256        <xs:complexType name="DateValueType">
257                <xs:sequence>
258                        <xs:element name="DateValue" type="xs:date"/>
259                        <xs:element name="TemporalOperator" type="xs:string" minOccurs="0">
260                                <xs:annotation>
261                                        <xs:documentation>Comparison operator taken from temporalOperatorList. Default = "equals"</xs:documentation>
262                                </xs:annotation>
263                        </xs:element>
264                </xs:sequence>
265        </xs:complexType>
266        <xs:complexType name="OrderByType">
267                <xs:sequence>
268                        <xs:element name="OrderByField" type="xs:string">
269                                <xs:annotation>
270                                        <xs:documentation>Field to use for ordering within result set (and hence search response). Value taken from orderByFieldList </xs:documentation>
271                                </xs:annotation>
272                        </xs:element>
273                        <xs:element name="OrderByDirection" type="tns:OrderByDirectionType" minOccurs="0">
274                                <xs:annotation>
275                                        <xs:documentation>Direction of ordering used in result set and hence search response. Valid values : "ascending" or "descending". Default is descending.</xs:documentation>
276                                </xs:annotation>
277                        </xs:element>
278                </xs:sequence>
279        </xs:complexType>
280        <xs:complexType name="SimpleDocument">
281                <xs:sequence>
282                        <xs:element name="DocumentId" type="xs:string"/>
283                </xs:sequence>
284        </xs:complexType>
285        <xs:complexType name="ReturnSimpleType">
286                <xs:complexContent>
287                        <xs:extension base="tns:SimpleDocument"/>
288                </xs:complexContent>
289        </xs:complexType>
290        <xs:complexType name="ReturnBriefType">
291                <xs:complexContent>
292                        <xs:extension base="tns:ReturnSimpleType">
293                                <xs:sequence>
294                                        <xs:element name="AdditionalInformation" type="tns:CustomInfo"/>
295                                        <xs:element name="Title" type="xs:string" minOccurs="0"/>
296                                        <xs:element name="OrderedField" type="tns:OrderingMetricType" minOccurs="0"
297                                                maxOccurs="unbounded">
298                                                <xs:annotation>
299                                                        <xs:documentation>Name value pair(s) representing field(s) corresoponding to orderBy fields in search request. </xs:documentation>
300                                                </xs:annotation>
301                                        </xs:element>
302                                </xs:sequence>
303                        </xs:extension>
304                </xs:complexContent>
305        </xs:complexType>
306        <xs:complexType name="ReturnSummaryType">
307                <xs:complexContent>
308                        <xs:extension base="tns:ReturnSimpleType">
309                                <xs:sequence>
310                                        <xs:element name="AdditionalInformation" type="tns:CustomInfo"/>
311                                        <xs:element name="Title" type="xs:string" minOccurs="0"/>
312                                        <xs:element name="OrderedField" type="tns:OrderingMetricType" minOccurs="0"
313                                                maxOccurs="unbounded">
314                                                <xs:annotation>
315                                                        <xs:documentation>Name value pair(s) representing field(s) corresoponding to orderBy fields in search request. </xs:documentation>
316                                                </xs:annotation>
317                                        </xs:element>
318                                        <xs:element name="Abstract" type="xs:string" minOccurs="0"/>
319                                        <xs:element name="Temporal" type="tns:TemporalType" minOccurs="0"
320                                                maxOccurs="unbounded"/>
321                                        <xs:element name="Spatial" type="tns:SpatialType" minOccurs="0"
322                                                maxOccurs="unbounded"/>
323                                </xs:sequence>
324                        </xs:extension>
325                </xs:complexContent>
326        </xs:complexType>
327        <xs:complexType name="ReturnFullType">
328                <xs:complexContent>
329                        <xs:extension base="tns:ReturnSimpleType">
330                                <xs:sequence>
331                                        <xs:element name="AdditionalInformation" type="tns:CustomInfo"/>
332                                        <xs:element name="Title" type="xs:string" minOccurs="0"/>
333                                        <xs:element name="OrderedField" type="tns:OrderingMetricType" minOccurs="0"
334                                                maxOccurs="unbounded">
335                                                <xs:annotation>
336                                                        <xs:documentation>Name value pair(s) representing field(s) corresoponding to orderBy fields in search request. </xs:documentation>
337                                                </xs:annotation>
338                                        </xs:element>
339                                        <xs:element name="Abstract" type="xs:string" minOccurs="0"/>
340                                        <xs:element name="Temporal" type="tns:TemporalType" minOccurs="0"
341                                                maxOccurs="unbounded"/>
342                                        <xs:element name="Spatial" type="tns:SpatialType" minOccurs="0"
343                                                maxOccurs="unbounded"/>
344                                        <xs:element name="Document" type="xs:string">
345                                                <xs:annotation>
346                                                        <xs:documentation>CDATA content of returned XML document. </xs:documentation>
347                                                </xs:annotation>
348                                        </xs:element>
349                                </xs:sequence>
350                        </xs:extension>
351                </xs:complexContent>
352        </xs:complexType>
353        <xs:complexType name="GetVersionReturnType">
354                <xs:sequence>
355                        <xs:element name="Version" type="xs:string"/>
356                        <xs:element name="Comment" type="xs:string"/>
357                </xs:sequence>
358        </xs:complexType>
359        <xs:complexType name="Documents">
360                <xs:complexContent>
361                        <xs:extension base="tns:DocumentsType">
362                                <xs:choice>
363                                        <xs:sequence>
364                                                <xs:element name="DocumentSimple" type="tns:ReturnSimpleType"
365                                                        maxOccurs="unbounded"/>
366                                        </xs:sequence>
367                                        <xs:sequence>
368                                                <xs:element name="DocumentFull" type="tns:ReturnFullType"
369                                                        maxOccurs="unbounded"/>
370                                        </xs:sequence>
371                                        <xs:sequence>
372                                                <xs:element name="DocumentBrief" type="tns:ReturnBriefType"
373                                                        maxOccurs="unbounded"/>
374                                        </xs:sequence>
375                                        <xs:sequence>
376                                                <xs:element name="DocumentSummary" type="tns:ReturnSummaryType"
377                                                        maxOccurs="unbounded"/>
378                                        </xs:sequence>
379                                </xs:choice>
380                        </xs:extension>
381                </xs:complexContent>
382        </xs:complexType>
383        <xs:complexType name="CustomInfo">
384                <xs:annotation>
385                        <xs:documentation>Customizable part of the document</xs:documentation>
386                </xs:annotation>
387                <xs:sequence>
388                        <xs:element name="Authors" type="xs:string"/>
389                        <xs:element name="Parameters" type="xs:string"/>
390                        <xs:element name="ResourceType" type="xs:string"/>
391                        <xs:element name="TopicCategory" type="xs:string"/>
392                        <xs:element name="Lineage" type="xs:string"/>
393                        <xs:element name="LimitationsPublicAccess" type="xs:string"/>
394                        <xs:element name="DataOriginator" type="xs:string"/>
395                        <xs:element name="OriginalFormatName" type="xs:string"/>
396                        <xs:element name="DatasetUpdateDate" type="xs:string"/>
397                        <xs:element name="ResourceLocator" type="xs:boolean"/>
398                </xs:sequence>
399        </xs:complexType>
400        <xs:complexType name="PolygonPointType">
401                <xs:all maxOccurs="1">
402                        <xs:element name="x" type="xs:float"/>
403                        <xs:element name="y" type="xs:float"/>
404                        <xs:element name="z" type="xs:float" minOccurs="0" nillable="false"/>
405                </xs:all>
406        </xs:complexType>
407        <xs:complexType name="PolygonContourType">
408                <xs:sequence maxOccurs="unbounded" minOccurs="1">
409                        <xs:element name="polygonPoint" type="tns:PolygonPointType"/>
410                </xs:sequence>
411        </xs:complexType>
412        <xs:complexType name="MultiPolygonContourType">
413                <xs:sequence maxOccurs="unbounded">
414                        <xs:element maxOccurs="unbounded" minOccurs="2" name="polygonContour"
415                                type="tns:PolygonContourType"/>
416                </xs:sequence>
417        </xs:complexType>
418        <xs:complexType name="BoundingBoxType">
419                <xs:all>
420                        <xs:element name="LimitNorth" type="xs:float"/>
421                        <xs:element name="LimitSouth" type="xs:float"/>
422                        <xs:element name="LimitWest" type="xs:float"/>
423                        <xs:element name="LimitEast" type="xs:float"/>
424                </xs:all>
425        </xs:complexType>
426        <xs:element name="ContourType"/>
427        <xs:element name="PolygonContour" substitutionGroup="tns:ContourType"
428                type="tns:PolygonContourType"/>
429        <xs:element name="MultiPolygonContour" substitutionGroup="tns:ContourType"
430                type="tns:MultiPolygonContourType"/>
431        <xs:element name="BoundingBoxContour" substitutionGroup="tns:ContourType"
432                type="tns:BoundingBoxType"/>
433</xs:schema>
Note: See TracBrowser for help on using the repository browser.