Changeset 2886
- Timestamp:
- 05/13/13 12:47:02 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
DASISH/t5.6/docs/XMLandXSD/DASISH-schema.xsd
r2847 r2886 9 9 <!--////////////////////////////////////////////////////--> 10 10 <!-- Annotation-body types according to the UML diagram --> 11 11 12 12 <!-- DASISH resources (cached representations, sources, users, annotations, notebooks) have an obligatory URIdasih element--> 13 13 <!-- The integrity of the references must be forced via the backend --> 14 15 16 14 15 16 17 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 18 <xs:attribute name="ref" type="xs:anyURI" use="required"/> 19 </xs:complexType> 20 21 24 22 <!--////////////////////////--> 25 23 <!--Cached representations --> … … 31 29 <xs:attribute name="type" type="xs:string" use="required"/> 32 30 </xs:complexType> 33 31 34 32 35 33 <xs:complexType name="CachedRepresentations"> … … 55 53 </xs:complexType> 56 54 57 55 58 56 <xs:complexType name="Sources"> 59 57 <xs:sequence> … … 61 59 </xs:sequence> 62 60 </xs:complexType> 63 64 61 62 65 63 <xs:complexType name="SourceInfo"> 66 64 <xs:complexContent> … … 69 67 <xs:element name="link" type="xs:anyURI" minOccurs="1" maxOccurs="1"/> 70 68 <xs:element name="version" type="xs:string" minOccurs="1" maxOccurs="1"/> 71 </xs:sequence> 72 </xs:extension> 73 </xs:complexContent> 74 </xs:complexType> 75 69 </xs:sequence> 70 </xs:extension> 71 </xs:complexContent> 72 </xs:complexType> 73 76 74 <xs:complexType name="SourceInfos"> 77 75 <xs:sequence> … … 79 77 </xs:sequence> 80 78 </xs:complexType> 81 82 79 80 83 81 <xs:complexType name="Versions"> 84 82 <xs:sequence> … … 86 84 </xs:sequence> 87 85 </xs:complexType> 88 86 89 87 <!-- News sources, new/old sources --> 90 88 91 89 <xs:complexType name="NewSourceInfo"> 92 93 94 95 </xs:sequence>96 <xs:attribute ref="xml:id" use="required"/>97 </xs:complexType> 98 90 <xs:sequence> 91 <xs:element name="link" type="xs:anyURI" minOccurs="1" maxOccurs="1"/> 92 <xs:element name="version" type="xs:string" minOccurs="1" maxOccurs="1"/> 93 </xs:sequence> 94 <xs:attribute ref="xml:id" use="required"/> 95 </xs:complexType> 96 99 97 <xs:complexType name="NewOrExistingSourceInfo"> 100 98 <xs:choice> 101 99 <xs:element name="source" type="SourceInfo"/> 102 100 <xs:element name="newSource" type="NewSourceInfo"/> 103 </xs:choice> 104 </xs:complexType> 105 106 101 </xs:choice> 102 </xs:complexType> 103 104 107 105 <xs:complexType name="NewOrExistingSourceInfos"> 108 106 <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) --> 107 <xs:element name="target" type="NewOrExistingSourceInfo" minOccurs="1" 108 maxOccurs="unbounded"/> 109 </xs:sequence> 110 </xs:complexType> 111 112 <!--////////////////////////////--> 113 <!-- Users --> 115 114 116 115 <xs:complexType name="User"> 117 116 <xs:sequence> 118 <xs:element name="notebooksToRead" type="NotebookInfos"/>119 <xs:element name="notebooksToWrite" type="NotebookInfos"/>120 117 <xs:element name="additionalInfo"> 121 118 <xs:complexType> … … 129 126 <xs:attribute name="URI" type="xs:anyURI" use="required"/> 130 127 <xs:attribute name="name" type="xs:string" use="required"/> 131 </xs:complexType> 132 128 <xs:attribute name="eMail" type="xs:string" use="requred"/> 129 </xs:complexType> 130 131 <!-- TODO: make a type for e-mail string --> 132 133 133 <xs:complexType name="Users"> 134 134 <xs:sequence> … … 141 141 <xs:complexContent> 142 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 143 </xs:extension> 144 </xs:complexContent> 145 <xs:attribute name="eMail" type="xs:string" use="required"/> 146 </xs:complexType> 147 148 152 149 <xs:complexType name="UserInfos"> 153 150 <xs:sequence> … … 159 156 <xs:complexContent> 160 157 <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 158 <xs:attribute name="currentUser" type="xs:boolean" use="required"/> 159 </xs:extension> 160 </xs:complexContent> 161 </xs:complexType> 162 163 <!--////////////////////////////--> 164 <!-- permission lists --> 165 166 <xs:simpleType name="Permission"> 167 <xs:restriction base="xs:string"> 168 <xs:enumeration value="owner"/> 169 <xs:enumeration value="reader"/> 170 <xs:enumeration value="writer"/> 171 </xs:restriction> 172 </xs:simpleType> 173 174 <xs:complexType name="UserWithPermission"> 175 <xs:complexContent> 176 <xs:extension base="ResourceREF"></xs:extension> 177 </xs:complexContent> 178 <xs:attribute name="permission" type="Permission"/> 179 </xs:complexType> 180 181 <xs:complexType name="PermissionList"> 182 <xs:sequence> 183 <xs:element name="user" type="UserWithPermission" maxOccurs="unbounded"/> 184 </xs:sequence> 185 <xs:attribute name="URI" type="xs:anyURI" use="required"/> 186 </xs:complexType> 187 188 <!-- no permission-list info required so far, it is just a list --> 167 189 168 190 <!--////////////////////////////--> 169 191 <!-- Annotation --> 170 171 192 172 193 <xs:complexType name="Annotation"> 173 194 <xs:sequence> … … 175 196 <xs:element name="headline" type="xs:string" minOccurs="1"/> 176 197 <!-- schematron checks the length <== 100 --> 177 <xs:element name="body" type=" Body" minOccurs="1"/>198 <xs:element name="body" type="AnnotationBody" minOccurs="1"/> 178 199 <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"/> 200 <xs:element name="permissions" type="ResourceREF"/> 181 201 </xs:sequence> 182 202 <xs:attribute name="URI" type="xs:anyURI" use="required"/> … … 184 204 </xs:complexType> 185 205 186 206 187 207 <xs:complexType name="Annotations"> 188 208 <xs:sequence> 189 209 <xs:element name="annotation" type="ResourceREF" minOccurs="1" maxOccurs="unbounded"/> 190 210 </xs:sequence> 191 </xs:complexType> 192 211 </xs:complexType> 212 193 213 <xs:complexType name="AnnotationInfo"> 194 214 <xs:complexContent> 195 <xs:extension base="ResourceREF"> 215 <xs:extension base="ResourceREF"> 196 216 <xs:sequence> 197 217 <xs:element name="owner" type="ResourceREF" minOccurs="1" maxOccurs="1"/> … … 200 220 </xs:sequence> 201 221 </xs:extension> 202 </xs:complexContent> 203 </xs:complexType> 204 222 </xs:complexContent> 223 </xs:complexType> 224 205 225 <xs:complexType name="AnnotationInfos"> 206 226 <xs:sequence> … … 208 228 </xs:sequence> 209 229 </xs:complexType> 210 211 <xs:complexType name=" Body">230 231 <xs:complexType name="AnnotationBody"> 212 232 <xs:sequence> 213 233 <xs:any processContents="lax" maxOccurs="unbounded"/> … … 215 235 <xs:anyAttribute processContents="lax"/> 216 236 </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 237 238 239 231 240 <!--////////////////////////////--> 232 241 <!-- Notebook --> … … 236 245 <xs:element name="title" type="xs:string"/> 237 246 <xs:element name="annotations" type="Annotations"/> 238 <xs:element name="readers" type="Readers"/> 239 <xs:element name="writers" type="Writers"/> 247 <xs:element name="permissions" type="ResourceREF"/> 240 248 </xs:sequence> 241 249 <xs:attribute name="URI" type="xs:anyURI"/> 242 250 <xs:attribute name="timeStamp" type="xs:dateTime" use="required"/> 243 251 </xs:complexType> 244 245 252 253 246 254 <xs:complexType name="Notebooks"> 247 255 <xs:sequence> … … 252 260 <xs:complexType name="NotebookInfo"> 253 261 <xs:complexContent> 254 <xs:extension base="ResourceREF"> 262 <xs:extension base="ResourceREF"> 255 263 <xs:sequence> 256 264 <xs:element name="notebook" type="ResourceREF"/> … … 258 266 </xs:sequence> 259 267 </xs:extension> 260 </xs:complexContent> 268 </xs:complexContent> 261 269 </xs:complexType> 262 270 … … 267 275 </xs:complexType> 268 276 269 <!--- ACTION-->270 271 <xs:simpleType name="Action ">277 <!--- Actions (not a resource; used in the POST/PUT response envelope)--> 278 279 <xs:simpleType name="ActionNames"> 272 280 <xs:restriction base="xs:string"> 273 281 <xs:enumeration value="CREATE_CACHED_REPRESENTATION"/> 282 <xs:enumeration value="ASK_USER_INFO"/> 274 283 </xs:restriction> 275 284 </xs:simpleType> 276 285 286 <xs:simpleType name="Action"> 287 <xs:attribute name="action" type="ActionName" use="required"/> 288 <xs:attribute name="object" type="xs:anyURI"/> 289 </xs:simpleType> 290 291 <xs:complexType name="ActionList"> 292 <xs:sequence> 293 <xs:element name="action" type="Action" minOccurs="0"/> 294 </xs:sequence> 295 </xs:complexType> 296 297 <!-- response envelope (not a resource, used for all response on POST/PUT requests) --> 298 299 <!-- "envelope"--> 300 <xs:complexType name="ResponseBody"> 301 <xs:sequence> 302 <xs:element name="content" type="ResponseContent" minOccurs="0" maxOccurs="1"/> 303 <xs:element name="actions" type="ActionList" minOccurs="1" maxOccurs="1"/> 304 </xs:sequence> 305 </xs:complexType> 306 307 <!-- consistency check is left to "schematron": 308 it has to check if the list objects for CREATE_CACHED_REPRESENTATION(s) conisides with unresolved targets in the content element-annotation 309 --> 310 311 <xs:complexType name="ResponceContent"> 312 <xs:complexContent> 313 <xs:choice> 314 <xs:element name="resolvedAnnotation" type="Annotation"/> 315 <xs:element name="unResolvedAnnotation" type="Annotation"/> 316 <!-- something else? --> 317 </xs:choice> 318 </xs:complexContent> 319 </xs:complexType> 320 321 <!-- consistency check is left to "schematron": 322 it has to check if the element with the name resolvedAnnotation indeed contains ALL target resolved; AND 323 if the element with the name unResolvedAnnotation has at least one unresolved target --> 324 277 325 278 326 <!--/////////////////////////////////////--> 279 327 <!-- GET api/user/uid respond --> 280 328 <xs:element name="currentUserInfo" type="CurrentUserInfo"/> 281 329 282 330 <!--/////////////////////////////////////--> 283 331 <!-- 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 332 <xs:element name="annotations" type="AnnotationInfos"/> 333 286 334 287 335 <!--/////////////////////////////////////--> … … 297 345 <!-- GET api/sources/SID0xyz/ respond --> 298 346 <xs:element name="source" type="Source "/> 299 300 347 348 <!--/////////////////////////////////////--> 301 349 <!-- GET api/sources/SID05/cached/CID0efef/metadata (example usage for unresolvable target sources) --> 302 350 <xs:element name="cashedRepresentation" type="CachedRepresentation"/> … … 305 353 <!-- POST api/annotation, annotation body --> 306 354 <xs:element name="newAnnotation" type="Annotation"/> 307 355 356 <!--///////////////////////////////////--> 357 <!-- GET api/annotations/<aid>/permissions --> 358 359 <xs:element name="listOfPermissions" type="PermissionList"/> 360 361 <!-- PUT api/annotations/<aid> --> 362 363 <!-- Body of the request--> 364 <xs:element name="newBody" type="AnnotationBody"/> 365 366 <xs:element name="AnnotationBodyUpdate" type="ResponseBody"/> 367 <!-- example all targets resolved, since it is just a body correction, empty list of actions --> 368 308 369 </xs:schema> 309 370 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 now316 Note extends Body317 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 Body330 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 Body356 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 Relation368 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 Relation380 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 Relation402 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 TracChangeset
for help on using the changeset viewer.