still refactoring the rangeType and features/annotation elements.
[vamsas.git] / schemas / vamsas.xsd
index bf17ca3..25ccc55 100644 (file)
@@ -4,7 +4,7 @@
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vamsas="http://www.vamsas.org" targetNamespace="http://www.vamsas.org" elementFormDefault="qualified" attributeFormDefault="unqualified">
        <xs:complexType name="rangeType">
                <xs:annotation>
-                       <xs:documentation>Specify positions and/or regions on the principle dimension of some associated vamsas objects
+                       <xs:documentation>Specify positions and/or regions on the principle dimension of some associated vamsas object
                        TODO: this is abstract. should provide context to scope the range of ids for each use</xs:documentation>
                <xs:documentation>Keeping to jaxb-1.0 specification for the moment - this choice should become a substitution group when we use jaxb-2.0 capable bindings
                </xs:documentation></xs:annotation>
                                <xs:attribute name="group" type="xs:string" use="optional">
                                <xs:annotation><xs:documentation>Annotation with the same non-empty group name are grouped together</xs:documentation></xs:annotation></xs:attribute>
                                <xs:attribute name="type" type="xs:string" use="required"/>
-                               <xs:attribute name="seqRef" type="xs:IDREF" use="optional">
-                                       <xs:annotation><xs:documentation>annotation may be associated with a particular sequence lying within the same reference frame as the rangeType's objRef</xs:documentation></xs:annotation>
-                               </xs:attribute>
+                               
                        </xs:extension>
                </xs:complexContent>
        </xs:complexType>
                                                <xs:annotation><xs:documentation>Annotate over positions and regions of dataset sequences</xs:documentation>
                                                </xs:annotation>
                                                <xs:complexContent>
-                                                       <xs:extension base="vamsas:rangeAnnotation"/>
+                                                       <xs:extension base="vamsas:rangeAnnotation">
+                                                               <xs:attribute name="seqRef" type="xs:IDREF" use="optional">
+                                                                       <xs:annotation><xs:documentation>annotation may be associated with a particular sequence lying within the same reference frame as the rangeType's objRef</xs:documentation></xs:annotation>
+                                                               </xs:attribute>
+                                                       </xs:extension>
                                                </xs:complexContent>
                                        </xs:complexType>
                                </xs:element>
                                                        <xs:element name="AlignmentFeatures" minOccurs="0" maxOccurs="unbounded"><xs:complexType><xs:annotation>
                                                                <xs:documentation>Annotate over positions and regions of the alignment</xs:documentation>
                                                        </xs:annotation><xs:complexContent>
-                                                               <xs:extension base="vamsas:rangeAnnotation"></xs:extension>
+                                                               <xs:extension base="vamsas:rangeAnnotation">                                                            
+                                                                       <xs:attribute name="seqRef" type="xs:IDREF" use="optional">
+                                                                       <xs:annotation><xs:documentation>annotation may be associated with a particular sequence lying within the same reference frame as the rangeType's objRef</xs:documentation></xs:annotation>
+                                                               </xs:attribute>
+                                                               </xs:extension>
                                                        </xs:complexContent></xs:complexType></xs:element> 
                                                        <xs:element name="AlignmentAnnotations" minOccurs="0" maxOccurs="unbounded">
+                                                               <xs:annotation>
+                                                                       <xs:documentation>
+                                                                               TODO: hard to distinguish this from the alignment features element. Do we merge them and leave the applications
+                                                                       </xs:documentation>
+                                                               </xs:annotation>
                                                                <xs:complexType>
                                                                        <xs:sequence>
                                                                                <xs:element ref="vamsas:annotationElement" maxOccurs="unbounded"/>
                                                                        <xs:complexContent>
                                                                                <xs:extension base="vamsas:SequenceType">
                                                                                        <xs:sequence>
-                                                                                               <xs:element name="AlignmentSequenceFeatures" minOccurs="0" maxOccurs="unbounded">
-                                                                                                       <xs:complexType><xs:annotation>
+                                                                                               <xs:element name="AlignmentSequenceFeature" type="vamsas:rangeAnnotation" minOccurs="0" maxOccurs="unbounded">
+                                                                                                       <xs:annotation>
                                                                                                        <xs:documentation>Annotate over positions and regions of the ungapped sequences in the alignment</xs:documentation>
                                                                                                                <xs:documentation>TODO: have to remove id rangeSpec or require it to be the same as dataset sequence reference</xs:documentation>
-                                                                                               </xs:annotation><xs:complexContent>
-                                                                                                       <xs:extension base="vamsas:rangeAnnotation"></xs:extension>
-                                                                                               </xs:complexContent></xs:complexType>
+                                                                                               </xs:annotation>
                                                                                                </xs:element> 
                                                                                        </xs:sequence>
                                                                                        <xs:attribute name="id" type="xs:ID" use="optional">
                                                                                                <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
                                                                                        </xs:attribute>
-                                                                                       <xs:attribute name="refid" type="xs:IDREF" use="required"/>
+                                                                                       <xs:attribute name="refid" type="xs:IDREF" use="required"><xs:annotation><xs:documentation>Dataset Sequence from which this alignment sequence is taken from</xs:documentation></xs:annotation></xs:attribute>
                                                                                </xs:extension>
                                                                        </xs:complexContent>
                                                                </xs:complexType>
        </xs:element>
        <xs:complexType name="SequenceType">
                <xs:sequence>
-                       <xs:element name="sequence" type="xs:string"/>
-                       <xs:element name="name" type="xs:string"/>
-                       <xs:element name="description" type="xs:string"/>
+                       <xs:element name="sequence" type="xs:string" minOccurs="1" maxOccurs="1"/>
+                       <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
+                       <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
                        <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded"><xs:annotation><xs:documentation>additional typed properties</xs:documentation></xs:annotation></xs:element>
                </xs:sequence>
                <xs:attribute name="start" type="xs:integer" use="required"/>
                                                                        <xs:extension base="vamsas:appData">
                                                                                <xs:annotation>
                                                                                        <xs:documentation>Data available to just a specific instance of the application</xs:documentation>
+                                                                                       <xs:documentation>VAMSAS/Pierre: Is this data volatile ?  Application instances may not be accessible after the session has closed - the user may have to be presented with the option of picking up the data in that instance</xs:documentation>
                                                                                </xs:annotation>
                                                                                <xs:attribute name="urn" type="xs:string" use="required"/>
                                                                        </xs:extension>