16 | | {{{#!xml |
| 16 | The xsd schema is designed according to the following paradigm: |
| 17 | -- There are five xsd-types corresponding five sorts of resources in DASISH: CachedRepresentation, Source, User, Annotation, Notebook. |
| 18 | -- Each of these types has an obligatory attribute "URI" which contains DASISH identifier pointing to the location of the resource on DASISH server. |
| 19 | -- There are five lists-of-reference types: CachedRepresentations, Sources, Users, Annotations, Notebooks. Their names are just plural English forms of the corresponding types. |
| 20 | -- There five corresponding resource-infor types: CachedRepresentationInfo, SourceInfo, UserInfo, AnnotationInfo, NotebookInfo. They contain reference to the corresponding resource plus the most important information about the resource. |
| 21 | -- There five corresponding list-of-resource-infor types: CachedRepresentationInfos, SourceInfos, UserInfos, AnnotationInfos, NotebookInfos. |
| 22 | |
| 23 | There is a number of auxiliary types as well. A commonly-used one is ResourceREF which contains the attribute "ref" of type "xs:anyURI". It allows to have announce elements-references and avoid mixing-them-up with elements-resources, without adding REF to the name. For instance {{{<owner ref="http:/dasish.eu/users/UIDefef" }}}. |
| 24 | |
| 25 | |
| 26 | {{{#!xml |
| 27 | |
27 | | |
28 | | |
29 | | <!-- Body --> |
30 | | |
31 | | <xs:complexType name="Body"> |
32 | | <xs:sequence> |
33 | | <xs:any processContents="lax" maxOccurs="unbounded"/> |
34 | | </xs:sequence> |
35 | | <xs:anyAttribute processContents="lax"/> |
36 | | </xs:complexType> |
37 | | |
| 38 | |
| 39 | <!-- DASISH resources (cached representations, sources, users, annotations, notebooks) have an obligatory URIdasih element--> |
| 40 | <!-- The integrity of the references must be forced via the backend --> |
| 41 | |
| 42 | |
| 43 | |
| 44 | <xs:complexType name="ResourceREF"> |
| 45 | <xs:attribute name="ref" type="xs:anyURI"></xs:attribute> |
| 46 | </xs:complexType> |
| 47 | <!-- for a new annotation the reference to the source is absent, that's why this attribute is not obligatory--> |
| 48 | |
| 49 | |
| 50 | |
85 | | </xs:sequence> |
86 | | <xs:attribute ref="xml:id" use="required"/> |
87 | | <xs:attribute name="lastModified" type="xs:dateTime" use="required"/> |
88 | | </xs:complexType> |
89 | | |
90 | | |
91 | | <xs:complexType name="SourceInfoForAnnotation"> |
92 | | <xs:sequence> |
93 | | <xs:element name="URI" type="xs:anyURI" minOccurs="1"/> |
94 | | <xs:element name="version" type="xs:string" minOccurs="1"/> |
95 | | <xs:element name="action" type="Action" minOccurs="0"/> |
96 | | </xs:sequence> |
97 | | <xs:attribute ref="xml:id" use="required"/> |
98 | | </xs:complexType> |
99 | | |
100 | | |
101 | | |
102 | | |
| 77 | <xs:element name="versions-siblings" type="Versions" minOccurs="1"/> |
| 78 | </xs:sequence> |
| 79 | <xs:attribute name="URI" type="xs:anyURI" use="required"/> |
| 80 | <xs:attribute name="timeSatmp" type="xs:dateTime" use="required"/> |
| 81 | <xs:attribute name="link" type="xs:anyURI" use="required"/> |
| 82 | <xs:attribute name="version" type="xs:string" use="required"/> |
| 83 | </xs:complexType> |
| 84 | |
| 85 | |
| 86 | <xs:complexType name="Sources"> |
| 87 | <xs:sequence> |
| 88 | <xs:element name="targetSource" type="ResourceREF" minOccurs="1" |
| 89 | maxOccurs="unbounded"/> |
| 90 | </xs:sequence> |
| 91 | </xs:complexType> |
| 92 | |
| 93 | |
| 94 | <xs:complexType name="SourceInfo"> |
| 95 | <xs:complexContent> |
| 96 | <xs:extension base="ResourceREF"> |
| 97 | <xs:sequence> |
| 98 | <xs:element name="action" type="Action" minOccurs="0" maxOccurs="1"/> |
| 99 | <xs:element name="link" type="xs:anyURI" minOccurs="1" maxOccurs="1"/> |
| 100 | <xs:element name="version" type="xs:string" minOccurs="1" maxOccurs="1"/> |
| 101 | </xs:sequence> |
| 102 | </xs:extension> |
| 103 | </xs:complexContent> |
| 104 | </xs:complexType> |
| 105 | |
| 106 | <xs:complexType name="SourceInfos"> |
| 107 | <xs:sequence> |
| 108 | <xs:element name="targetSource" type="SourceInfo" minOccurs="1" maxOccurs="unbounded"/> |
| 109 | </xs:sequence> |
| 110 | </xs:complexType> |
| 111 | |
| 112 | |
| 113 | <xs:simpleType name="Action"> |
| 114 | <xs:restriction base="xs:string"> |
| 115 | <xs:enumeration value="CREATE_CACHED_REPRESENTATION"/> |
| 116 | </xs:restriction> |
| 117 | </xs:simpleType> |
| 118 | |
| 119 | |
| 120 | <xs:complexType name="Versions"> |
| 121 | <xs:sequence> |
| 122 | <xs:element name="version" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/> |
| 123 | </xs:sequence> |
| 124 | </xs:complexType> |
| 125 | |
106 | | <xs:complexType name="userREF"> |
107 | | <xs:annotation> |
108 | | <xs:documentation xml:lang="nl">De referentiele integriteit moet door de backend |
109 | | afgedwongen worden.</xs:documentation> |
110 | | <xs:documentation xml:lang="en">The integrity of the references must be forced via the |
111 | | backend</xs:documentation> |
112 | | </xs:annotation> |
113 | | <xs:attribute name="ref" type="xs:NCName" use="required"/> |
114 | | </xs:complexType> |
| 129 | <xs:complexType name="User"> |
| 130 | <xs:sequence> |
| 131 | <xs:element name="notebooksToRead" type="NotebookInfos"/> |
| 132 | <xs:element name="notebooksToWrite" type="NotebookInfos"/> |
| 133 | <xs:element name="additionalInfo"> |
| 134 | <xs:complexType> |
| 135 | <xs:sequence> |
| 136 | <xs:any processContents="lax" maxOccurs="unbounded"/> |
| 137 | </xs:sequence> |
| 138 | <xs:anyAttribute processContents="lax"/> |
| 139 | </xs:complexType> |
| 140 | </xs:element> |
| 141 | </xs:sequence> |
| 142 | <xs:attribute name="URI" type="xs:anyURI" use="required"/> |
| 143 | <xs:attribute name="name" type="xs:string" use="required"/> |
| 144 | </xs:complexType> |
| 145 | |
| 146 | <xs:complexType name="Users"> |
| 147 | <xs:sequence> |
| 148 | <xs:element name="user" type="ResourceREF" maxOccurs="unbounded"/> |
| 149 | </xs:sequence> |
| 150 | </xs:complexType> |
| 151 | |
| 152 | |
| 153 | <xs:complexType name="UserInfo"> |
| 154 | <xs:complexContent> |
| 155 | <xs:extension base="ResourceREF"> |
| 156 | <xs:sequence> |
| 157 | <xs:element name="notebooksToRead" type="NotebookInfos"/> |
| 158 | <xs:element name="notebooksToWrite" type="NotebookInfos"/> |
| 159 | </xs:sequence> |
| 160 | </xs:extension> |
| 161 | </xs:complexContent> |
| 162 | </xs:complexType> |
| 163 | |
| 164 | |
| 165 | <xs:complexType name="UserInfos"> |
| 166 | <xs:sequence> |
| 167 | <xs:element name="user" type="UserInfo" maxOccurs="unbounded"/> |
| 168 | </xs:sequence> |
| 169 | </xs:complexType> |
| 170 | |
| 171 | <xs:complexType name="CurrentUserInfo"> |
| 172 | <xs:complexContent> |
| 173 | <xs:extension base="ResourceREF"> |
| 174 | <xs:attribute name="currentUser" type="xs:boolean" use="required"/> |
| 175 | </xs:extension> |
| 176 | </xs:complexContent> |
| 177 | </xs:complexType> |
| 178 | |
119 | | |
120 | | <xs:complexType name="listReaderREFs"> |
121 | | <xs:sequence> |
122 | | <xs:element name="reader" type="userREF" minOccurs="1" maxOccurs="unbounded"/> |
123 | | </xs:sequence> |
124 | | </xs:complexType> |
125 | | |
126 | | <xs:complexType name="listWriterREFs"> |
127 | | <xs:sequence> |
128 | | <xs:element name="writer" type="userREF" minOccurs="1" maxOccurs="unbounded"/> |
129 | | </xs:sequence> |
130 | | </xs:complexType> |
131 | | |
132 | | <xs:complexType name="listSourceInfoForAnnotation"> |
133 | | <xs:sequence> |
134 | | <xs:element name="targetSource" type="SourceInfoForAnnotation" minOccurs="1" |
135 | | maxOccurs="unbounded"/> |
136 | | </xs:sequence> |
137 | | </xs:complexType> |
138 | | |
139 | | <xs:complexType name="notebookInfo"> |
140 | | <xs:sequence> |
141 | | <xs:element name="title" type="xs:string" minOccurs="1"/> |
142 | | </xs:sequence> |
143 | | <xs:attribute name="ref" type="xs:NCName" use="required"/> |
144 | | </xs:complexType> |
145 | | |
146 | | <xs:complexType name="listNotebookInfos"> |
147 | | <xs:sequence> |
148 | | <xs:element name="notebook" type="notebookInfo" minOccurs="0" maxOccurs="unbounded"/> |
149 | | </xs:sequence> |
150 | | </xs:complexType> |
151 | | |
| 183 | |
| 184 | |
158 | | <xs:element name="targetSources" type="listSourceInfoForAnnotation" minOccurs="1"/> |
159 | | <xs:element name="readers" type="listReaderREFs" minOccurs="1"/> |
160 | | <xs:element name="writers" type="listWriterREFs" minOccurs="1"/> |
161 | | <!-- <xs:element name="notebooks" type="listNotebookInfos" minOccurs="1"/> --> |
162 | | </xs:sequence> |
163 | | <xs:attribute ref="xml:id" use="required"/> |
| 191 | <xs:element name="targetSources" type="SourceInfos" minOccurs="1"/> |
| 192 | <xs:element name="readers" type="Readers" minOccurs="1"/> |
| 193 | <xs:element name="writers" type="Writers" minOccurs="1"/> |
| 194 | </xs:sequence> |
| 195 | <xs:attribute name="URI" type="xs:anyURI" use="required"/> |
| 196 | <xs:attribute name="timeStamp" type="xs:dateTime" use="required"/> |
| 197 | </xs:complexType> |
| 198 | |
| 199 | |
| 200 | <xs:complexType name="Annotations"> |
| 201 | <xs:sequence> |
| 202 | <xs:element name="annotation" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/> |
| 203 | </xs:sequence> |
| 204 | </xs:complexType> |
| 205 | |
| 206 | <xs:complexType name="AnnotationInfo"> |
| 207 | <xs:complexContent> |
| 208 | <xs:extension base="ResourceREF"> |
| 209 | <xs:sequence> |
| 210 | <xs:element name="owner" type="ResourceREF" minOccurs="1" maxOccurs="1"/> |
| 211 | <xs:element name="headline" type="xs:string" minOccurs="1" maxOccurs="1"/> |
| 212 | <xs:element name="targetSources" type="Sources" minOccurs="1" maxOccurs="1"/> |
| 213 | </xs:sequence> |
| 214 | </xs:extension> |
| 215 | </xs:complexContent> |
| 216 | </xs:complexType> |
| 217 | |
| 218 | <xs:complexType name="AnnotationInfos"> |
| 219 | <xs:sequence> |
| 220 | <xs:element name="annotation" type="AnnotationInfo" maxOccurs="unbounded"/> |
| 221 | </xs:sequence> |
| 222 | </xs:complexType> |
| 223 | |
| 224 | <xs:complexType name="Body"> |
| 225 | <xs:sequence> |
| 226 | <xs:any processContents="lax" maxOccurs="unbounded"/> |
| 227 | </xs:sequence> |
| 228 | <xs:anyAttribute processContents="lax"/> |
| 229 | </xs:complexType> |
| 230 | |
| 231 | <xs:complexType name="Readers"> |
| 232 | <xs:sequence> |
| 233 | <xs:element name="reader" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/> |
| 234 | </xs:sequence> |
| 235 | </xs:complexType> |
| 236 | |
| 237 | <xs:complexType name="Writers"> |
| 238 | <xs:sequence> |
| 239 | <xs:element name="writer" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/> |
| 240 | </xs:sequence> |
| 241 | </xs:complexType> |
| 242 | |
| 243 | |
| 244 | <!--////////////////////////////--> |
| 245 | <!-- Notebook --> |
| 246 | |
| 247 | <xs:complexType name="Notebook"> |
| 248 | <xs:sequence> |
| 249 | <xs:element name="title" type="xs:string"/> |
| 250 | <xs:element name="annotations" type="Annotations"/> |
| 251 | <xs:element name="readers" type="Readers"/> |
| 252 | <xs:element name="writers" type="Writers"/> |
| 253 | </xs:sequence> |
167 | | |
168 | | |
169 | | |
170 | | |
171 | | |
172 | | <!--////////////////////////////--> |
173 | | <!-- Notebook --> |
174 | | |
175 | | <xs:complexType name="listAnnotations"> |
176 | | <xs:sequence> |
177 | | <xs:element name="annotation" type="Annotation" minOccurs="1" maxOccurs="unbounded"/> |
178 | | </xs:sequence> |
179 | | </xs:complexType> |
180 | | |
181 | | <xs:complexType name="Notebook"> |
182 | | <xs:sequence> |
183 | | <xs:element name="title" type="xs:string"/> |
184 | | <xs:element name="annotations" type="listAnnotations"/> |
185 | | <xs:element name="readers" type="listReaderREFs"/> |
186 | | <xs:element name="writers" type="listWriterREFs"/> |
187 | | </xs:sequence> |
188 | | <xs:attribute ref="xml:id" use="required"/> |
189 | | <xs:attribute name="URI" type="xs:anyURI" use="required"/> |
190 | | <xs:attribute name="timeStamp" type="xs:dateTime" use="required"/> |
| 257 | |
| 258 | |
| 259 | <xs:complexType name="Notebooks"> |
| 260 | <xs:sequence> |
| 261 | <xs:element name="notebook" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/> |
| 262 | </xs:sequence> |
241 | | |
242 | | <xs:complexType name="SourceRef"> |
243 | | <xs:attribute name="ref" type="xs:NCName"/> |
244 | | </xs:complexType> |
245 | | |
246 | | |
247 | | <xs:complexType name="listSourceRef"> |
248 | | <xs:sequence> |
249 | | <xs:element name="targetSource" type="SourceRef" minOccurs="1" |
250 | | maxOccurs="unbounded"/> |
251 | | </xs:sequence> |
252 | | </xs:complexType> |
253 | | |
254 | | <xs:complexType name="OwnerRef"> |
255 | | <xs:attribute name="ref" type="xs:NCName"/> |
256 | | </xs:complexType> |
257 | | |
258 | | <xs:complexType name="AnnotationInfo"> |
259 | | <xs:sequence> |
260 | | <xs:element name="owner" type="OwnerRef" minOccurs="1"/> |
261 | | <xs:element name="headline" type="xs:string" minOccurs="1"/> |
262 | | <xs:element name="targetSources" type="listSourceRef" minOccurs="1"/> |
263 | | <!-- <xs:element name="notebooks" type="listNotebookInfos" minOccurs="1"/> --> |
264 | | </xs:sequence> |
265 | | <xs:attribute name="id" type="xs:NCName" use="required"/> |
266 | | </xs:complexType> |
267 | | |
268 | | <xs:complexType name="listAnnotationInfo"> |
269 | | <xs:sequence> |
270 | | <xs:element name="annotation" type="AnnotationInfo" maxOccurs="unbounded"/> |
271 | | </xs:sequence> |
272 | | </xs:complexType> |
273 | | |
274 | | |
275 | | |
276 | | <xs:complexType name="AnnotationsOfSource"> |
277 | | <xs:sequence> |
278 | | <xs:element name="annotations" type="listAnnotationInfo"/> |
279 | | </xs:sequence> |
280 | | </xs:complexType> |
281 | | |
282 | | |
283 | | <xs:element name="annotationsOfSource" type="AnnotationsOfSource"/> |
| 290 | <xs:element name="annotationsOfLink" type="AnnotationInfos"></xs:element> |
| 291 | |