source: DASISH/t5.6/schema/trunk/annotator-schema/src/main/resources/DASISH-schema.xsd @ 4275

Last change on this file since 4275 was 4275, checked in by olhsha, 10 years ago

Comitting shcema: all the properties except ID's (UIR's) and references to ID's are now elements.

File size: 13.2 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" elementFormDefault="qualified"
4           xmlns:dasish="http://www.dasish.eu/ns/addit">
5    <xs:import namespace="http://www.w3.org/XML/1998/namespace"
6               schemaLocation="http://www.w3.org/2005/08/xml.xsd"/>
7
8    <xs:complexType name="List">
9        <xs:sequence/>
10    </xs:complexType>
11
12    <xs:complexType name="ReferenceList">
13        <xs:complexContent>
14            <xs:extension base="dasish:List">
15                <xs:sequence>
16                    <xs:element name="ref" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
17                </xs:sequence>
18            </xs:extension>
19        </xs:complexContent>
20    </xs:complexType>
21
22
23    <xs:complexType name="CachedRepresentationInfo">
24        <xs:sequence>
25            <xs:element name="mimeType" type="xs:string" minOccurs="1" maxOccurs="1"/>
26            <xs:element name="tool" type="xs:string" minOccurs="1" maxOccurs="1"/>
27            <xs:element name="type" type="xs:string" minOccurs="1" maxOccurs="1"/>
28        </xs:sequence>
29        <xs:attribute name="URI" type="xs:anyURI" use="required"/>
30    </xs:complexType>
31
32    <!-- used in the target -->
33    <xs:complexType name="CachedRepresentationFragment">
34        <xs:sequence>
35            <xs:element name="fragmentString" type="xs:string" minOccurs="1" maxOccurs="1"/>
36        </xs:sequence>
37        <xs:attribute name="ref" type="xs:anyURI" use="required"/>
38    </xs:complexType>
39   
40    <xs:complexType name="CachedRepresentationFragmentList">
41        <xs:complexContent>
42            <xs:extension base="dasish:List">
43                <xs:sequence>
44                    <xs:element name="cached" type="dasish:CachedRepresentationFragment" minOccurs="0" maxOccurs="unbounded"/>
45                </xs:sequence>
46            </xs:extension>
47        </xs:complexContent>
48    </xs:complexType>
49   
50
51    <xs:complexType name="Target">
52        <xs:sequence>
53            <xs:element name="lastModified" type="xs:dateTime" minOccurs="1" maxOccurs="1"/>
54            <xs:element name="link" type="xs:anyURI" minOccurs="1" maxOccurs="1"/>
55            <xs:element name="version" type="xs:string" minOccurs="1" maxOccurs="1"/>
56            <xs:element name="siblingTargets" type="dasish:ReferenceList" minOccurs="1"/>
57            <xs:element name="cachedRepresentatinons" type="dasish:CachedRepresentationFragmentList"
58                minOccurs="1"/>
59        </xs:sequence>
60        <xs:attribute name="URI" type="xs:anyURI" use="required"/>
61    </xs:complexType>
62
63
64    <xs:complexType name="TargetInfo">
65        <xs:sequence>
66            <xs:element name="link" type="xs:anyURI" minOccurs="1" maxOccurs="1"/>
67            <xs:element name="version" type="xs:string" minOccurs="1" maxOccurs="1"/>
68        </xs:sequence>       
69        <xs:attribute name="ref" type="xs:anyURI" use="required"/>
70    </xs:complexType>
71
72    <xs:complexType name="TargetInfoList">
73        <xs:complexContent>
74            <xs:extension base="dasish:List">
75                <xs:sequence>
76                    <xs:element name="targetInfo" type="dasish:TargetInfo" minOccurs="0"
77                                maxOccurs="unbounded"/>
78                </xs:sequence>
79            </xs:extension>
80        </xs:complexContent>
81    </xs:complexType>
82
83
84    <xs:complexType name="User">
85        <xs:sequence>           
86            <xs:element name="displayName" type="xs:string" minOccurs="1" maxOccurs="1"/>
87            <xs:element name="eMail" type="xs:string" minOccurs="1" maxOccurs="1"/>   
88        </xs:sequence>
89        <xs:attribute name="URI" type="xs:anyURI" use="required"/>   
90    </xs:complexType>
91
92
93    <xs:complexType name="CurrentUserInfo">
94        <xs:sequence>           
95            <xs:element name="currentUser" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
96        </xs:sequence>
97        <xs:attribute name="ref" type="xs:anyURI" use="required"/>
98    </xs:complexType>
99
100    <xs:complexType name="CurrentUserInfoList">
101        <xs:complexContent>
102            <xs:extension base="dasish:List">
103                <xs:sequence>
104                    <xs:element name="currentUserInfo" type="dasish:CurrentUserInfo" minOccurs="0"
105                                maxOccurs="unbounded"/>
106                </xs:sequence>
107            </xs:extension>
108        </xs:complexContent>
109    </xs:complexType>
110
111    <xs:simpleType name="Permission">
112        <xs:restriction base="xs:string">
113            <xs:enumeration value="owner"/>
114            <xs:enumeration value="reader"/>
115            <xs:enumeration value="writer"/>
116        </xs:restriction>
117    </xs:simpleType>
118
119    <xs:complexType name="UserWithPermission">
120        <xs:sequence>
121            <xs:element name="permission" type="dasish:Permission" minOccurs="1" maxOccurs="1"/>
122        </xs:sequence>
123        <xs:attribute name="ref" type="xs:anyURI" use="required"/>
124    </xs:complexType>
125
126    <xs:complexType name="UserWithPermissionList">
127        <xs:complexContent>
128            <xs:extension base="dasish:List">
129                <xs:sequence>
130                    <xs:element name="userWithPermission" type="dasish:UserWithPermission"
131                                minOccurs="0" maxOccurs="unbounded"/>
132                </xs:sequence>
133            </xs:extension>
134        </xs:complexContent>
135    </xs:complexType>
136
137
138    <xs:complexType name="Annotation">
139        <xs:sequence>           
140            <xs:element name="headline" type="xs:string"  minOccurs="1" maxOccurs="1"/>
141            <xs:element name="lastModified" type="xs:dateTime"  minOccurs="1" maxOccurs="1"/>
142            <xs:element name="body" type="dasish:AnnotationBody" minOccurs="1" maxOccurs="1"/>
143            <xs:element name="targets" type="dasish:TargetInfoList" minOccurs="1" maxOccurs="1"/>
144            <xs:element name="permissions" type="dasish:UserWithPermissionList" minOccurs="1"
145                        maxOccurs="1"/>
146        </xs:sequence>
147        <xs:attribute name="URI" type="xs:anyURI" use="required"/>
148        <xs:attribute name="ownerRef" type="xs:anyURI"  use="required"/>
149    </xs:complexType>
150
151
152    <xs:complexType name="AnnotationInfo">
153        <xs:sequence>           
154            <xs:element name="headline" type="xs:string"  minOccurs="1" maxOccurs="1"/>
155            <xs:element name="lastModified" type="xs:dateTime"  minOccurs="1" maxOccurs="1"/>
156            <xs:element name="targets" type="dasish:ReferenceList" minOccurs="1" maxOccurs="1"
157            />
158        </xs:sequence>
159        <xs:attribute name="ref" type="xs:anyURI" use="required"/>
160        <xs:attribute name="ownerRef" type="xs:anyURI" use="required"/>
161    </xs:complexType>
162
163    <xs:complexType name="AnnotationInfoList">
164        <xs:complexContent>
165            <xs:extension base="dasish:List">
166                <xs:sequence>
167                    <xs:element name="annotationInfo" type="dasish:AnnotationInfo" minOccurs="0"
168                                maxOccurs="unbounded"/>
169                </xs:sequence>
170            </xs:extension>
171        </xs:complexContent>
172    </xs:complexType>
173
174    <xs:complexType name="AnnotationBody">
175        <xs:choice>
176            <xs:element name="textBody">
177                <xs:complexType>
178                    <xs:sequence>
179                        <xs:element name="mimeType" type="xs:string" minOccurs="1" maxOccurs="1"/>
180                        <xs:element name="body" type="xs:string" minOccurs="1" maxOccurs="1"/>
181                    </xs:sequence>
182                </xs:complexType>
183            </xs:element>
184            <xs:element name="xmlBody">
185                <xs:complexType>
186                    <xs:sequence>
187                        <xs:element name="mimeType" type="xs:string" minOccurs="1" maxOccurs="1"/>
188                        <xs:any minOccurs="1" maxOccurs="1" processContents="skip"/>
189                    </xs:sequence>
190                </xs:complexType>
191            </xs:element>
192        </xs:choice>
193    </xs:complexType>
194
195
196    <xs:complexType name="Notebook">
197        <xs:sequence>             
198            <xs:element name="title" type="xs:string" minOccurs="1" maxOccurs="1"/>
199            <xs:element name="lastModified" type="xs:dateTime" minOccurs="1" maxOccurs="1"/>
200            <xs:element name="annotations" type="dasish:ReferenceList" minOccurs="1" maxOccurs="1"/>
201            <xs:element name="permissions" type="dasish:UserWithPermissionList" minOccurs="1"
202                        maxOccurs="1"/>
203        </xs:sequence>
204        <xs:attribute name="URI" type="xs:anyURI" use="required"/>
205    </xs:complexType>
206
207
208    <xs:complexType name="NotebookInfo">
209        <xs:sequence>             
210            <xs:element name="title" type="xs:string" minOccurs="1" maxOccurs="1"/>           
211        </xs:sequence>
212        <xs:attribute name="ref" type="xs:anyURI" use="required"/>
213    </xs:complexType>
214
215    <xs:complexType name="NotebookInfoList">
216        <xs:complexContent>
217            <xs:extension base="dasish:List">
218                <xs:sequence>
219                    <xs:element name="notebookInfo" type="dasish:NotebookInfo" minOccurs="0"
220                                maxOccurs="unbounded"/>
221                </xs:sequence>
222            </xs:extension>
223        </xs:complexContent>
224    </xs:complexType>
225
226    <!--- Envelopes -->
227
228    <xs:simpleType name="AnnotationActionName">
229        <xs:restriction base="xs:string">
230            <xs:enumeration value="CREATE_CACHED_REPRESENTATION"/>
231        </xs:restriction>
232    </xs:simpleType>
233
234    <xs:simpleType name="PermissionActionName">
235        <xs:restriction base="xs:string">
236            <xs:enumeration value="PROVIDE_USER_INFO"/>
237        </xs:restriction>
238    </xs:simpleType>
239   
240   
241
242    <xs:complexType name="Action">
243        <xs:sequence>
244            <xs:element name="object" type="xs:anyURI" minOccurs="1" maxOccurs="1"/>
245            <xs:element name="message" type="xs:string" minOccurs="0" maxOccurs="1"/>
246        </xs:sequence>
247    </xs:complexType>
248
249
250    <xs:complexType name="ActionList">
251        <xs:complexContent>
252            <xs:extension base="dasish:List">
253                <xs:sequence>
254                    <xs:element name="action" type="dasish:Action" minOccurs="0" maxOccurs="unbounded"/>
255                </xs:sequence>
256            </xs:extension>
257        </xs:complexContent>
258    </xs:complexType>
259
260    <!-- response envelope (not a resource, used for all response on POST/PUT requests) -->
261
262    <!-- "envelope"-->
263    <xs:complexType name="ResponseBody">
264        <xs:sequence>
265            <xs:choice>
266                <xs:element name="annotation" type="dasish:Annotation"/>
267                <xs:element name="permissions" type="dasish:UserWithPermissionList"/>
268            </xs:choice>
269            <xs:element name="actionList" type="dasish:ActionList" minOccurs="1"
270                        maxOccurs="1"/>
271        </xs:sequence>
272    </xs:complexType>
273
274   
275    <!-- above: consistency check is left to "schematron":
276        it has to check if the list objects for CREATE_CACHED_REPRESENTATION(s) conisides with unresolved targets in the content element-annotation
277        the same for permission lists
278    -->
279
280
281    <!-- ############ ELEMENTS ################# !-->
282
283    <!-- complex types -->
284
285    <xs:element name="action" type="dasish:Action"/>
286   
287    <xs:element name="actionList" type="dasish:ActionList"/>
288
289    <xs:element name="annotation" type="dasish:Annotation"/>
290
291    <xs:element name="annotationBody" type="dasish:AnnotationBody"/>
292
293    <xs:element name="annotationInfo" type="dasish:AnnotationInfo"/>
294
295    <xs:element name="annotationInfoList" type="dasish:AnnotationInfoList"/>
296
297    <xs:element name="annotationList" type="dasish:ReferenceList"/>
298
299    <xs:element name="cashedRepresentationInfo" type="dasish:CachedRepresentationInfo"/>
300
301    <xs:element name="cashedRepresentationList" type="dasish:ReferenceList"/>
302   
303    <xs:element name="cachedRepresentationFragment" type="dasish:CachedRepresentationFragment"/>
304   
305    <xs:element name="cachedRepresentationFragmentList" type="dasish:CachedRepresentationFragmentList"/>
306
307    <xs:element name="list" type="dasish:List"/>
308
309    <xs:element name="notebook" type="dasish:Notebook"/>
310
311    <xs:element name="notebookInfo" type="dasish:NotebookInfo"/>
312
313    <xs:element name="notebookInfoList" type="dasish:NotebookInfoList"/>
314
315    <xs:element name="notebookList" type="dasish:ReferenceList"/>
316
317    <xs:element name="permissionList" type="dasish:UserWithPermissionList"/>
318
319    <xs:element name="responseBody" type="dasish:ResponseBody"/>
320
321    <xs:element name="target" type="dasish:Target"/>
322
323    <xs:element name="targetInfo" type="dasish:TargetInfo"/>
324
325    <xs:element name="targetInfoList" type="dasish:TargetInfoList"/>
326
327    <xs:element name="targetList" type="dasish:ReferenceList"/>
328
329    <xs:element name="user" type="dasish:User"/>
330
331    <xs:element name="currentUserInfo" type="dasish:CurrentUserInfo"/>
332
333    <xs:element name="currentUserInfoList" type="dasish:CurrentUserInfoList"/>
334
335    <xs:element name="userList" type="dasish:ReferenceList"/>
336   
337    <xs:element name="userWithPermissionList" type="dasish:UserWithPermissionList"/>
338
339    <xs:element name="referenceList" type="dasish:ReferenceList"/>
340
341    <!-- Simple types -->
342
343    <xs:element name="annotationActionName" type="dasish:AnnotationActionName"/>
344    <xs:element name="permission" type="dasish:Permission"/>
345    <xs:element name="permissionActionName" type="dasish:PermissionActionName"/>
346</xs:schema>
Note: See TracBrowser for help on using the repository browser.