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:element name="link">
157 Primitive labelled URI object
161 <xs:extension base="xs:string">
162 <xs:attribute name="href" type="xs:anyURI">
164 <xs:documentation>The URI</xs:documentation>
171 <xs:complexType name="rangeType" abstract="true">
174 Specify an ordered set of positions and/or regions on the principle
175 dimension of some associated vamsas object
178 Keeping to jaxb-1.0 specification for the moment - this
179 choice should become a substitution group when we use
180 jaxb-2.0 capable bindings
183 <!-- Do we really need this - a position could be just a seg with start=end and inclusive=true -->
185 <xs:element name="pos" maxOccurs="unbounded"
189 a position within the associated object's
194 <xs:attribute name="i" type="xs:int" use="required" />
197 <xs:element name="seg" maxOccurs="unbounded"
201 a region from start to end, with flag for
202 inclusivity of terminii
206 <xs:attribute name="start" type="xs:int"
208 <xs:attribute name="end" type="xs:int"
210 <xs:attribute name="inclusive" type="xs:boolean"
214 when false, a consecutive range like
215 'start=1, end=2' means the region lying
216 after position 1 and before position 2
224 <xs:complexType name="rangeAnnotation">
227 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.
231 <xs:extension base="vamsas:rangeType">
233 <xs:element name="label" type="xs:string"
237 Short, meaningful name for the annotation - if this is absent, then the type string should be used in its place.
241 <xs:element name="description" type="xs:string"
245 Human readable description of the annotation
249 <xs:element name="status" type="xs:string"
251 <xs:annotation><xs:documentation>
252 TODO: specify this - we have considered taking the GO evidence codes as a model for assessing a measure of quality to an annotation.
253 </xs:documentation></xs:annotation>
255 <xs:element ref="vamsas:annotationElement"
256 minOccurs="0" maxOccurs="unbounded">
259 Annotation Element position maps to
260 ordered positions defined by the
261 sequence of rangeType pos positions or
262 concatenated seg start/end segments.
266 <xs:element name="score" minOccurs="0"
267 maxOccurs="unbounded">
270 Ordered set of optionally named float
271 values for the whole annotation
276 <xs:extension base="xs:float">
277 <xs:attribute name="name"
278 type="xs:string" use="optional" default="score">
284 <xs:element ref="vamsas:link" minOccurs="0" maxOccurs="unbounded" />
285 <xs:element ref="vamsas:property" minOccurs="0"
286 maxOccurs="unbounded">
289 Note:These are mutable so an application
290 should check them each time.
295 <xs:attribute name="id" type="xs:ID" use="optional">
298 Primary Key for vamsas object referencing
302 <xs:attribute name="modifiable" type="xs:boolean"
303 default="true" use="optional">
306 objects with modifiable=false will not be
307 modified by a vamsas client update
311 <xs:attribute name="group" type="xs:string"
312 use="optional" default="">
315 Annotation with the same non-empty group
316 name are grouped together
320 <xs:attribute name="type" type="xs:string"
324 A Das Feature has both a type and a Type ID.
325 We go the route of requiring the type string
326 to be taken from a controlled vocabulary if
327 an application expects others to make sense
329 The type may qualified - so uniprot:CHAIN is a valid type name,
330 and considered distinct from someotherDB:CHAIN
337 <xs:element name="param">
341 Specifies a named and typed value used to perform
342 some data transformation.
345 LATER: experiment with xml validation of property
346 set prototypes for services
352 Named and typed property string
355 <xs:extension base="xs:string">
356 <xs:attribute name="name" type="xs:string"
358 <xs:attribute name="type" type="xs:string"
362 The type specifies how the property will
363 be parsed. Empty property strings are
364 allowed, and can be used to prototype
365 the input to a document. TODO: specify
374 <xs:element name="input">
378 Selects all or part of a collection of vamsas
379 objects as a named input to some transformation
380 process. Many inputs with the same name imply a
381 group input (such as a collection of sequences)
386 <xs:extension base="vamsas:rangeType">
387 <xs:attribute name="name" type="xs:string"
390 <xs:attribute name="objRef" type="xs:IDREF"
394 Reference Frame for rangeType
404 <xs:element name="Provenance">
408 Defines the origin and series of operations applied
409 directly to the object that references it.
413 <xs:element name="entry" maxOccurs="unbounded">
416 <xs:element name="User" type="xs:string">
423 <xs:element name="App" type="xs:string">
426 With which application
430 <xs:element name="Action"
438 <xs:element name="Date" type="xs:date">
445 <xs:element ref="vamsas:property"
446 minOccurs="0" maxOccurs="unbounded">
449 additional information
453 <xs:element ref="vamsas:param" minOccurs="0"
454 maxOccurs="unbounded">
457 parameter for the action
461 <xs:element ref="vamsas:input" minOccurs="0"
462 maxOccurs="unbounded">
465 bioinformatic objects input to
471 <xs:attribute name="id" type="xs:ID"
475 Primary Key for vamsas object
485 <xs:element name="DataSet">
489 A collection of sequences, alignments, trees and
494 <xs:element name="Sequence" maxOccurs="unbounded">
498 a primary or secondary sequence record
499 from which all other sequences may be
504 <xs:extension base="vamsas:SequenceType">
506 <xs:element name="dbRef"
507 minOccurs="0" maxOccurs="unbounded">
510 Store a list of database
512 sequence record - with
513 optional mapping from
514 database sequence to the
515 given sequence record
517 <xs:documentation></xs:documentation>
518 <xs:documentation></xs:documentation>
522 <xs:element name="map"
523 minOccurs="0" maxOccurs="unbounded">
526 name="from" type="xs:integer" default="0"
548 name="to" type="xs:integer" default="0" use="optional">
569 name="start" type="xs:integer" use="required">
591 name="end" type="xs:integer" use="required">
612 <xs:element ref="vamsas:link" minOccurs="0" maxOccurs="unbounded"/>
614 ref="vamsas:property" minOccurs="0" maxOccurs="unbounded" />
616 <xs:attribute name="source"
617 type="xs:string" use="required">
628 uncontrolled/unspecified
633 <xs:attribute name="version"
634 type="xs:string" use="required">
643 name="accessionId" type="xs:string" use="required">
659 <xs:attribute name="id"
660 type="xs:ID" use="optional">
672 <xs:attribute name="id" type="xs:ID"
676 Primary Key for vamsas
681 <xs:attribute name="dictionary"
682 type="xs:string" use="required">
685 symbol class for sequence
693 <xs:element name="DataSetAnnotations" minOccurs="0"
694 maxOccurs="unbounded">
698 Annotate over positions and regions of a
704 base="vamsas:rangeAnnotation">
706 <xs:element ref="vamsas:Provenance"
707 maxOccurs="1" minOccurs="1" />
709 <xs:attribute name="seqRef"
710 type="xs:IDREF" use="required">
713 annotation is associated
714 with a particular dataset
723 <xs:element name="Alignment" minOccurs="0"
724 maxOccurs="unbounded">
727 <xs:element name="AlignmentAnnotation"
728 minOccurs="0" maxOccurs="unbounded">
731 This is annotation over the
732 coordinate frame defined by all
733 the columns in the alignment.
739 base="vamsas:rangeAnnotation">
742 ref="vamsas:Provenance" minOccurs="1" maxOccurs="1" />
744 <xs:attribute name="graph"
745 type="xs:boolean" use="required">
763 <xs:element ref="vamsas:Tree" minOccurs="0"
764 maxOccurs="unbounded" />
765 <xs:element name="alignmentSequence"
766 maxOccurs="unbounded">
770 base="vamsas:SequenceType">
773 name="AlignmentSequenceAnnotation" minOccurs="0"
774 maxOccurs="unbounded">
791 <xs:documentation></xs:documentation>
795 base="vamsas:rangeAnnotation">
798 ref="vamsas:Provenance" minOccurs="1" maxOccurs="1" />
801 name="graph" type="xs:boolean" use="required">
832 This replaces the flat list of sequenceFeatures.
833 <xs:element name="AlignmentFeatures" minOccurs="0" maxOccurs="unbounded"><xs:complexType><xs:annotation>
834 <xs:documentation>Annotate over positions and regions of the alignment</xs:documentation>
835 </xs:annotation><xs:complexContent>
836 <xs:extension base="vamsas:rangeFeature">
837 <xs:attribute name="seqRef" type="xs:IDREF" use="optional">
838 <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>
841 </xs:complexContent></xs:complexType></xs:element> -->
845 <xs:attribute name="id"
846 type="xs:ID" use="optional">
855 <xs:attribute name="refid"
856 type="xs:IDREF" use="required">
871 <xs:element ref="vamsas:property"
872 minOccurs="0" maxOccurs="unbounded">
875 typical properties may be
876 additional alignment score
881 <xs:element ref="vamsas:Provenance" />
883 <xs:attribute name="gapChar" type="xs:string"
885 <xs:attribute name="aligned" type="xs:boolean"
887 <xs:attribute name="id" type="xs:ID"
891 Primary Key for vamsas object
896 <xs:attribute name="modifiable"
897 type="xs:boolean" default="true" use="optional">
900 objects with modifiable=false will
901 not be modified by a vamsas client
908 <xs:element ref="vamsas:Tree" minOccurs="0"
909 maxOccurs="unbounded" />
910 <xs:element ref="vamsas:Provenance" />
912 <xs:attribute name="id" type="xs:ID" use="optional">
915 Primary Key for vamsas object referencing
921 <xs:element name="annotationElement">
925 per-site symbolic and/or quantitative annotation
928 SecondaryStructure and display character (from
929 Jalview) have been subsumed into the glyph element
934 <xs:element name="description" type="xs:string"
938 Free text at this position
942 <xs:element name="glyph" minOccurs="0"
943 maxOccurs="unbounded">
946 Discrete symbol - possibly graphically
952 <xs:extension base="xs:string">
953 <xs:attribute name="dict"
954 type="xs:string" default="utf8" use="optional">
958 dictionary for this glyph -
959 eg utf8 (the default),
961 kd_hydrophobicity - the
962 content is not validated so
963 applications must ensure
964 they gracefully deal with
968 TODO: specify a minimum list
969 of glyph dictionaries to get
970 us started and provide a way
971 for the vamsasClient to
972 validate their content if
973 regexes are specified
981 <xs:element name="value" type="xs:float" minOccurs="0"
982 maxOccurs="unbounded">
985 Ordered set of float values - an application
986 may treat the values together as a vector
987 with common support for a set of annotation
988 elements - but this is, again, not validated
989 so applications should deal gracefully with
990 varying numbers of dimensions
995 <xs:attribute name="position" type="xs:integer"
999 position with respect to the coordinate frame
1000 defined by a rangeType specification
1004 <xs:attribute name="after" type="xs:boolean" use="optional"
1008 true means the annotation element appears
1009 between the specified position and the next
1013 <xs:attribute name="id" type="xs:ID" use="optional">
1016 Primary Key for vamsas object referencing
1022 <xs:complexType name="SequenceType">
1024 <xs:element name="sequence" type="xs:string" minOccurs="1"
1026 <xs:element name="name" type="xs:string" minOccurs="1"
1028 <xs:element name="description" type="xs:string"
1029 minOccurs="0" maxOccurs="1" />
1030 <xs:element ref="vamsas:property" minOccurs="0"
1031 maxOccurs="unbounded">
1034 additional typed properties
1039 <xs:attribute name="start" type="xs:integer" use="required" />
1040 <xs:attribute name="end" type="xs:integer" use="required" />
1042 <xs:element name="ApplicationData">
1046 Data specific to a particular type and version of
1051 <xs:extension base="vamsas:appData">
1053 <xs:element name="User" maxOccurs="unbounded"
1058 base="vamsas:appData">
1061 Data available to just a
1065 <xs:attribute name="fullname"
1066 type="xs:string" use="required" />
1068 name="organization" type="xs:string" use="required" />
1070 </xs:complexContent>
1073 <xs:element name="Common" maxOccurs="1"
1078 base="vamsas:appData">
1080 </xs:complexContent>
1083 <xs:element name="Instance"
1084 maxOccurs="unbounded" minOccurs="0">
1088 base="vamsas:appData">
1091 Data available to just a
1092 specific instance of the
1096 VAMSAS/Pierre: Is this
1098 Application instances
1099 may not be accessible
1100 after the session has
1101 closed - the user may
1102 have to be presented
1104 picking up the data in
1108 <xs:attribute name="urn"
1109 type="xs:string" use="required" />
1111 </xs:complexContent>
1115 <xs:attribute name="version" type="xs:string"
1116 use="required" ><xs:annotation><xs:documentation>
1117 Version string describing the application specific data storage version used</xs:documentation></xs:annotation></xs:attribute>
1118 <xs:attribute name="name" type="xs:string"
1120 <xs:annotation><xs:documentation>
1121 Canonical name of application
1126 </xs:complexContent>
1129 <xs:element name="Attachment">
1132 <xs:extension base="vamsas:appData">
1135 General data container to attach a typed
1136 data object to any vamsas object
1139 <xs:attribute name="compressed" type="xs:boolean"
1140 use="optional" default="false">
1143 true implies data will be decompresses
1144 with Zip before presenting to
1149 <xs:attribute name="type" type="xs:string"
1153 Type of arbitrary data - TODO: decide
1154 format - use (extended) MIME types ?
1158 <xs:attribute name="objectref" type="xs:IDREF"
1162 Object the arbitrary data is associated
1167 <xs:attribute name="id" type="xs:ID"
1171 Primary Key for vamsas object
1177 </xs:complexContent>
1180 <xs:complexType name="appData">
1182 <xs:element name="data" type="xs:base64Binary" />
1183 <xs:element name="dataReference" type="xs:string" />