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

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

Relocated in the project the message.properties file
Added (operator, id) attributes in the TermSearch? element
Implemented the TermSearch?.operator processing code
Implemented the update of the original_document result_count field after a succesful search

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