Changes between Version 21 and Version 22 of DASISH/XSD and XML


Ignore:
Timestamp:
04/25/13 15:39:43 (11 years ago)
Author:
olhsha
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DASISH/XSD and XML

    v21 v22  
    1414= XSD Schema =
    1515
    16 {{{#!xml
     16The 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
     23There 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
    1728<?xml version="1.1" encoding="UTF-8"?>
    1829<xs:schema targetNamespace="http://www.dasish.eu/ns/addit"
     
    2536    <!--////////////////////////////////////////////////////-->
    2637    <!-- Annotation-body types according to the UML diagram -->
    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   
    3851    <!--////////////////////////-->
    3952    <!--Cached representations -->
    4053
    4154    <xs:complexType name="CachedRepresentation">
    42         <xs:attribute ref="xml:id" use="required"/>
    4355        <xs:attribute name="URI" type="xs:anyURI" use="required"/>
    4456        <xs:attribute name="mimeType" type="xs:string" use="required"/>
     
    4658        <xs:attribute name="type" type="xs:string" use="required"/>
    4759    </xs:complexType>
    48 
    49     <xs:complexType name="listCachedRepresentations">
    50         <xs:sequence>
    51             <xs:element name="cachedRepresentation" type="CachedRepresentation"
     60   
     61
     62    <xs:complexType name="CachedRepresentations">
     63        <xs:sequence>
     64            <xs:element name="cachedRepresentation" type="ResourceREF"
    5265                maxOccurs="unbounded"/>
    53         </xs:sequence>
    54     </xs:complexType>
    55 
    56     <!--////////////////////////////-->
    57     <!-- Versions -->
    58     <xs:complexType name="sourceREF">
    59         <xs:attribute name="ref" type="xs:NCName" use="required"/>
    60     </xs:complexType>
    61 
    62     <xs:complexType name="listVersionREFs">
    63         <xs:sequence>
    64             <xs:element name="version" type="sourceREF" minOccurs="1" maxOccurs="unbounded"/>
    6566        </xs:sequence>
    6667    </xs:complexType>
     
    6970    <!-- Sources (== Targets in OA) -->
    7071
    71      <xs:simpleType name="Action">
    72          <xs:restriction base="xs:string">
    73              <xs:enumeration value="CREATE_CACHED_REPRESENTATION"/>
    74          </xs:restriction>
    75      </xs:simpleType>
    7672
    7773    <xs:complexType name="Source">
    7874        <xs:sequence>
    79             <xs:element name="URI" type="xs:anyURI" minOccurs="1"/>
    80             <xs:element name="version" type="xs:string" minOccurs="1"/>
    81             <xs:element name="versions" type="listVersionREFs" minOccurs="1"/>
    82             <xs:element name="cachedRepresentations" type="listCachedRepresentations" minOccurs="1"
    83             />
     75            <xs:element name="cachedRepresentations" type="CachedRepresentations" minOccurs="1"/>
    8476            <xs:element name="action" type="Action" minOccurs="0"/>
    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 
    103126    <!--////////////////////////////-->
    104127    <!-- Human Agents (Users) -->
    105128
    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   
    115179
    116180
    117181    <!--////////////////////////////-->
    118182    <!-- Annotation -->
    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   
    152185    <xs:complexType name="Annotation">
    153186        <xs:sequence>
    154             <xs:element name="owner" type="userREF" minOccurs="1"/>
     187            <xs:element name="owner" type="ResourceREF" minOccurs="1"/>
    155188            <xs:element name="headline" type="xs:string" minOccurs="1"/>
    156189            <!-- schematron checks the length <== 100 -->
    157190            <xs:element name="body" type="Body" minOccurs="1"/>
    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>
    164254        <xs:attribute name="URI" type="xs:anyURI"/>
    165255        <xs:attribute name="timeStamp" type="xs:dateTime" use="required"/>
    166256    </xs:complexType>
    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>
    191263    </xs:complexType>
    192264
    193265    <xs:complexType name="NotebookInfo">
    194         <xs:sequence>
    195             <xs:element name="title" type="xs:string"/>
    196         </xs:sequence>
    197         <xs:attribute name="ref" type="xs:NCName" use="required"/>
    198     </xs:complexType>
    199 
    200     <xs:complexType name="listNotebooks">
     266        <xs:complexContent>
     267            <xs:extension base="ResourceREF">
     268                <xs:sequence>
     269                    <xs:element name="notebook" type="ResourceREF"/>
     270                    <xs:element name="title" type="xs:string"/>
     271                </xs:sequence>
     272            </xs:extension>
     273        </xs:complexContent>
     274    </xs:complexType>
     275
     276    <xs:complexType name="NotebookInfos">
    201277        <xs:sequence>
    202278            <xs:element name="notebook" type="NotebookInfo" maxOccurs="unbounded"/>
     
    204280    </xs:complexType>
    205281
    206 
    207 
    208     <!--/////////////////////////////////////-->
    209     <!-- GET api/user respond -->
    210 
    211 
    212     <xs:complexType name="UserInfoExtended">
    213         <xs:sequence>
    214             <xs:element name="uid" type="xs:NCName"/>
    215             <xs:element name="notebooksToRead" type="listNotebooks"/>
    216             <xs:element name="notebooksToWrite" type="listNotebooks"/>
    217         </xs:sequence>
    218     </xs:complexType>
    219 
    220 
    221     <xs:element name="userInfoExtended" type="UserInfoExtended"/>
    222282
    223283
    224284    <!--/////////////////////////////////////-->
    225285    <!-- GET api/user/uid respond -->
    226 
    227 
    228     <xs:complexType name="UserInfo">
    229         <xs:sequence>
    230             <xs:element name="uid" type="xs:NCName"/>
    231         </xs:sequence>
    232         <xs:attribute name="currentUser" type="xs:boolean"/>
    233     </xs:complexType>
    234 
    235 
    236     <xs:element name="userInfo" type="UserInfo"/>
    237 
    238 
     286    <xs:element name="currentUserInfo" type="CurrentUserInfo"/>
     287   
    239288    <!--/////////////////////////////////////-->
    240289    <!-- GET api/annotations?source="http://en.wikipedia.org/wiki/Sagrada_Fam%C3%ADlia"&access=read  respond -->
    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   
    284292
    285293    <!--/////////////////////////////////////-->
    286     <!-- GET api/annotations/AID01  respond -->
    287     <!-- GET api/annotations/AID02  respond -->
    288 
     294    <!-- GET api/annotations/AIDxyz  respond -->
    289295    <xs:element name="annotation" type="Annotation"/>
    290296
    291297
    292298    <!--/////////////////////////////////////-->
    293     <!--  GET api/annotations/AID01/sources   respond (non-resolvable, obsolete target sources)-->
    294 
    295     <xs:complexType name="listSources">
    296         <xs:sequence>
    297             <xs:element name="targetSource" type="Source" maxOccurs="unbounded"/>
    298         </xs:sequence>
    299     </xs:complexType>
    300 
    301     <xs:element name="sources" type="listSources"/>
    302 
     299    <!--  GET api/annotations/AID0xyz/sources   respond (non-resolvable)-->
     300    <xs:element name="sources" type="SourceInfos"/>
    303301
    304302    <!--/////////////////////////////////////-->
    305     <!--  GET api/sources/SID05/cached    respond -->
    306 
    307     <xs:element name="cashedRepresentations" type="listCachedRepresentations"/>
     303    <!--  GET api/sources/SID0xyz/  respond  -->
     304    <xs:element name="source" type="Source  "/>
     305 
     306       <!--/////////////////////////////////////-->
     307    <!-- GET api/sources/SID05/cached/CID0efef/metadata (example usage for unresolvable target sources)   -->
     308    <xs:element name="cashedRepresentation" type="CachedRepresentation"/>
    308309
    309310    <!--/////////////////////////////////////-->
    310     <!--  GET api/sources/SID05/cached/CID005A    respond -->
    311 
    312     <xs:element name="cashedRepresentation" type="CachedRepresentation"/>
    313 
    314 
    315311    <!-- POST api/annotation, annotation body  -->
    316 
    317     <xs:element name="newAnnotation" type="Annotation"/> 
     312    <xs:element name="newAnnotation" type="Annotation"/>
     313
    318314</xs:schema>
     315
    319316}}}
    320317