1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by MSD (EMBL OUTSTATION THE EBI WELLCOME TRUST GENOME CAMPUS) -->
3 <!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by lj (jl) -->
4 <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">
5 <xs:complexType name="rangeType">
7 <xs:documentation>Specify positions and/or regions on the principle dimension of some associated vamsas object
8 TODO: this is abstract. should provide context to scope the range of ids for each use</xs:documentation>
9 <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
10 </xs:documentation></xs:annotation>
11 <!-- Do we really need this - a position could be just a seg with start=end and inclusive=true -->
13 <xs:element name="pos" maxOccurs="unbounded" minOccurs="1">
14 <xs:annotation><xs:documentation>a position within the associated object's coordinate system</xs:documentation></xs:annotation>
16 <xs:attribute name="i" type="xs:int" use="required"/>
19 <xs:element name="seg" maxOccurs="unbounded" minOccurs="1">
20 <xs:annotation><xs:documentation>a region from start to end, with flag for inclusivity of terminii</xs:documentation></xs:annotation>
22 <xs:attribute name="start" type="xs:int" use="required"/>
23 <xs:attribute name="end" type="xs:int" use="required"/>
24 <xs:attribute name="inclusive" type="xs:boolean" use="required"><xs:annotation><xs:documentation>when false, a consecutive range like 'start=1, end=2' means the region lying after position 1 and before position 2</xs:documentation></xs:annotation></xs:attribute>
29 <xs:element name="VAMSAS">
30 <xs:annotation><xs:documentation>contains unassociated trees and a number of analysis sets</xs:documentation></xs:annotation>
33 <xs:element ref="vamsas:Tree" minOccurs="0" maxOccurs="unbounded"/>
34 <xs:element ref="vamsas:DataSet" minOccurs="0" maxOccurs="unbounded"/>
36 <xs:attribute name="id" type="xs:ID" use="optional"> <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
38 <xs:attribute name="modifiable" type="xs:boolean" default="true" use="optional"><xs:annotation><xs:documentation>objects with modifiable=false will not be modified by a vamsas client update</xs:documentation></xs:annotation>
43 <xs:documentation> Properties. Generally, these are mutable so an application should check them each time. This may change depending on the context of the property</xs:documentation>
45 <xs:element name="Tree">
47 <xs:annotation><xs:documentation>Contains a named collection of trees TODO: define way of referencing leaves of global tree for any sequence/alignment object</xs:documentation></xs:annotation>
49 <xs:element name="title" type="xs:string" minOccurs="0"/>
50 <xs:element name="newick" maxOccurs="unbounded">
53 <xs:extension base="xs:string">
54 <xs:attribute name="title" type="xs:string" use="optional"/>
55 <xs:attribute name="id" type="xs:ID" use="optional">
56 <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
58 <xs:attribute name="modifiable" type="xs:boolean" default="true" use="optional"><xs:annotation><xs:documentation>objects with modifiable=false will not be modified by a vamsas client update</xs:documentation></xs:annotation>
64 <xs:element ref="vamsas:property" maxOccurs="unbounded" minOccurs="0"/>
65 <xs:element ref="vamsas:Provenance"/>
67 <xs:attribute name="id" type="xs:ID" use="optional"> <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
69 <xs:attribute name="modifiable" type="xs:boolean" default="true" use="optional"><xs:annotation><xs:documentation>objects with modifiable=false will not be modified by a vamsas client update</xs:documentation></xs:annotation>
73 <xs:element name="property">
74 <xs:complexType><xs:simpleContent>
75 <xs:annotation><xs:documentation>Named and typed property string</xs:documentation></xs:annotation>
76 <xs:extension base="xs:string">
77 <xs:attribute name="name" type="xs:string" use="required"/>
78 <xs:attribute name="type" type="xs:string" use="required"><xs:annotation><xs:documentation>The type specifies how the property will be parsed. Empty property strings are allowed, and can be used to prototype the input to a document. TODO: specify allowed types</xs:documentation></xs:annotation></xs:attribute>
80 </xs:simpleContent></xs:complexType>
82 <xs:complexType name="rangeAnnotation">
84 <xs:documentation>provenance contains source of annotation</xs:documentation>
85 <xs:documentation>polymorphism for having collection of single points,
86 or ordered set of regions with polarity (start.lt.end or end.lt.start)</xs:documentation>
89 <xs:extension base="vamsas:rangeType">
91 <xs:element name="description" type="xs:string" minOccurs="0"/>
92 <xs:element name="status" type="xs:string" minOccurs="0"/>
93 <xs:element ref="vamsas:annotationElement" minOccurs="0" maxOccurs="unbounded"/>
94 <xs:element ref="vamsas:Provenance" maxOccurs="1" minOccurs="1"/>
95 <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded"><xs:annotation>
96 <xs:documentation>Note:These are mutable so an application should check them each time.</xs:documentation>
97 </xs:annotation></xs:element>
99 <xs:attribute name="id" type="xs:ID" use="optional">
100 <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
102 <xs:attribute name="modifiable" type="xs:boolean" default="true" use="optional">
103 <xs:annotation><xs:documentation>objects with modifiable=false will not be modified by a vamsas client update</xs:documentation></xs:annotation>
105 <xs:attribute name="group" type="xs:string" use="optional">
106 <xs:annotation><xs:documentation>Annotation with the same non-empty group name are grouped together</xs:documentation></xs:annotation></xs:attribute>
107 <xs:attribute name="type" type="xs:string" use="required"/>
112 <xs:element name="param"><xs:complexType>
115 Specifies a named and typed value used to perform some data transformation.
118 LATER: experiment with xml validation of property set prototypes for services</xs:documentation></xs:annotation>
120 <xs:annotation><xs:documentation>Named and typed property string</xs:documentation></xs:annotation>
121 <xs:extension base="xs:string">
122 <xs:attribute name="name" type="xs:string" use="required"/>
123 <xs:attribute name="type" type="xs:string" use="required"><xs:annotation><xs:documentation>The type specifies how the property will be parsed. Empty property strings are allowed, and can be used to prototype the input to a document. TODO: specify allowed types</xs:documentation></xs:annotation></xs:attribute>
126 </xs:complexType></xs:element>
127 <xs:element name="input"><xs:complexType>
130 Selects all or part of a collection of vamsas objects as a named input to some transformation process.
134 <xs:extension base="vamsas:rangeType">
135 <xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
136 <xs:attribute name="objRef" type="xs:IDREF" use="optional"><xs:annotation><xs:documentation>Reference Frame for rangeType specfication</xs:documentation></xs:annotation></xs:attribute>
142 <xs:element name="Provenance">
146 Defines the origin and series of operations applied directly to the object that references it.
150 <xs:element name="entry" maxOccurs="unbounded">
153 <xs:element name="User" type="xs:string"><xs:annotation><xs:documentation>Who</xs:documentation></xs:annotation></xs:element>
154 <xs:element name="App" type="xs:string"><xs:annotation><xs:documentation>With which application</xs:documentation></xs:annotation></xs:element>
155 <xs:element name="Action" type="xs:string"><xs:annotation><xs:documentation>Did what</xs:documentation></xs:annotation></xs:element>
156 <xs:element name="Date" type="xs:date"><xs:annotation><xs:documentation>When</xs:documentation></xs:annotation></xs:element>
157 <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded"><xs:annotation><xs:documentation>additional information</xs:documentation></xs:annotation></xs:element>
158 <xs:element ref="vamsas:param" minOccurs="0" maxOccurs="unbounded"><xs:annotation><xs:documentation>parameter for the action</xs:documentation></xs:annotation></xs:element>
159 <xs:element ref="vamsas:input" minOccurs="0" maxOccurs="unbounded"><xs:annotation><xs:documentation>bioinformatic objects input to action</xs:documentation></xs:annotation></xs:element>
161 <xs:attribute name="id" type="xs:ID" use="optional"> <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
168 <xs:element name="DataSet">
170 <xs:annotation><xs:documentation>A collection of sequences, alignments, trees and other things.</xs:documentation></xs:annotation>
172 <xs:element name="Sequence" maxOccurs="unbounded">
174 <xs:annotation><xs:documentation>a primary or secondary sequence record from which all other sequences may be derived</xs:documentation></xs:annotation>
176 <xs:extension base="vamsas:SequenceType">
178 <xs:element name="dbRef" minOccurs="0" maxOccurs="unbounded">
181 <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded"/>
183 <xs:attribute name="source" type="xs:string"/>
184 <xs:attribute name="version" type="xs:string"/>
185 <xs:attribute name="accessionId" type="xs:string"/>
186 <xs:attribute name="id" type="xs:ID" use="optional"> <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
191 <xs:attribute name="id" type="xs:ID" use="optional"> <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
193 <xs:attribute name="dictionary" type="xs:string" use="required"><xs:annotation><xs:documentation>symbol class for sequence</xs:documentation></xs:annotation></xs:attribute>
198 <xs:element name="DataSetAnnotations" minOccurs="0" maxOccurs="unbounded">
200 <xs:annotation><xs:documentation>Annotate over positions and regions of dataset sequences</xs:documentation>
203 <xs:extension base="vamsas:rangeAnnotation">
204 <xs:attribute name="seqRef" type="xs:IDREF" use="optional">
205 <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>
211 <xs:element name="Alignment" minOccurs="0" maxOccurs="unbounded">
214 <xs:element name="AlignmentFeatures" minOccurs="0" maxOccurs="unbounded"><xs:complexType><xs:annotation>
215 <xs:documentation>Annotate over positions and regions of the alignment</xs:documentation>
216 </xs:annotation><xs:complexContent>
217 <xs:extension base="vamsas:rangeAnnotation">
218 <xs:attribute name="seqRef" type="xs:IDREF" use="optional">
219 <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>
222 </xs:complexContent></xs:complexType></xs:element>
223 <xs:element name="AlignmentAnnotations" minOccurs="0" maxOccurs="unbounded">
226 TODO: hard to distinguish this from the alignment features element. Do we merge them and leave the applications
231 <xs:element ref="vamsas:annotationElement" maxOccurs="unbounded"/>
232 <xs:element name="label" type="xs:string"/>
233 <xs:element name="description" type="xs:string"/>
234 <xs:element ref="vamsas:Provenance"/>
236 <xs:attribute name="graph" type="xs:boolean" use="required"/>
237 <xs:attribute name="id" type="xs:ID" use="optional"> <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
241 <xs:element ref="vamsas:Tree" minOccurs="0" maxOccurs="unbounded"/>
242 <xs:element name="alignmentSequence" maxOccurs="unbounded">
245 <xs:extension base="vamsas:SequenceType">
247 <xs:element name="AlignmentSequenceFeature" type="vamsas:rangeAnnotation" minOccurs="0" maxOccurs="unbounded">
249 <xs:documentation>Annotate over positions and regions of the ungapped sequences in the alignment</xs:documentation>
250 <xs:documentation>TODO: have to remove id rangeSpec or require it to be the same as dataset sequence reference</xs:documentation>
254 <xs:attribute name="id" type="xs:ID" use="optional">
255 <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
257 <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>
262 <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded"><xs:annotation>
263 <xs:documentation>typical properties may be alignment score objects </xs:documentation>
264 </xs:annotation></xs:element>
265 <xs:element ref="vamsas:Provenance"/>
267 <xs:attribute name="gapChar" type="xs:string" use="required"/>
268 <xs:attribute name="aligned" type="xs:boolean" use="optional"/>
269 <xs:attribute name="id" type="xs:ID" use="optional"> <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
271 <xs:attribute name="modifiable" type="xs:boolean" default="true" use="optional"><xs:annotation><xs:documentation>objects with modifiable=false will not be modified by a vamsas client update</xs:documentation></xs:annotation>
275 <xs:element ref="vamsas:Tree" minOccurs="0" maxOccurs="unbounded"/>
276 <xs:element ref="vamsas:Provenance"/>
278 <xs:attribute name="id" type="xs:ID" use="optional"> <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
282 <xs:element name="annotationElement">
284 <xs:annotation><xs:documentation>per-site symbolic and/or quantitative annotation</xs:documentation>
285 <xs:documentation>SecondaryStructure and display character (from Jalview) have been subsumed into the glyph element</xs:documentation></xs:annotation>
288 <xs:element name="description" type="xs:string" minOccurs="0">
289 <xs:annotation><xs:documentation>Free text at this position</xs:documentation></xs:annotation>
291 <xs:element name="glyph" minOccurs="0" maxOccurs="unbounded">
292 <xs:annotation><xs:documentation>Discrete symbol - possibly graphically represented</xs:documentation></xs:annotation>
295 <xs:extension base="xs:string">
296 <xs:attribute name="dict" type="xs:string" default="utf8" use="optional">
297 <xs:annotation><xs:documentation>specifies the symbol dictionary for this glyph - eg utf8 (the default), aasecstr_3 or kd_hydrophobicity - the content is not validated so applications must ensure they gracefully deal with invalid entries here</xs:documentation>
298 <xs:documentation>TODO: specify a minimum list of glyph dictionaries to get us started and provide a way for the vamsasClient to validate their content if regexes are specified</xs:documentation></xs:annotation></xs:attribute>
303 <xs:element name="value" type="xs:float" minOccurs="0" maxOccurs="unbounded">
304 <xs:annotation><xs:documentation>Ordered set of float values - an application may treat the values together as a vector with common support for a set of annotation elements - but this is, again, not validated so applications should deal gracefully with varying numbers of dimensions
305 </xs:documentation></xs:annotation></xs:element>
307 <xs:attribute name="position" type="xs:integer" use="required"><xs:annotation><xs:documentation>position with respect to the coordinate frame defined by a rangeType specification</xs:documentation></xs:annotation></xs:attribute>
308 <xs:attribute name="after" type="xs:boolean" use="optional" default="false"><xs:annotation><xs:documentation>true means the annotation element appears between the specified position and the next</xs:documentation></xs:annotation></xs:attribute>
309 <xs:attribute name="id" type="xs:ID" use="optional"> <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
313 <xs:complexType name="SequenceType">
315 <xs:element name="sequence" type="xs:string" minOccurs="1" maxOccurs="1"/>
316 <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
317 <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
318 <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded"><xs:annotation><xs:documentation>additional typed properties</xs:documentation></xs:annotation></xs:element>
320 <xs:attribute name="start" type="xs:integer" use="required"/>
321 <xs:attribute name="end" type="xs:integer" use="required"/>
323 <xs:element name="ApplicationData">
326 <xs:documentation>Data specific to a particular type and version of vamsas application</xs:documentation>
329 <xs:extension base="vamsas:appData">
331 <xs:element name="User" maxOccurs="unbounded" minOccurs="0">
334 <xs:extension base="vamsas:appData">
335 <xs:annotation><xs:documentation>Data available to just a particular user</xs:documentation></xs:annotation>
336 <xs:attribute name="fullname" type="xs:string" use="required"/>
337 <xs:attribute name="organization" type="xs:string" use="required"/>
342 <xs:element name="Common" maxOccurs="1" minOccurs="0">
345 <xs:extension base="vamsas:appData"> </xs:extension>
349 <xs:element name="Instance" maxOccurs="unbounded" minOccurs="0">
352 <xs:extension base="vamsas:appData">
354 <xs:documentation>Data available to just a specific instance of the application</xs:documentation>
355 <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>
357 <xs:attribute name="urn" type="xs:string" use="required"/>
363 <xs:attribute name="version" type="xs:string" use="required"/>
364 <xs:attribute name="name" type="xs:string" use="required"/>
369 <xs:element name="Attachment">
372 <xs:extension base="vamsas:appData">
374 <xs:documentation>General data container to attach a typed data object to any vamsas object</xs:documentation>
376 <xs:attribute name="compressed" type="xs:boolean" use="optional" default="false"><xs:annotation><xs:documentation>true implies data will be decompresses with Zip before presenting to application</xs:documentation></xs:annotation></xs:attribute>
377 <xs:attribute name="type" type="xs:string" use="required"><xs:annotation><xs:documentation>Type of arbitrary data - TODO: decide format - use (extended) MIME types ?</xs:documentation></xs:annotation></xs:attribute>
378 <xs:attribute name="objectref" type="xs:IDREF" use="required"><xs:annotation><xs:documentation>Object the arbitrary data is associated with</xs:documentation></xs:annotation></xs:attribute>
379 <xs:attribute name="id" type="xs:ID" use="optional"> <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
385 <xs:complexType name="appData">
387 <xs:element name="data" type="xs:base64Binary"/>
388 <xs:element name="dataReference" type="xs:string"/>