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

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

alternative, less sctrictly typed schema, differes in handling new sources in annotations

File size: 13.9 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"></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:attribute ref="xml:id"/>
73            </xs:extension>
74        </xs:complexContent>
75    </xs:complexType>
76   
77    <xs:complexType name="SourceInfos">
78        <xs:sequence>
79            <xs:element name="targetSource" type="SourceInfo" minOccurs="1" maxOccurs="unbounded"/>
80        </xs:sequence>
81    </xs:complexType>
82   
83       
84    <xs:complexType name="Versions">
85        <xs:sequence>
86            <xs:element name="version" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/>
87        </xs:sequence>
88    </xs:complexType>
89   
90   
91 
92    <!--////////////////////////////-->
93    <!-- Human Agents (Users) -->
94
95    <xs:complexType name="User">
96        <xs:sequence>
97            <xs:element name="notebooksToRead" type="NotebookInfos"/>
98            <xs:element name="notebooksToWrite" type="NotebookInfos"/>
99            <xs:element name="additionalInfo">
100                <xs:complexType>
101                    <xs:sequence>
102                        <xs:any processContents="lax" maxOccurs="unbounded"/>
103                    </xs:sequence>
104                    <xs:anyAttribute processContents="lax"/>
105                </xs:complexType>
106            </xs:element>
107        </xs:sequence>
108        <xs:attribute name="URI" type="xs:anyURI" use="required"/>
109        <xs:attribute name="name" type="xs:string" use="required"/>
110    </xs:complexType>
111   
112    <xs:complexType name="Users">
113        <xs:sequence>
114            <xs:element name="user" type="ResourceREF" maxOccurs="unbounded"/>
115        </xs:sequence>
116    </xs:complexType>
117
118
119    <xs:complexType name="UserInfo">
120        <xs:complexContent>
121            <xs:extension base="ResourceREF">
122                <xs:sequence>
123                    <xs:element name="notebooksToRead" type="NotebookInfos"/>
124                    <xs:element name="notebooksToWrite" type="NotebookInfos"/>
125                </xs:sequence>
126            </xs:extension>
127        </xs:complexContent>
128    </xs:complexType>
129   
130   
131    <xs:complexType name="UserInfos">
132        <xs:sequence>
133            <xs:element name="user" type="UserInfo" maxOccurs="unbounded"/>
134        </xs:sequence>
135    </xs:complexType>
136
137    <xs:complexType name="CurrentUserInfo">
138        <xs:complexContent>
139            <xs:extension base="ResourceREF">
140                <xs:attribute name="currentUser" type="xs:boolean" use="required"/>   
141            </xs:extension>
142        </xs:complexContent>
143    </xs:complexType>
144   
145
146
147    <!--////////////////////////////-->
148    <!-- Annotation -->
149   
150   
151    <xs:complexType name="Annotation">
152        <xs:sequence>
153            <xs:element name="owner" type="ResourceREF" minOccurs="1"/>
154            <xs:element name="headline" type="xs:string" minOccurs="1"/>
155            <!-- schematron checks the length <== 100 -->
156            <xs:element name="body" type="Body" minOccurs="1"/>
157            <xs:element name="targetSources" type="SourceInfos" minOccurs="1"/>
158            <xs:element name="readers" type="Readers" minOccurs="1"/>
159            <xs:element name="writers" type="Writers" minOccurs="1"/>
160        </xs:sequence>
161        <xs:attribute name="URI" type="xs:anyURI" use="required"/>
162        <xs:attribute name="timeStamp" type="xs:dateTime" use="required"/>
163    </xs:complexType>
164
165 
166    <xs:complexType name="Annotations">
167        <xs:sequence>
168            <xs:element name="annotation" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/>
169        </xs:sequence>
170    </xs:complexType>
171   
172    <xs:complexType name="AnnotationInfo">
173        <xs:complexContent>
174            <xs:extension base="ResourceREF">
175                <xs:sequence>
176                    <xs:element name="owner" type="ResourceREF" minOccurs="1" maxOccurs="1"/>
177                    <xs:element name="headline" type="xs:string" minOccurs="1" maxOccurs="1"/>
178                    <xs:element name="targetSources" type="Sources" minOccurs="1" maxOccurs="1"/>
179                </xs:sequence>
180            </xs:extension>
181        </xs:complexContent>
182    </xs:complexType>
183   
184    <xs:complexType name="AnnotationInfos">
185        <xs:sequence>
186            <xs:element name="annotation" type="AnnotationInfo" maxOccurs="unbounded"/>
187        </xs:sequence>
188    </xs:complexType>
189   
190    <xs:complexType name="Body">
191        <xs:sequence>
192            <xs:any processContents="lax" maxOccurs="unbounded"/>
193        </xs:sequence>
194        <xs:anyAttribute processContents="lax"/>
195    </xs:complexType>
196   
197    <xs:complexType name="Readers">
198        <xs:sequence>
199            <xs:element name="reader" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/>
200        </xs:sequence>
201    </xs:complexType>
202   
203    <xs:complexType name="Writers">
204        <xs:sequence>
205            <xs:element name="writer" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/>
206        </xs:sequence>
207    </xs:complexType>
208   
209   
210    <!--////////////////////////////-->
211    <!-- Notebook -->
212
213    <xs:complexType name="Notebook">
214        <xs:sequence>
215            <xs:element name="title" type="xs:string"/>
216            <xs:element name="annotations" type="Annotations"/>
217            <xs:element name="readers" type="Readers"/>
218            <xs:element name="writers" type="Writers"/>
219        </xs:sequence>
220        <xs:attribute name="URI" type="xs:anyURI"/>
221        <xs:attribute name="timeStamp" type="xs:dateTime" use="required"/>
222    </xs:complexType>
223   
224 
225    <xs:complexType name="Notebooks">
226        <xs:sequence>
227            <xs:element name="notebook" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/>
228        </xs:sequence>
229    </xs:complexType>
230
231    <xs:complexType name="NotebookInfo">
232        <xs:complexContent>
233            <xs:extension base="ResourceREF">
234                <xs:sequence>
235                    <xs:element name="notebook" type="ResourceREF"/>
236                    <xs:element name="title" type="xs:string"/>
237                </xs:sequence>
238            </xs:extension>
239        </xs:complexContent>
240    </xs:complexType>
241
242    <xs:complexType name="NotebookInfos">
243        <xs:sequence>
244            <xs:element name="notebook" type="NotebookInfo" maxOccurs="unbounded"/>
245        </xs:sequence>
246    </xs:complexType>
247
248 <!--- ACTION -->
249   
250    <xs:simpleType name="Action">
251        <xs:restriction base="xs:string">
252            <xs:enumeration value="CREATE_CACHED_REPRESENTATION"/>
253        </xs:restriction>
254    </xs:simpleType>
255   
256
257    <!--/////////////////////////////////////-->
258    <!-- GET api/user/uid respond -->
259    <xs:element name="currentUserInfo" type="CurrentUserInfo"/>
260   
261    <!--/////////////////////////////////////-->
262    <!-- GET api/annotations?source="http://en.wikipedia.org/wiki/Sagrada_Fam%C3%ADlia"&access=read  respond -->
263    <xs:element name="annotations" type="AnnotationInfos"></xs:element>
264   
265
266    <!--/////////////////////////////////////-->
267    <!-- GET api/annotations/AIDxyz  respond -->
268    <xs:element name="annotation" type="Annotation"/>
269
270
271    <!--/////////////////////////////////////-->
272    <!--  GET api/annotations/AID0xyz/sources   respond (non-resolvable)-->
273    <xs:element name="sources" type="SourceInfos"/>
274
275    <!--/////////////////////////////////////-->
276    <!--  GET api/sources/SID0xyz/  respond  -->
277    <xs:element name="source" type="Source  "/>
278 
279       <!--/////////////////////////////////////-->
280    <!-- GET api/sources/SID05/cached/CID0efef/metadata (example usage for unresolvable target sources)   -->
281    <xs:element name="cashedRepresentation" type="CachedRepresentation"/>
282
283    <!--/////////////////////////////////////-->
284    <!-- POST api/annotation, annotation body  -->
285    <xs:element name="newAnnotation" type="Annotation"/>
286
287</xs:schema>
288
289<!-- "each" api-call has its specific schemata (input,output) using this bunch of types-->
290<!-- serialize/formalize the wordings describing api calls, see also lat-scenario's -->
291
292<!-- -->
293
294<!-- concrete node types: not for now
295    Note extends Body
296   
297   
298    <xs:complexType name="Note">
299        <xs:complexContent>
300            <xs:extension base="Body">
301                <xs:sequence>
302                    <xs:element name="text" type="xs:string"/>
303                </xs:sequence>
304            </xs:extension>
305        </xs:complexContent>
306    </xs:complexType>
307   
308    Colour Body extends Body
309   
310    <xs:simpleType name="palette">
311        <xs:restriction base="xs:string">
312            <xs:enumeration value="red"/>
313            <xs:enumeration value="orange"/>
314            <xs:enumeration value="yellow"/>
315            <xs:enumeration value="green"/>
316            <xs:enumeration value="blue"/>
317            <xs:enumeration value="darkblue"/>
318            <xs:enumeration value="violet"/>
319            <xs:enumeration value="white"/>
320            <xs:enumeration value="pink"/>
321        </xs:restriction>
322    </xs:simpleType>
323   
324    <xs:complexType name="ColourBody">
325        <xs:complexContent>
326            <xs:extension base="Body">
327                <xs:sequence>
328                    <xs:element name="colour" type="palette"/>
329                </xs:sequence>
330            </xs:extension>
331        </xs:complexContent>
332    </xs:complexType>
333   
334    Relation extends Body
335   
336    <xs:complexType name="Relation">
337        <xs:complexContent>
338            <xs:extension base="Body">
339                <xs:sequence>
340                    <xs:any processContents="lax"/>
341                </xs:sequence>
342            </xs:extension>
343        </xs:complexContent>
344    </xs:complexType>
345   
346    Tag extendd Relation
347   
348    <xs:complexType name="Tag">
349        <xs:complexContent>
350            <xs:extension base="Relation">
351                <xs:sequence>
352                    <xs:element name="tag" type="xs:NMTOKEN"/>
353                </xs:sequence>
354            </xs:extension>
355        </xs:complexContent>
356    </xs:complexType>
357   
358    Binary Relations extends Relation
359   
360    <xs:simpleType name="binaryRelationTag">
361        <xs:restriction base="xs:string">
362            <xs:enumeration value="implies"/>
363            <xs:enumeration value="equivalent"/>
364            <xs:enumeration value="contradicts"/>
365        </xs:restriction>
366    </xs:simpleType>
367   
368    <xs:complexType name="BinaryRelation">
369        <xs:complexContent>
370            <xs:extension base="Relation">
371                <xs:sequence>
372                    <xs:element name="tag" type="binaryRelationTag"/>
373                    <xs:element name="first" type="xs:anyURI"/>
374                    <xs:element name="second" type="xs:anyURI"/>
375                </xs:sequence>
376            </xs:extension>
377        </xs:complexContent>
378    </xs:complexType>
379   
380    Typed Tag extends Relation
381   
382   
383    <xs:simpleType name="authorName">
384        <xs:list itemType="xs:NCName"/>
385    </xs:simpleType>
386   
387        <xs:list itemType="xs:NCName"/>
388    </xs:simpleType>
389   
390   
391    <xs:complexType name="TypedTag">
392        <xs:complexContent>
393            <xs:extension base="Relation">
394                <xs:choice>
395                    <xs:element name="author" type="authorName"/>
396                    <xs:element name="source" type="referenceTitle"/>
397                    <xs:element name="discussWith" type="xs:string"/>
398                    <xs:element name="link" type="xs:anyURI"/>
399                </xs:choice>
400            </xs:extension>
401        </xs:complexContent>
402    </xs:complexType>
403   
404-->
Note: See TracBrowser for help on using the repository browser.