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"
5 xmlns:vamsas="http://www.vamsas.org"
6 targetNamespace="http://www.vamsas.org" elementFormDefault="qualified"
7 attributeFormDefault="unqualified">
10 Vorba ID - Vamsas Object Request Broker Address ID (name
11 needs to be worked on): Suggest it could be of the form
12 documentRoot/datasetName/SequenceUID for a dataset sequence.
14 documentRoot/datasetName/AlignmentId/SequenceUID for an
15 aligned form of a dataset sequence
19 <xs:element name="VAMSAS">
22 contains unassociated trees and a number of analysis
28 <xs:element ref="vamsas:Tree" minOccurs="0"
29 maxOccurs="unbounded" />
30 <xs:element ref="vamsas:DataSet" minOccurs="0"
31 maxOccurs="unbounded" />
33 <xs:attribute name="id" type="xs:ID" use="optional">
36 Primary Key for vamsas object referencing
40 <xs:attribute name="modifiable" type="xs:boolean"
41 default="true" use="optional">
44 objects with modifiable=false will not be
45 modified by a vamsas client update
53 Properties. Generally, these are mutable so an application
54 should check them each time. This may change depending on
55 the context of the property
58 <xs:element name="Tree">
62 Contains a named collection of trees
66 way of referencing leaves of global tree for any
67 sequence/alignment object.
68 SUggestion 1: Each named tree leafnode has a unique id (which may be unique in combination with trees own vorba ID).
69 Dataset sequences can be tagged with a property "vamsas:tree_leaf"
73 <xs:element name="title" type="xs:string" minOccurs="0" />
74 <xs:element name="newick" maxOccurs="unbounded">
77 <xs:extension base="xs:string">
78 <xs:attribute name="title"
79 type="xs:string" use="optional" />
80 <xs:attribute name="id" type="xs:ID"
84 Primary Key for vamsas
89 <xs:attribute name="modifiable"
90 type="xs:boolean" default="true" use="optional">
94 modifiable=false will not be
95 modified by a vamsas client
104 <xs:element ref="vamsas:property" maxOccurs="unbounded"
106 <xs:element ref="vamsas:Provenance" />
108 <xs:attribute name="id" type="xs:ID" use="optional">
111 Primary Key for vamsas object referencing
115 <xs:attribute name="modifiable" type="xs:boolean"
116 default="true" use="optional">
119 objects with modifiable=false will not be
120 modified by a vamsas client update
126 <xs:element name="property">
131 Named and typed property string
134 <xs:extension base="xs:string">
135 <xs:attribute name="name" type="xs:string"
137 <xs:attribute name="type" type="xs:string"
141 The type specifies how the property will
142 be parsed. Empty property strings are
143 allowed, and can be used to prototype
144 the input to a document. TODO: specify
153 <xs:complexType name="uri">
156 Primitive labelled URI object
160 <xs:extension base="xs:string">
161 <xs:attribute name="href" type="xs:anyURI">
163 <xs:documentation>The URI</xs:documentation>
169 <xs:complexType name="rangeType" abstract="true">
172 Specify an ordered set of positions and/or regions on the principle
173 dimension of some associated vamsas object
176 Keeping to jaxb-1.0 specification for the moment - this
177 choice should become a substitution group when we use
178 jaxb-2.0 capable bindings
181 <!-- Do we really need this - a position could be just a seg with start=end and inclusive=true -->
183 <xs:element name="pos" maxOccurs="unbounded"
187 a position within the associated object's
192 <xs:attribute name="i" type="xs:int" use="required" />
195 <xs:element name="seg" maxOccurs="unbounded"
199 a region from start to end, with flag for
200 inclusivity of terminii
204 <xs:attribute name="start" type="xs:int"
206 <xs:attribute name="end" type="xs:int"
208 <xs:attribute name="inclusive" type="xs:boolean"
212 when false, a consecutive range like
213 'start=1, end=2' means the region lying
214 after position 1 and before position 2
222 <xs:complexType name="rangeAnnotation">
225 Annotation for a rangeSpec - values can be attached for the whole specification, and to each position within the spec. following the orientation specified by the ordered set of rangeSpec (pos, seg) elements.
229 <xs:extension base="vamsas:rangeType">
231 <xs:element name="label" type="xs:string"
235 Short, meaningful name for the annotation - if this is absent, then the type string should be used in its place.
239 <xs:element name="description" type="xs:string"
243 Human readable description of the annotation
247 <xs:element name="status" type="xs:string"
249 <xs:annotation><xs:documentation>
250 TODO: specify this - we have considered taking the GO evidence codes as a model for assessing a measure of quality to an annotation.
251 </xs:documentation></xs:annotation>
253 <xs:element ref="vamsas:annotationElement"
254 minOccurs="0" maxOccurs="unbounded">
257 Annotation Element position maps to
258 ordered positions defined by the
259 sequence of rangeType pos positions or
260 concatenated seg start/end segments.
264 <xs:element name="score" minOccurs="0"
265 maxOccurs="unbounded">
268 Ordered set of optionally named float
269 values for the whole annotation
274 <xs:extension base="xs:float">
275 <xs:attribute name="name"
276 type="xs:string" use="optional" default="score">
282 <xs:element name="url" type="vamsas:uri"
283 minOccurs="0" maxOccurs="unbounded" />
284 <xs:element ref="vamsas:property" minOccurs="0"
285 maxOccurs="unbounded">
288 Note:These are mutable so an application
289 should check them each time.
294 <xs:attribute name="id" type="xs:ID" use="optional">
297 Primary Key for vamsas object referencing
301 <xs:attribute name="modifiable" type="xs:boolean"
302 default="true" use="optional">
305 objects with modifiable=false will not be
306 modified by a vamsas client update
310 <xs:attribute name="group" type="xs:string"
311 use="optional" default="">
314 Annotation with the same non-empty group
315 name are grouped together
319 <xs:attribute name="type" type="xs:string"
323 A Das Feature has both a type and a Type ID.
324 We go the route of requiring the type string
325 to be taken from a controlled vocabulary if
326 an application expects others to make sense
328 The type may qualified - so uniprot:CHAIN is a valid type name,
329 and considered distinct from someotherDB:CHAIN
336 <xs:element name="param">
340 Specifies a named and typed value used to perform
341 some data transformation.
344 LATER: experiment with xml validation of property
345 set prototypes for services
351 Named and typed property string
354 <xs:extension base="xs:string">
355 <xs:attribute name="name" type="xs:string"
357 <xs:attribute name="type" type="xs:string"
361 The type specifies how the property will
362 be parsed. Empty property strings are
363 allowed, and can be used to prototype
364 the input to a document. TODO: specify
373 <xs:element name="input">
377 Selects all or part of a collection of vamsas
378 objects as a named input to some transformation
379 process. Many inputs with the same name imply a
380 group input (such as a collection of sequences)
385 <xs:extension base="vamsas:rangeType">
386 <xs:attribute name="name" type="xs:string"
389 <xs:attribute name="objRef" type="xs:IDREF"
393 Reference Frame for rangeType
403 <xs:element name="Provenance">
407 Defines the origin and series of operations applied
408 directly to the object that references it.
412 <xs:element name="entry" maxOccurs="unbounded">
415 <xs:element name="User" type="xs:string">
422 <xs:element name="App" type="xs:string">
425 With which application
429 <xs:element name="Action"
437 <xs:element name="Date" type="xs:date">
444 <xs:element ref="vamsas:property"
445 minOccurs="0" maxOccurs="unbounded">
448 additional information
452 <xs:element ref="vamsas:param" minOccurs="0"
453 maxOccurs="unbounded">
456 parameter for the action
460 <xs:element ref="vamsas:input" minOccurs="0"
461 maxOccurs="unbounded">
464 bioinformatic objects input to
470 <xs:attribute name="id" type="xs:ID"
474 Primary Key for vamsas object
484 <xs:element name="DataSet">
488 A collection of sequences, alignments, trees and
493 <xs:element name="Sequence" maxOccurs="unbounded">
497 a primary or secondary sequence record
498 from which all other sequences may be
503 <xs:extension base="vamsas:SequenceType">
505 <xs:element name="dbRef"
506 minOccurs="0" maxOccurs="unbounded">
509 Store a list of database
511 sequence record - with
512 optional mapping from
513 database sequence to the
514 given sequence record
516 <xs:documentation></xs:documentation>
517 <xs:documentation></xs:documentation>
521 <xs:element name="map"
522 minOccurs="0" maxOccurs="unbounded">
525 name="from" type="xs:integer" default="0"
547 name="to" type="xs:integer" default="0" use="optional">
568 name="start" type="xs:integer" use="required">
590 name="end" type="xs:integer" use="required">
611 <xs:element name="link" type="vamsas:uri" minOccurs="0" maxOccurs="unbounded"/>
613 ref="vamsas:property" minOccurs="0" maxOccurs="unbounded" />
615 <xs:attribute name="source"
616 type="xs:string" use="required">
627 uncontrolled/unspecified
632 <xs:attribute name="version"
633 type="xs:string" use="required">
642 name="accessionId" type="xs:string" use="required">
658 <xs:attribute name="id"
659 type="xs:ID" use="optional">
671 <xs:attribute name="id" type="xs:ID"
675 Primary Key for vamsas
680 <xs:attribute name="dictionary"
681 type="xs:string" use="required">
684 symbol class for sequence
692 <xs:element name="DataSetAnnotations" minOccurs="0"
693 maxOccurs="unbounded">
697 Annotate over positions and regions of a
703 base="vamsas:rangeAnnotation">
705 <xs:element ref="vamsas:Provenance"
706 maxOccurs="1" minOccurs="1" />
708 <xs:attribute name="seqRef"
709 type="xs:IDREF" use="required">
712 annotation is associated
713 with a particular dataset
722 <xs:element name="Alignment" minOccurs="0"
723 maxOccurs="unbounded">
726 <xs:element name="AlignmentAnnotation"
727 minOccurs="0" maxOccurs="unbounded">
730 This is annotation over the
731 coordinate frame defined by all
732 the columns in the alignment.
738 base="vamsas:rangeAnnotation">
741 ref="vamsas:Provenance" minOccurs="1" maxOccurs="1" />
743 <xs:attribute name="graph"
744 type="xs:boolean" use="required">
762 <xs:element ref="vamsas:Tree" minOccurs="0"
763 maxOccurs="unbounded" />
764 <xs:element name="alignmentSequence"
765 maxOccurs="unbounded">
769 base="vamsas:SequenceType">
772 name="AlignmentSequenceAnnotation" minOccurs="0"
773 maxOccurs="unbounded">
790 <xs:documentation></xs:documentation>
794 base="vamsas:rangeAnnotation">
797 ref="vamsas:Provenance" minOccurs="1" maxOccurs="1" />
800 name="graph" type="xs:boolean" use="required">
831 This replaces the flat list of sequenceFeatures.
832 <xs:element name="AlignmentFeatures" minOccurs="0" maxOccurs="unbounded"><xs:complexType><xs:annotation>
833 <xs:documentation>Annotate over positions and regions of the alignment</xs:documentation>
834 </xs:annotation><xs:complexContent>
835 <xs:extension base="vamsas:rangeFeature">
836 <xs:attribute name="seqRef" type="xs:IDREF" use="optional">
837 <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>
840 </xs:complexContent></xs:complexType></xs:element> -->
844 <xs:attribute name="id"
845 type="xs:ID" use="optional">
854 <xs:attribute name="refid"
855 type="xs:IDREF" use="required">
870 <xs:element ref="vamsas:property"
871 minOccurs="0" maxOccurs="unbounded">
874 typical properties may be
875 additional alignment score
880 <xs:element ref="vamsas:Provenance" />
882 <xs:attribute name="gapChar" type="xs:string"
884 <xs:attribute name="aligned" type="xs:boolean"
886 <xs:attribute name="id" type="xs:ID"
890 Primary Key for vamsas object
895 <xs:attribute name="modifiable"
896 type="xs:boolean" default="true" use="optional">
899 objects with modifiable=false will
900 not be modified by a vamsas client
907 <xs:element ref="vamsas:Tree" minOccurs="0"
908 maxOccurs="unbounded" />
909 <xs:element ref="vamsas:Provenance" />
911 <xs:attribute name="id" type="xs:ID" use="optional">
914 Primary Key for vamsas object referencing
920 <xs:element name="annotationElement">
924 per-site symbolic and/or quantitative annotation
927 SecondaryStructure and display character (from
928 Jalview) have been subsumed into the glyph element
933 <xs:element name="description" type="xs:string"
937 Free text at this position
941 <xs:element name="glyph" minOccurs="0"
942 maxOccurs="unbounded">
945 Discrete symbol - possibly graphically
951 <xs:extension base="xs:string">
952 <xs:attribute name="dict"
953 type="xs:string" default="utf8" use="optional">
957 dictionary for this glyph -
958 eg utf8 (the default),
960 kd_hydrophobicity - the
961 content is not validated so
962 applications must ensure
963 they gracefully deal with
967 TODO: specify a minimum list
968 of glyph dictionaries to get
969 us started and provide a way
970 for the vamsasClient to
971 validate their content if
972 regexes are specified
980 <xs:element name="value" type="xs:float" minOccurs="0"
981 maxOccurs="unbounded">
984 Ordered set of float values - an application
985 may treat the values together as a vector
986 with common support for a set of annotation
987 elements - but this is, again, not validated
988 so applications should deal gracefully with
989 varying numbers of dimensions
994 <xs:attribute name="position" type="xs:integer"
998 position with respect to the coordinate frame
999 defined by a rangeType specification
1003 <xs:attribute name="after" type="xs:boolean" use="optional"
1007 true means the annotation element appears
1008 between the specified position and the next
1012 <xs:attribute name="id" type="xs:ID" use="optional">
1015 Primary Key for vamsas object referencing
1021 <xs:complexType name="SequenceType">
1023 <xs:element name="sequence" type="xs:string" minOccurs="1"
1025 <xs:element name="name" type="xs:string" minOccurs="1"
1027 <xs:element name="description" type="xs:string"
1028 minOccurs="0" maxOccurs="1" />
1029 <xs:element ref="vamsas:property" minOccurs="0"
1030 maxOccurs="unbounded">
1033 additional typed properties
1038 <xs:attribute name="start" type="xs:integer" use="required" />
1039 <xs:attribute name="end" type="xs:integer" use="required" />
1041 <xs:element name="ApplicationData">
1045 Data specific to a particular type and version of
1050 <xs:extension base="vamsas:appData">
1052 <xs:element name="User" maxOccurs="unbounded"
1057 base="vamsas:appData">
1060 Data available to just a
1064 <xs:attribute name="fullname"
1065 type="xs:string" use="required" />
1067 name="organization" type="xs:string" use="required" />
1069 </xs:complexContent>
1072 <xs:element name="Common" maxOccurs="1"
1077 base="vamsas:appData">
1079 </xs:complexContent>
1082 <xs:element name="Instance"
1083 maxOccurs="unbounded" minOccurs="0">
1087 base="vamsas:appData">
1090 Data available to just a
1091 specific instance of the
1095 VAMSAS/Pierre: Is this
1097 Application instances
1098 may not be accessible
1099 after the session has
1100 closed - the user may
1101 have to be presented
1103 picking up the data in
1107 <xs:attribute name="urn"
1108 type="xs:string" use="required" />
1110 </xs:complexContent>
1114 <xs:attribute name="version" type="xs:string"
1115 use="required" ><xs:annotation><xs:documentation>
1116 Version string describing the application specific data storage version used</xs:documentation></xs:annotation></xs:attribute>
1117 <xs:attribute name="name" type="xs:string"
1119 <xs:annotation><xs:documentation>
1120 Canonical name of application
1125 </xs:complexContent>
1128 <xs:element name="Attachment">
1131 <xs:extension base="vamsas:appData">
1134 General data container to attach a typed
1135 data object to any vamsas object
1138 <xs:attribute name="compressed" type="xs:boolean"
1139 use="optional" default="false">
1142 true implies data will be decompresses
1143 with Zip before presenting to
1148 <xs:attribute name="type" type="xs:string"
1152 Type of arbitrary data - TODO: decide
1153 format - use (extended) MIME types ?
1157 <xs:attribute name="objectref" type="xs:IDREF"
1161 Object the arbitrary data is associated
1166 <xs:attribute name="id" type="xs:ID"
1170 Primary Key for vamsas object
1176 </xs:complexContent>
1179 <xs:complexType name="appData">
1181 <xs:element name="data" type="xs:base64Binary" />
1182 <xs:element name="dataReference" type="xs:string" />