source: TI01-discovery-API/trunk/MEDINDiscoveryService/src/main/resources/META-INF/DiscoverySchema.xsd @ 6656

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI01-discovery-API/trunk/MEDINDiscoveryService/src/main/resources/META-INF/DiscoverySchema.xsd@6656
Revision 6656, 16.1 KB checked in by mnagni, 11 years ago (diff)

Refactored the MetadataFormat? tag

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