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

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

Added OriginalFormat? to doSearch - needed to restrict searches where original format matches that from originalFormatList (note client can request docs in ISO format but where original format was DIF)

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