30 | | |
31 | | {{{#!xml |
32 | | |
33 | | <?xml version="1.1" encoding="UTF-8"?> |
34 | | <xs:schema targetNamespace="http://www.dasish.eu/ns/addit" |
35 | | xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.dasish.eu/ns/addit" |
36 | | elementFormDefault="qualified"> |
37 | | <xs:import namespace="http://www.w3.org/XML/1998/namespace" |
38 | | schemaLocation="http://www.w3.org/2005/08/xml.xsd"/> |
39 | | |
40 | | |
41 | | <!--////////////////////////////////////////////////////--> |
42 | | <!-- Annotation-body types according to the UML diagram --> |
43 | | |
44 | | <!-- DASISH resources (cached representations, sources, users, annotations, notebooks) have an obligatory URIdasih element--> |
45 | | <!-- The integrity of the references must be forced via the backend --> |
46 | | |
47 | | |
48 | | |
49 | | <xs:complexType name="ResourceREF"> |
50 | | <xs:attribute name="ref" type="xs:anyURI"></xs:attribute> |
51 | | </xs:complexType> |
52 | | <!-- for a new annotation the reference to the source is absent, that's why this attribute is not obligatory--> |
53 | | |
54 | | |
55 | | |
56 | | <!--////////////////////////--> |
57 | | <!--Cached representations --> |
58 | | |
59 | | <xs:complexType name="CachedRepresentation"> |
60 | | <xs:attribute name="URI" type="xs:anyURI" use="required"/> |
61 | | <xs:attribute name="mimeType" type="xs:string" use="required"/> |
62 | | <xs:attribute name="tool" type="xs:string" use="required"/> |
63 | | <xs:attribute name="type" type="xs:string" use="required"/> |
64 | | </xs:complexType> |
65 | | |
66 | | |
67 | | <xs:complexType name="CachedRepresentations"> |
68 | | <xs:sequence> |
69 | | <xs:element name="cachedRepresentation" type="ResourceREF" |
70 | | maxOccurs="unbounded"/> |
71 | | </xs:sequence> |
72 | | </xs:complexType> |
73 | | |
74 | | <!--////////////////////////////--> |
75 | | <!-- Sources (== Targets in OA) --> |
76 | | |
77 | | |
78 | | <xs:complexType name="Source"> |
79 | | <xs:sequence> |
80 | | <xs:element name="cachedRepresentations" type="CachedRepresentations" minOccurs="1"/> |
81 | | <xs:element name="action" type="Action" minOccurs="0"/> |
82 | | <xs:element name="versions-siblings" type="Versions" minOccurs="1"/> |
83 | | </xs:sequence> |
84 | | <xs:attribute name="URI" type="xs:anyURI" use="required"/> |
85 | | <xs:attribute name="timeSatmp" type="xs:dateTime" use="required"/> |
86 | | <xs:attribute name="link" type="xs:anyURI" use="required"/> |
87 | | <xs:attribute name="version" type="xs:string" use="required"/> |
88 | | </xs:complexType> |
89 | | |
90 | | |
91 | | <xs:complexType name="Sources"> |
92 | | <xs:sequence> |
93 | | <xs:element name="targetSource" type="ResourceREF" minOccurs="1" |
94 | | maxOccurs="unbounded"/> |
95 | | </xs:sequence> |
96 | | </xs:complexType> |
97 | | |
98 | | |
99 | | <xs:complexType name="SourceInfo"> |
100 | | <xs:complexContent> |
101 | | <xs:extension base="ResourceREF"> |
102 | | <xs:sequence> |
103 | | <xs:element name="action" type="Action" minOccurs="0" maxOccurs="1"/> |
104 | | <xs:element name="link" type="xs:anyURI" minOccurs="1" maxOccurs="1"/> |
105 | | <xs:element name="version" type="xs:string" minOccurs="1" maxOccurs="1"/> |
106 | | </xs:sequence> |
107 | | </xs:extension> |
108 | | </xs:complexContent> |
109 | | </xs:complexType> |
110 | | |
111 | | <xs:complexType name="SourceInfos"> |
112 | | <xs:sequence> |
113 | | <xs:element name="targetSource" type="SourceInfo" minOccurs="1" maxOccurs="unbounded"/> |
114 | | </xs:sequence> |
115 | | </xs:complexType> |
116 | | |
117 | | |
118 | | <xs:simpleType name="Action"> |
119 | | <xs:restriction base="xs:string"> |
120 | | <xs:enumeration value="CREATE_CACHED_REPRESENTATION"/> |
121 | | </xs:restriction> |
122 | | </xs:simpleType> |
123 | | |
124 | | |
125 | | <xs:complexType name="Versions"> |
126 | | <xs:sequence> |
127 | | <xs:element name="version" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/> |
128 | | </xs:sequence> |
129 | | </xs:complexType> |
130 | | |
131 | | <!--////////////////////////////--> |
132 | | <!-- Human Agents (Users) --> |
133 | | |
134 | | <xs:complexType name="User"> |
135 | | <xs:sequence> |
136 | | <xs:element name="notebooksToRead" type="NotebookInfos"/> |
137 | | <xs:element name="notebooksToWrite" type="NotebookInfos"/> |
138 | | <xs:element name="additionalInfo"> |
139 | | <xs:complexType> |
140 | | <xs:sequence> |
141 | | <xs:any processContents="lax" maxOccurs="unbounded"/> |
142 | | </xs:sequence> |
143 | | <xs:anyAttribute processContents="lax"/> |
144 | | </xs:complexType> |
145 | | </xs:element> |
146 | | </xs:sequence> |
147 | | <xs:attribute name="URI" type="xs:anyURI" use="required"/> |
148 | | <xs:attribute name="name" type="xs:string" use="required"/> |
149 | | </xs:complexType> |
150 | | |
151 | | <xs:complexType name="Users"> |
152 | | <xs:sequence> |
153 | | <xs:element name="user" type="ResourceREF" maxOccurs="unbounded"/> |
154 | | </xs:sequence> |
155 | | </xs:complexType> |
156 | | |
157 | | |
158 | | <xs:complexType name="UserInfo"> |
159 | | <xs:complexContent> |
160 | | <xs:extension base="ResourceREF"> |
161 | | <xs:sequence> |
162 | | <xs:element name="notebooksToRead" type="NotebookInfos"/> |
163 | | <xs:element name="notebooksToWrite" type="NotebookInfos"/> |
164 | | </xs:sequence> |
165 | | </xs:extension> |
166 | | </xs:complexContent> |
167 | | </xs:complexType> |
168 | | |
169 | | |
170 | | <xs:complexType name="UserInfos"> |
171 | | <xs:sequence> |
172 | | <xs:element name="user" type="UserInfo" maxOccurs="unbounded"/> |
173 | | </xs:sequence> |
174 | | </xs:complexType> |
175 | | |
176 | | <xs:complexType name="CurrentUserInfo"> |
177 | | <xs:complexContent> |
178 | | <xs:extension base="ResourceREF"> |
179 | | <xs:attribute name="currentUser" type="xs:boolean" use="required"/> |
180 | | </xs:extension> |
181 | | </xs:complexContent> |
182 | | </xs:complexType> |
183 | | |
184 | | |
185 | | |
186 | | <!--////////////////////////////--> |
187 | | <!-- Annotation --> |
188 | | |
189 | | |
190 | | <xs:complexType name="Annotation"> |
191 | | <xs:sequence> |
192 | | <xs:element name="owner" type="ResourceREF" minOccurs="1"/> |
193 | | <xs:element name="headline" type="xs:string" minOccurs="1"/> |
194 | | <!-- schematron checks the length <== 100 --> |
195 | | <xs:element name="body" type="Body" minOccurs="1"/> |
196 | | <xs:element name="targetSources" type="SourceInfos" minOccurs="1"/> |
197 | | <xs:element name="readers" type="Readers" minOccurs="1"/> |
198 | | <xs:element name="writers" type="Writers" minOccurs="1"/> |
199 | | </xs:sequence> |
200 | | <xs:attribute name="URI" type="xs:anyURI" use="required"/> |
201 | | <xs:attribute name="timeStamp" type="xs:dateTime" use="required"/> |
202 | | </xs:complexType> |
203 | | |
204 | | |
205 | | <xs:complexType name="Annotations"> |
206 | | <xs:sequence> |
207 | | <xs:element name="annotation" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/> |
208 | | </xs:sequence> |
209 | | </xs:complexType> |
210 | | |
211 | | <xs:complexType name="AnnotationInfo"> |
212 | | <xs:complexContent> |
213 | | <xs:extension base="ResourceREF"> |
214 | | <xs:sequence> |
215 | | <xs:element name="owner" type="ResourceREF" minOccurs="1" maxOccurs="1"/> |
216 | | <xs:element name="headline" type="xs:string" minOccurs="1" maxOccurs="1"/> |
217 | | <xs:element name="targetSources" type="Sources" minOccurs="1" maxOccurs="1"/> |
218 | | </xs:sequence> |
219 | | </xs:extension> |
220 | | </xs:complexContent> |
221 | | </xs:complexType> |
222 | | |
223 | | <xs:complexType name="AnnotationInfos"> |
224 | | <xs:sequence> |
225 | | <xs:element name="annotation" type="AnnotationInfo" maxOccurs="unbounded"/> |
226 | | </xs:sequence> |
227 | | </xs:complexType> |
228 | | |
229 | | <xs:complexType name="Body"> |
230 | | <xs:sequence> |
231 | | <xs:any processContents="lax" maxOccurs="unbounded"/> |
232 | | </xs:sequence> |
233 | | <xs:anyAttribute processContents="lax"/> |
234 | | </xs:complexType> |
235 | | |
236 | | <xs:complexType name="Readers"> |
237 | | <xs:sequence> |
238 | | <xs:element name="reader" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/> |
239 | | </xs:sequence> |
240 | | </xs:complexType> |
241 | | |
242 | | <xs:complexType name="Writers"> |
243 | | <xs:sequence> |
244 | | <xs:element name="writer" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/> |
245 | | </xs:sequence> |
246 | | </xs:complexType> |
247 | | |
248 | | |
249 | | <!--////////////////////////////--> |
250 | | <!-- Notebook --> |
251 | | |
252 | | <xs:complexType name="Notebook"> |
253 | | <xs:sequence> |
254 | | <xs:element name="title" type="xs:string"/> |
255 | | <xs:element name="annotations" type="Annotations"/> |
256 | | <xs:element name="readers" type="Readers"/> |
257 | | <xs:element name="writers" type="Writers"/> |
258 | | </xs:sequence> |
259 | | <xs:attribute name="URI" type="xs:anyURI"/> |
260 | | <xs:attribute name="timeStamp" type="xs:dateTime" use="required"/> |
261 | | </xs:complexType> |
262 | | |
263 | | |
264 | | <xs:complexType name="Notebooks"> |
265 | | <xs:sequence> |
266 | | <xs:element name="notebook" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/> |
267 | | </xs:sequence> |
268 | | </xs:complexType> |
269 | | |
270 | | <xs:complexType name="NotebookInfo"> |
271 | | <xs:complexContent> |
272 | | <xs:extension base="ResourceREF"> |
273 | | <xs:sequence> |
274 | | <xs:element name="notebook" type="ResourceREF"/> |
275 | | <xs:element name="title" type="xs:string"/> |
276 | | </xs:sequence> |
277 | | </xs:extension> |
278 | | </xs:complexContent> |
279 | | </xs:complexType> |
280 | | |
281 | | <xs:complexType name="NotebookInfos"> |
282 | | <xs:sequence> |
283 | | <xs:element name="notebook" type="NotebookInfo" maxOccurs="unbounded"/> |
284 | | </xs:sequence> |
285 | | </xs:complexType> |
286 | | |
287 | | |
288 | | |
289 | | <!--/////////////////////////////////////--> |
290 | | <!-- GET api/user/uid respond --> |
291 | | <xs:element name="currentUserInfo" type="CurrentUserInfo"/> |
292 | | |
293 | | <!--/////////////////////////////////////--> |
294 | | <!-- GET api/annotations?source="http://en.wikipedia.org/wiki/Sagrada_Fam%C3%ADlia"&access=read respond --> |
295 | | <xs:element name="annotationsOfLink" type="AnnotationInfos"></xs:element> |
296 | | |
297 | | |
298 | | <!--/////////////////////////////////////--> |
299 | | <!-- GET api/annotations/AIDxyz respond --> |
300 | | <xs:element name="annotation" type="Annotation"/> |
301 | | |
302 | | |
303 | | <!--/////////////////////////////////////--> |
304 | | <!-- GET api/annotations/AID0xyz/sources respond (non-resolvable)--> |
305 | | <xs:element name="sources" type="SourceInfos"/> |
306 | | |
307 | | <!--/////////////////////////////////////--> |
308 | | <!-- GET api/sources/SID0xyz/ respond --> |
309 | | <xs:element name="source" type="Source "/> |
310 | | |
311 | | <!--/////////////////////////////////////--> |
312 | | <!-- GET api/sources/SID05/cached/CID0efef/metadata (example usage for unresolvable target sources) --> |
313 | | <xs:element name="cashedRepresentation" type="CachedRepresentation"/> |
314 | | |
315 | | <!--/////////////////////////////////////--> |
316 | | <!-- POST api/annotation, annotation body --> |
317 | | <xs:element name="newAnnotation" type="Annotation"/> |
318 | | |
319 | | </xs:schema> |
320 | | }}} |
| 30 | [source:DASISH/t5.6/docs/XMLandXSD/DASISH-schema.xsd] |
| 31 | |