source: DASISH/t5.6/docs/XMLandXSD/DASISH-schema.xsd @ 2847

Last change on this file since 2847 was 2847, checked in by olhsha, 11 years ago

added new source handling

File size: 14.7 KB
Line 
1<?xml version="1.1" encoding="UTF-8"?>
2<xs:schema targetNamespace="http://www.dasish.eu/ns/addit"
3    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.dasish.eu/ns/addit"
4    elementFormDefault="qualified">
5    <xs:import namespace="http://www.w3.org/XML/1998/namespace"
6        schemaLocation="http://www.w3.org/2005/08/xml.xsd"/>
7
8
9    <!--////////////////////////////////////////////////////-->
10    <!-- Annotation-body types according to the UML diagram -->
11   
12    <!-- DASISH resources (cached representations, sources, users, annotations, notebooks) have an obligatory URIdasih element-->
13    <!-- The integrity of the references must be forced via the backend -->
14   
15     
16   
17    <xs:complexType name="ResourceREF">
18        <xs:attribute name="ref" type="xs:anyURI" use="required"></xs:attribute>
19    </xs:complexType>
20    <!-- for a new annotation the reference to the source is absent, that's why this attribute is not obligatory-->
21   
22
23   
24    <!--////////////////////////-->
25    <!--Cached representations -->
26
27    <xs:complexType name="CachedRepresentation">
28        <xs:attribute name="URI" type="xs:anyURI" use="required"/>
29        <xs:attribute name="mimeType" type="xs:string" use="required"/>
30        <xs:attribute name="tool" type="xs:string" use="required"/>
31        <xs:attribute name="type" type="xs:string" use="required"/>
32    </xs:complexType>
33   
34
35    <xs:complexType name="CachedRepresentations">
36        <xs:sequence>
37            <xs:element name="cachedRepresentation" type="ResourceREF" maxOccurs="unbounded"/>
38        </xs:sequence>
39    </xs:complexType>
40
41    <!--////////////////////////////-->
42    <!-- Sources (== Targets in OA) -->
43
44
45    <xs:complexType name="Source">
46        <xs:sequence>
47            <xs:element name="cachedRepresentations" type="CachedRepresentations" minOccurs="1"/>
48            <xs:element name="action" type="Action" minOccurs="0"/>
49            <xs:element name="versions-siblings" type="Versions" minOccurs="1"/>
50        </xs:sequence>
51        <xs:attribute name="URI" type="xs:anyURI" use="required"/>
52        <xs:attribute name="timeSatmp" type="xs:dateTime" use="required"/>
53        <xs:attribute name="link" type="xs:anyURI" use="required"/>
54        <xs:attribute name="version" type="xs:string" use="required"/>
55    </xs:complexType>
56
57 
58    <xs:complexType name="Sources">
59        <xs:sequence>
60            <xs:element name="targetSource" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/>
61        </xs:sequence>
62    </xs:complexType>
63   
64   
65    <xs:complexType name="SourceInfo">
66        <xs:complexContent>
67            <xs:extension base="ResourceREF">
68                <xs:sequence>
69                    <xs:element name="link" type="xs:anyURI" minOccurs="1" maxOccurs="1"/>
70                    <xs:element name="version" type="xs:string" minOccurs="1" maxOccurs="1"/>
71                </xs:sequence> 
72            </xs:extension>
73        </xs:complexContent>
74    </xs:complexType>
75   
76    <xs:complexType name="SourceInfos">
77        <xs:sequence>
78            <xs:element name="targetSource" type="SourceInfo" minOccurs="1" maxOccurs="unbounded"/>
79        </xs:sequence>
80    </xs:complexType>
81   
82       
83    <xs:complexType name="Versions">
84        <xs:sequence>
85            <xs:element name="version" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/>
86        </xs:sequence>
87    </xs:complexType>
88   
89    <!-- News sources, new/old sources  -->
90   
91    <xs:complexType name="NewSourceInfo">
92                <xs:sequence>
93                    <xs:element name="link" type="xs:anyURI" minOccurs="1" maxOccurs="1"/>
94                    <xs:element name="version" type="xs:string" minOccurs="1" maxOccurs="1"/>
95                </xs:sequence> 
96            <xs:attribute ref="xml:id" use="required"/>       
97    </xs:complexType>
98   
99    <xs:complexType name="NewOrExistingSourceInfo">
100        <xs:choice>
101            <xs:element name="source" type="SourceInfo"/>
102            <xs:element name="newSource" type="NewSourceInfo"/>
103        </xs:choice>
104    </xs:complexType>
105   
106   
107    <xs:complexType name="NewOrExistingSourceInfos">
108        <xs:sequence>
109            <xs:element name="target" type="NewOrExistingSourceInfo" minOccurs="1" maxOccurs="unbounded"/>
110        </xs:sequence>
111    </xs:complexType>
112 
113    <!--////////////////////////////-->
114    <!-- Human Agents (Users) -->
115
116    <xs:complexType name="User">
117        <xs:sequence>
118            <xs:element name="notebooksToRead" type="NotebookInfos"/>
119            <xs:element name="notebooksToWrite" type="NotebookInfos"/>
120            <xs:element name="additionalInfo">
121                <xs:complexType>
122                    <xs:sequence>
123                        <xs:any processContents="lax" maxOccurs="unbounded"/>
124                    </xs:sequence>
125                    <xs:anyAttribute processContents="lax"/>
126                </xs:complexType>
127            </xs:element>
128        </xs:sequence>
129        <xs:attribute name="URI" type="xs:anyURI" use="required"/>
130        <xs:attribute name="name" type="xs:string" use="required"/>
131    </xs:complexType>
132   
133    <xs:complexType name="Users">
134        <xs:sequence>
135            <xs:element name="user" type="ResourceREF" maxOccurs="unbounded"/>
136        </xs:sequence>
137    </xs:complexType>
138
139
140    <xs:complexType name="UserInfo">
141        <xs:complexContent>
142            <xs:extension base="ResourceREF">
143                <xs:sequence>
144                    <xs:element name="notebooksToRead" type="NotebookInfos"/>
145                    <xs:element name="notebooksToWrite" type="NotebookInfos"/>
146                </xs:sequence>
147            </xs:extension>
148        </xs:complexContent>
149    </xs:complexType>
150   
151   
152    <xs:complexType name="UserInfos">
153        <xs:sequence>
154            <xs:element name="user" type="UserInfo" maxOccurs="unbounded"/>
155        </xs:sequence>
156    </xs:complexType>
157
158    <xs:complexType name="CurrentUserInfo">
159        <xs:complexContent>
160            <xs:extension base="ResourceREF">
161                <xs:attribute name="currentUser" type="xs:boolean" use="required"/>   
162            </xs:extension>
163        </xs:complexContent>
164    </xs:complexType>
165   
166
167
168    <!--////////////////////////////-->
169    <!-- Annotation -->
170   
171   
172    <xs:complexType name="Annotation">
173        <xs:sequence>
174            <xs:element name="owner" type="ResourceREF" minOccurs="1"/>
175            <xs:element name="headline" type="xs:string" minOccurs="1"/>
176            <!-- schematron checks the length <== 100 -->
177            <xs:element name="body" type="Body" minOccurs="1"/>
178            <xs:element name="targetSources" type="NewOrExistingSourceInfos" minOccurs="1"/>
179            <xs:element name="readers" type="Readers" minOccurs="1"/>
180            <xs:element name="writers" type="Writers" minOccurs="1"/>
181        </xs:sequence>
182        <xs:attribute name="URI" type="xs:anyURI" use="required"/>
183        <xs:attribute name="timeStamp" type="xs:dateTime" use="required"/>
184    </xs:complexType>
185
186 
187    <xs:complexType name="Annotations">
188        <xs:sequence>
189            <xs:element name="annotation" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/>
190        </xs:sequence>
191    </xs:complexType>
192   
193    <xs:complexType name="AnnotationInfo">
194        <xs:complexContent>
195            <xs:extension base="ResourceREF">
196                <xs:sequence>
197                    <xs:element name="owner" type="ResourceREF" minOccurs="1" maxOccurs="1"/>
198                    <xs:element name="headline" type="xs:string" minOccurs="1" maxOccurs="1"/>
199                    <xs:element name="targetSources" type="Sources" minOccurs="1" maxOccurs="1"/>
200                </xs:sequence>
201            </xs:extension>
202        </xs:complexContent>
203    </xs:complexType>
204   
205    <xs:complexType name="AnnotationInfos">
206        <xs:sequence>
207            <xs:element name="annotation" type="AnnotationInfo" maxOccurs="unbounded"/>
208        </xs:sequence>
209    </xs:complexType>
210   
211    <xs:complexType name="Body">
212        <xs:sequence>
213            <xs:any processContents="lax" maxOccurs="unbounded"/>
214        </xs:sequence>
215        <xs:anyAttribute processContents="lax"/>
216    </xs:complexType>
217   
218    <xs:complexType name="Readers">
219        <xs:sequence>
220            <xs:element name="reader" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/>
221        </xs:sequence>
222    </xs:complexType>
223   
224    <xs:complexType name="Writers">
225        <xs:sequence>
226            <xs:element name="writer" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/>
227        </xs:sequence>
228    </xs:complexType>
229   
230   
231    <!--////////////////////////////-->
232    <!-- Notebook -->
233
234    <xs:complexType name="Notebook">
235        <xs:sequence>
236            <xs:element name="title" type="xs:string"/>
237            <xs:element name="annotations" type="Annotations"/>
238            <xs:element name="readers" type="Readers"/>
239            <xs:element name="writers" type="Writers"/>
240        </xs:sequence>
241        <xs:attribute name="URI" type="xs:anyURI"/>
242        <xs:attribute name="timeStamp" type="xs:dateTime" use="required"/>
243    </xs:complexType>
244   
245 
246    <xs:complexType name="Notebooks">
247        <xs:sequence>
248            <xs:element name="notebook" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/>
249        </xs:sequence>
250    </xs:complexType>
251
252    <xs:complexType name="NotebookInfo">
253        <xs:complexContent>
254            <xs:extension base="ResourceREF">
255                <xs:sequence>
256                    <xs:element name="notebook" type="ResourceREF"/>
257                    <xs:element name="title" type="xs:string"/>
258                </xs:sequence>
259            </xs:extension>
260        </xs:complexContent>
261    </xs:complexType>
262
263    <xs:complexType name="NotebookInfos">
264        <xs:sequence>
265            <xs:element name="notebook" type="NotebookInfo" maxOccurs="unbounded"/>
266        </xs:sequence>
267    </xs:complexType>
268
269 <!--- ACTION -->
270   
271    <xs:simpleType name="Action">
272        <xs:restriction base="xs:string">
273            <xs:enumeration value="CREATE_CACHED_REPRESENTATION"/>
274        </xs:restriction>
275    </xs:simpleType>
276   
277
278    <!--/////////////////////////////////////-->
279    <!-- GET api/user/uid respond -->
280    <xs:element name="currentUserInfo" type="CurrentUserInfo"/>
281   
282    <!--/////////////////////////////////////-->
283    <!-- GET api/annotations?source="http://en.wikipedia.org/wiki/Sagrada_Fam%C3%ADlia"&access=read  respond -->
284    <xs:element name="annotations" type="AnnotationInfos"></xs:element>
285   
286
287    <!--/////////////////////////////////////-->
288    <!-- GET api/annotations/AIDxyz  respond -->
289    <xs:element name="annotation" type="Annotation"/>
290
291
292    <!--/////////////////////////////////////-->
293    <!--  GET api/annotations/AID0xyz/sources   respond (non-resolvable)-->
294    <xs:element name="sources" type="SourceInfos"/>
295
296    <!--/////////////////////////////////////-->
297    <!--  GET api/sources/SID0xyz/  respond  -->
298    <xs:element name="source" type="Source  "/>
299 
300       <!--/////////////////////////////////////-->
301    <!-- GET api/sources/SID05/cached/CID0efef/metadata (example usage for unresolvable target sources)   -->
302    <xs:element name="cashedRepresentation" type="CachedRepresentation"/>
303
304    <!--/////////////////////////////////////-->
305    <!-- POST api/annotation, annotation body  -->
306    <xs:element name="newAnnotation" type="Annotation"/>
307
308</xs:schema>
309
310<!-- "each" api-call has its specific schemata (input,output) using this bunch of types-->
311<!-- serialize/formalize the wordings describing api calls, see also lat-scenario's -->
312
313<!-- -->
314
315<!-- concrete node types: not for now
316    Note extends Body
317   
318   
319    <xs:complexType name="Note">
320        <xs:complexContent>
321            <xs:extension base="Body">
322                <xs:sequence>
323                    <xs:element name="text" type="xs:string"/>
324                </xs:sequence>
325            </xs:extension>
326        </xs:complexContent>
327    </xs:complexType>
328   
329    Colour Body extends Body
330   
331    <xs:simpleType name="palette">
332        <xs:restriction base="xs:string">
333            <xs:enumeration value="red"/>
334            <xs:enumeration value="orange"/>
335            <xs:enumeration value="yellow"/>
336            <xs:enumeration value="green"/>
337            <xs:enumeration value="blue"/>
338            <xs:enumeration value="darkblue"/>
339            <xs:enumeration value="violet"/>
340            <xs:enumeration value="white"/>
341            <xs:enumeration value="pink"/>
342        </xs:restriction>
343    </xs:simpleType>
344   
345    <xs:complexType name="ColourBody">
346        <xs:complexContent>
347            <xs:extension base="Body">
348                <xs:sequence>
349                    <xs:element name="colour" type="palette"/>
350                </xs:sequence>
351            </xs:extension>
352        </xs:complexContent>
353    </xs:complexType>
354   
355    Relation extends Body
356   
357    <xs:complexType name="Relation">
358        <xs:complexContent>
359            <xs:extension base="Body">
360                <xs:sequence>
361                    <xs:any processContents="lax"/>
362                </xs:sequence>
363            </xs:extension>
364        </xs:complexContent>
365    </xs:complexType>
366   
367    Tag extendd Relation
368   
369    <xs:complexType name="Tag">
370        <xs:complexContent>
371            <xs:extension base="Relation">
372                <xs:sequence>
373                    <xs:element name="tag" type="xs:NMTOKEN"/>
374                </xs:sequence>
375            </xs:extension>
376        </xs:complexContent>
377    </xs:complexType>
378   
379    Binary Relations extends Relation
380   
381    <xs:simpleType name="binaryRelationTag">
382        <xs:restriction base="xs:string">
383            <xs:enumeration value="implies"/>
384            <xs:enumeration value="equivalent"/>
385            <xs:enumeration value="contradicts"/>
386        </xs:restriction>
387    </xs:simpleType>
388   
389    <xs:complexType name="BinaryRelation">
390        <xs:complexContent>
391            <xs:extension base="Relation">
392                <xs:sequence>
393                    <xs:element name="tag" type="binaryRelationTag"/>
394                    <xs:element name="first" type="xs:anyURI"/>
395                    <xs:element name="second" type="xs:anyURI"/>
396                </xs:sequence>
397            </xs:extension>
398        </xs:complexContent>
399    </xs:complexType>
400   
401    Typed Tag extends Relation
402   
403   
404    <xs:simpleType name="authorName">
405        <xs:list itemType="xs:NCName"/>
406    </xs:simpleType>
407   
408        <xs:list itemType="xs:NCName"/>
409    </xs:simpleType>
410   
411   
412    <xs:complexType name="TypedTag">
413        <xs:complexContent>
414            <xs:extension base="Relation">
415                <xs:choice>
416                    <xs:element name="author" type="authorName"/>
417                    <xs:element name="source" type="referenceTitle"/>
418                    <xs:element name="discussWith" type="xs:string"/>
419                    <xs:element name="link" type="xs:anyURI"/>
420                </xs:choice>
421            </xs:extension>
422        </xs:complexContent>
423    </xs:complexType>
424   
425-->
Note: See TracBrowser for help on using the repository browser.