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 v2006 sp1 U (http://www.altova.com) by ioh[ (o[ih[oh) -->
4 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vamsas="http://www.vamsas.org"
5 targetNamespace="http://www.vamsas.org" elementFormDefault="qualified"
6 attributeFormDefault="unqualified">
8 <xs:documentation> Vorba ID - Vamsas Object Request Broker Address ID (name needs to be
9 worked on): Suggest it could be of the form documentRoot/datasetName/SequenceUID for a
10 dataset sequence. Alignment sequence: documentRoot/datasetName/AlignmentId/SequenceUID
11 for an aligned form of a dataset sequence </xs:documentation>
13 <xs:element name="VAMSAS">
15 <xs:documentation> contains unassociated trees and a number of analysis sets
20 <xs:element ref="vamsas:Tree" minOccurs="0" maxOccurs="unbounded"/>
21 <xs:element ref="vamsas:DataSet" minOccurs="0" maxOccurs="unbounded"/>
23 <xs:attribute name="id" type="xs:ID" use="optional">
25 <xs:documentation> Primary Key for vamsas object referencing </xs:documentation>
28 <xs:attribute name="modifiable" type="xs:boolean" use="optional" default="true">
30 <xs:documentation> objects with modifiable=false will not be modified by a
31 vamsas client update </xs:documentation>
37 <xs:documentation> Properties. Generally, these are mutable so an application should check
38 them each time. This may change depending on the context of the property
41 <xs:element name="Tree">
44 <xs:documentation> Contains a named collection of trees </xs:documentation>
45 <xs:documentation> TODO: define way of referencing leaves of global tree for any
46 sequence/alignment object. SUggestion 1: Each named tree leafnode has a unique
47 id (which may be unique in combination with trees own vorba ID). Dataset
48 sequences can be tagged with a property "vamsas:tree_leaf" </xs:documentation>
51 <xs:element name="title" type="xs:string" minOccurs="0"/>
52 <xs:element name="newick" maxOccurs="unbounded">
55 <xs:extension base="xs:string">
56 <xs:attribute name="title" type="xs:string" use="optional"/>
57 <xs:attribute name="id" type="xs:ID" use="optional">
59 <xs:documentation> Primary Key for vamsas object referencing
63 <xs:attribute name="modifiable" type="xs:boolean" use="optional"
66 <xs:documentation> objects with modifiable=false will not be
67 modified by a vamsas client update </xs:documentation>
74 <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded"/>
75 <xs:element ref="vamsas:Provenance"/>
77 <xs:attribute name="id" type="xs:ID" use="optional">
79 <xs:documentation> Primary Key for vamsas object referencing </xs:documentation>
82 <xs:attribute name="modifiable" type="xs:boolean" use="optional" default="true">
84 <xs:documentation> objects with modifiable=false will not be modified by a
85 vamsas client update </xs:documentation>
90 <xs:element name="property">
94 <xs:documentation> Named and typed property string </xs:documentation>
96 <xs:extension base="xs:string">
97 <xs:attribute name="name" type="xs:string" use="required"/>
98 <xs:attribute name="type" type="xs:string" use="required">
100 <xs:documentation> The type specifies how the property will be parsed.
101 Empty property strings are allowed, and can be used to prototype the
102 input to a document. TODO: specify allowed types </xs:documentation>
109 <xs:element name="link">
112 <xs:documentation> Primitive labelled URI object </xs:documentation>
115 <xs:extension base="xs:string">
116 <xs:attribute name="href" type="xs:anyURI">
118 <xs:documentation>The URI</xs:documentation>
125 <xs:complexType name="rangeType" abstract="true">
127 <xs:documentation> Specify an ordered set of positions and/or regions on the principle
128 dimension of some associated vamsas object </xs:documentation>
129 <xs:documentation> Keeping to jaxb-1.0 specification for the moment - this choice should
130 become a substitution group when we use jaxb-2.0 capable bindings
134 <xs:element name="pos" maxOccurs="unbounded">
136 <xs:documentation> a position within the associated object's coordinate system
140 <xs:attribute name="i" type="xs:int" use="required"/>
143 <xs:element name="seg" maxOccurs="unbounded">
145 <xs:documentation> a region from start to end, with flag for inclusivity of
146 terminii </xs:documentation>
149 <xs:attribute name="start" type="xs:int" use="required"/>
150 <xs:attribute name="end" type="xs:int" use="required"/>
151 <xs:attribute name="inclusive" type="xs:boolean" use="required">
153 <xs:documentation> when false, a consecutive range like 'start=1, end=2'
154 means the region lying after position 1 and before position 2
161 <!-- Do we really need this - a position could be just a seg with start=end and inclusive=true -->
163 <xs:complexType name="rangeAnnotation">
165 <xs:documentation> Annotation for a rangeSpec - values can be attached for the whole
166 specification, and to each position within the spec. following the orientation
167 specified by the ordered set of rangeSpec (pos, seg) elements. </xs:documentation>
170 <xs:extension base="vamsas:rangeType">
172 <xs:element name="label" type="xs:string" minOccurs="0">
174 <xs:documentation> Short, meaningful name for the annotation - if this
175 is absent, then the type string should be used in its place.
179 <xs:element name="description" type="xs:string" minOccurs="0">
181 <xs:documentation> Human readable description of the annotation
185 <xs:element name="status" type="xs:string" minOccurs="0">
187 <xs:documentation> TODO: specify this - we have considered taking the GO
188 evidence codes as a model for assessing a measure of quality to an
189 annotation. </xs:documentation>
192 <xs:element ref="vamsas:annotationElement" minOccurs="0" maxOccurs="unbounded">
194 <xs:documentation> Annotation Element position maps to ordered positions
195 defined by the sequence of rangeType pos positions or concatenated
196 seg start/end segments. </xs:documentation>
199 <xs:element name="score" minOccurs="0" maxOccurs="unbounded">
201 <xs:documentation> Ordered set of optionally named float values for the
202 whole annotation </xs:documentation>
206 <xs:extension base="xs:float">
207 <xs:attribute name="name" type="xs:string" use="optional"
213 <xs:element ref="vamsas:link" minOccurs="0" maxOccurs="unbounded"/>
214 <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded">
216 <xs:documentation> Note:These are mutable so an application should check
217 them each time. </xs:documentation>
221 <xs:attribute name="id" type="xs:ID" use="optional">
223 <xs:documentation> Primary Key for vamsas object referencing
227 <xs:attribute name="modifiable" type="xs:boolean" use="optional" default="true">
229 <xs:documentation> objects with modifiable=false will not be modified by a
230 vamsas client update </xs:documentation>
233 <xs:attribute name="group" type="xs:string" use="optional" default="">
235 <xs:documentation> Annotation with the same non-empty group name are grouped
236 together </xs:documentation>
239 <xs:attribute name="type" type="xs:string" use="required">
241 <xs:documentation> A Das Feature has both a type and a Type ID. We go the
242 route of requiring the type string to be taken from a controlled
243 vocabulary if an application expects others to make sense of it. The
244 type may qualified - so uniprot:CHAIN is a valid type name, and
245 considered distinct from someotherDB:CHAIN </xs:documentation>
251 <xs:element name="param">
254 <xs:documentation> Specifies a named and typed value used to perform some data
255 transformation. </xs:documentation>
256 <xs:documentation> LATER: experiment with xml validation of property set prototypes
257 for services </xs:documentation>
261 <xs:documentation> Named and typed property string </xs:documentation>
263 <xs:extension base="xs:string">
264 <xs:attribute name="name" type="xs:string" use="required"/>
265 <xs:attribute name="type" type="xs:string" use="required">
267 <xs:documentation> The type specifies how the property will be parsed.
268 Empty property strings are allowed, and can be used to prototype the
269 input to a document. TODO: specify allowed types </xs:documentation>
276 <xs:element name="input">
279 <xs:documentation> Selects all or part of a collection of vamsas objects as a named
280 input to some transformation process. Many inputs with the same name imply a
281 group input (such as a collection of sequences) </xs:documentation>
284 <xs:extension base="vamsas:rangeType">
285 <xs:attribute name="name" type="xs:string" use="required"/>
286 <xs:attribute name="objRef" type="xs:IDREF" use="optional">
288 <xs:documentation> Reference Frame for rangeType specfication
296 <xs:element name="Provenance">
299 <xs:documentation> Defines the origin and series of operations applied directly to
300 the object that references it. </xs:documentation>
303 <xs:element name="entry" maxOccurs="unbounded">
306 <xs:element name="User" type="xs:string">
308 <xs:documentation> Who </xs:documentation>
311 <xs:element name="App" type="xs:string">
313 <xs:documentation> With which application </xs:documentation>
316 <xs:element name="Action" type="xs:string">
318 <xs:documentation> Did what </xs:documentation>
321 <xs:element name="Date" type="xs:date">
323 <xs:documentation> When </xs:documentation>
326 <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded">
328 <xs:documentation> additional information </xs:documentation>
331 <xs:element ref="vamsas:param" minOccurs="0" maxOccurs="unbounded">
333 <xs:documentation> parameter for the action </xs:documentation>
336 <xs:element ref="vamsas:input" minOccurs="0" maxOccurs="unbounded">
338 <xs:documentation> bioinformatic objects input to action
343 <xs:attribute name="id" type="xs:ID" use="optional">
345 <xs:documentation> Primary Key for vamsas object referencing
354 <xs:element name="DataSet">
357 <xs:documentation> A collection of sequences, alignments, trees and other things.
361 <xs:element name="Sequence" maxOccurs="unbounded">
364 <xs:documentation> a primary or secondary sequence record from which all
365 other sequences may be derived </xs:documentation>
368 <xs:extension base="vamsas:SequenceType">
370 <xs:element name="dbRef" minOccurs="0" maxOccurs="unbounded">
372 <xs:documentation> Store a list of database references
373 for this sequence record - with optional mapping
374 from database sequence to the given sequence record </xs:documentation>
380 <xs:element name="map"
381 minOccurs="0" maxOccurs="unbounded">
382 <xs:annotation><xs:documentation> From: Offset to first
383 position in dataset sequence record that
384 this database entry maps to To: Offset
385 to last position in dataset sequence
386 record that this database entry maps to
387 Start: Offset to first last position in
388 database entry that first (or offset)
389 position in sequence maps to End: Offset
390 to last position in database entry that
391 last (offset) position in sequence maps
392 to </xs:documentation>
396 <xs:extension base="vamsas:mapList">
402 <xs:element ref="vamsas:link" minOccurs="0"
403 maxOccurs="unbounded"/>
404 <xs:element ref="vamsas:property" minOccurs="0"
405 maxOccurs="unbounded"/>
407 <xs:attribute name="source" type="xs:string"
410 <xs:documentation> TODO Database Naming
411 Convention: either start using LSID (so
412 change type to URI) or leave this as an
413 uncontrolled/unspecified string ID
417 <xs:attribute name="version" type="xs:string"
420 <xs:documentation> Version must be specified -
424 <xs:attribute name="accessionId" type="xs:string"
427 <xs:documentation> TODO: make some specification
428 of the database field from which this
429 accessionId is taken from - should that be a
430 special property of the dbRef object ?
434 <xs:attribute name="id" type="xs:ID" use="optional">
436 <xs:documentation> Primary Key for vamsas object
437 referencing </xs:documentation>
443 <xs:attribute name="id" type="xs:ID" use="optional">
445 <xs:documentation> Primary Key for vamsas object referencing
449 <xs:attribute name="dictionary" type="xs:string" use="required">
451 <xs:documentation> symbol class for sequence
459 <xs:element name="DataSetAnnotations" minOccurs="0" maxOccurs="unbounded">
462 <xs:documentation> Annotate over positions and regions of a dataset
463 sequence </xs:documentation>
466 <xs:extension base="vamsas:rangeAnnotation">
468 <xs:element ref="vamsas:Provenance"/>
470 <xs:attribute name="seqRef" type="xs:IDREF" use="required">
472 <xs:documentation> annotation is associated with a
473 particular dataset sequence </xs:documentation>
480 <xs:element name="Alignment" minOccurs="0" maxOccurs="unbounded">
483 <xs:element name="AlignmentAnnotation" minOccurs="0"
484 maxOccurs="unbounded">
486 <xs:documentation> This is annotation over the coordinate frame
487 defined by all the columns in the alignment.
492 <xs:extension base="vamsas:rangeAnnotation">
494 <xs:element ref="vamsas:Provenance"/>
496 <xs:attribute name="graph" type="xs:boolean"
499 <xs:documentation> TODO: decide if this flag is
500 redundant - when true it would suggest that
501 the annotationElement values together form a
502 graph </xs:documentation>
509 <xs:element ref="vamsas:Tree" minOccurs="0" maxOccurs="unbounded"/>
510 <xs:element name="alignmentSequence" maxOccurs="unbounded">
513 <xs:extension base="vamsas:SequenceType">
515 <xs:element name="AlignmentSequenceAnnotation"
516 minOccurs="0" maxOccurs="unbounded">
519 <xs:documentation> Annotate over
520 positions and regions of the
521 ungapped sequence in the context of
522 the alignment </xs:documentation>
527 base="vamsas:rangeAnnotation">
530 ref="vamsas:Provenance"/>
532 <xs:attribute name="graph"
533 type="xs:boolean" use="required">
535 <xs:documentation> TODO:
536 decide if this flag is
537 redundant - when true it
538 would suggest that the
539 annotationElement values
540 together form a graph
547 This replaces the flat list of sequenceFeatures.
548 <xs:element name="AlignmentFeatures" minOccurs="0" maxOccurs="unbounded"><xs:complexType><xs:annotation>
549 <xs:documentation>Annotate over positions and regions of the alignment</xs:documentation>
550 </xs:annotation><xs:complexContent>
551 <xs:extension base="vamsas:rangeFeature">
552 <xs:attribute name="seqRef" type="xs:IDREF" use="optional">
553 <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>
556 </xs:complexContent></xs:complexType></xs:element> -->
560 <xs:attribute name="id" type="xs:ID" use="optional">
562 <xs:documentation> Primary Key for vamsas object
563 referencing </xs:documentation>
566 <xs:attribute name="refid" type="xs:IDREF"
569 <xs:documentation> Dataset Sequence from which
570 this alignment sequence is taken from
578 <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded">
580 <xs:documentation> typical properties may be additional
581 alignment score objects </xs:documentation>
584 <xs:element ref="vamsas:Provenance"/>
586 <xs:attribute name="gapChar" type="xs:string" use="required"/>
587 <xs:attribute name="aligned" type="xs:boolean" use="optional"/>
588 <xs:attribute name="id" type="xs:ID" use="optional">
590 <xs:documentation> Primary Key for vamsas object referencing
594 <xs:attribute name="modifiable" type="xs:boolean" use="optional"
597 <xs:documentation> objects with modifiable=false will not be
598 modified by a vamsas client update </xs:documentation>
603 <xs:element ref="vamsas:Tree" minOccurs="0" maxOccurs="unbounded"/>
604 <xs:element ref="vamsas:Provenance"/>
606 <xs:attribute name="id" type="xs:ID" use="optional">
608 <xs:documentation> Primary Key for vamsas object referencing </xs:documentation>
613 <xs:element name="annotationElement">
616 <xs:documentation> per-site symbolic and/or quantitative annotation </xs:documentation>
617 <xs:documentation> SecondaryStructure and display character (from Jalview) have been
618 subsumed into the glyph element </xs:documentation>
621 <xs:element name="description" type="xs:string" minOccurs="0">
623 <xs:documentation> Free text at this position </xs:documentation>
626 <xs:element name="glyph" minOccurs="0" maxOccurs="unbounded">
628 <xs:documentation> Discrete symbol - possibly graphically represented
633 <xs:extension base="xs:string">
634 <xs:attribute name="dict" type="xs:string" use="optional"
637 <xs:documentation> specifies the symbol dictionary for this
638 glyph - eg utf8 (the default), aasecstr_3 or
639 kd_hydrophobicity - the content is not validated so
640 applications must ensure they gracefully deal with
641 invalid entries here </xs:documentation>
642 <xs:documentation> TODO: specify a minimum list of glyph
643 dictionaries to get us started and provide a way for the
644 vamsasClient to validate their content if regexes are
645 specified </xs:documentation>
652 <xs:element name="value" type="xs:float" minOccurs="0" maxOccurs="unbounded">
654 <xs:documentation> Ordered set of float values - an application may treat
655 the values together as a vector with common support for a set of
656 annotation elements - but this is, again, not validated so applications
657 should deal gracefully with varying numbers of dimensions
662 <xs:attribute name="position" type="xs:integer" use="required">
664 <xs:documentation> position with respect to the coordinate frame defined by a
665 rangeType specification </xs:documentation>
668 <xs:attribute name="after" type="xs:boolean" use="optional" default="false">
670 <xs:documentation> true means the annotation element appears between the
671 specified position and the next </xs:documentation>
674 <xs:attribute name="id" type="xs:ID" use="optional">
676 <xs:documentation> Primary Key for vamsas object referencing </xs:documentation>
681 <xs:complexType name="SequenceType">
683 <xs:element name="sequence" type="xs:string"/>
684 <xs:element name="name" type="xs:string"/>
685 <xs:element name="description" type="xs:string" minOccurs="0"/>
686 <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded">
688 <xs:documentation> additional typed properties </xs:documentation>
691 <xs:element name="mapping" minOccurs="0" maxOccurs="unbounded">
694 <xs:extension base="vamsas:mapList">
695 <xs:attribute name="onto" type="xs:IDREF" use="required">
697 <xs:documentation> object to which the mapping is being mapped
706 <xs:attribute name="start" type="xs:integer" use="required"/>
707 <xs:attribute name="end" type="xs:integer" use="required"/>
709 <xs:element name="ApplicationData">
712 <xs:documentation> Data specific to a particular type and version of vamsas
713 application </xs:documentation>
716 <xs:extension base="vamsas:appData">
718 <xs:element name="User" minOccurs="0" maxOccurs="unbounded">
721 <xs:extension base="vamsas:appData">
723 <xs:documentation> Data available to just a particular
724 user </xs:documentation>
726 <xs:attribute name="fullname" type="xs:string"
728 <xs:attribute name="organization" type="xs:string"
734 <xs:element name="Common" minOccurs="0">
737 <xs:extension base="vamsas:appData"/>
741 <xs:element name="Instance" minOccurs="0" maxOccurs="unbounded">
744 <xs:extension base="vamsas:appData">
746 <xs:documentation> Data available to just a specific
747 instance of the application </xs:documentation>
748 <xs:documentation> VAMSAS/Pierre: Is this data volatile
749 ? Application instances may not be accessible after
750 the session has closed - the user may have to be
751 presented with the option of picking up the data in
752 that instance </xs:documentation>
754 <xs:attribute name="urn" type="xs:string" use="required"/>
760 <xs:attribute name="version" type="xs:string" use="required">
762 <xs:documentation> Version string describing the application specific
763 data storage version used</xs:documentation>
766 <xs:attribute name="name" type="xs:string" use="required">
768 <xs:documentation> Canonical name of application </xs:documentation>
775 <xs:element name="Attachment">
778 <xs:extension base="vamsas:appData">
780 <xs:documentation> General data container to attach a typed data object to
781 any vamsas object </xs:documentation>
783 <xs:attribute name="compressed" type="xs:boolean" use="optional" default="false">
785 <xs:documentation> true implies data will be decompresses with Zip
786 before presenting to application </xs:documentation>
789 <xs:attribute name="type" type="xs:string" use="required">
791 <xs:documentation> Type of arbitrary data - TODO: decide format - use
792 (extended) MIME types ? </xs:documentation>
795 <xs:attribute name="objectref" type="xs:IDREF" use="required">
797 <xs:documentation> Object the arbitrary data is associated with
801 <xs:attribute name="id" type="xs:ID" use="optional">
803 <xs:documentation> Primary Key for vamsas object referencing
811 <xs:complexType name="appData">
813 <xs:element name="data" type="xs:base64Binary"/>
814 <xs:element name="dataReference" type="xs:string"/>
817 <xs:complexType name="mapList">
818 <xs:attribute name="from" type="xs:integer" use="optional" default="0">
820 <xs:documentation> Offset to first position in dataset sequence record that start
821 position on 'onto' maps to </xs:documentation>
824 <xs:attribute name="to" type="xs:integer" use="optional" default="0">
826 <xs:documentation> Offset to last position in dataset sequence record that end
827 position on 'onto' maps to </xs:documentation>
830 <xs:attribute name="start" type="xs:integer" use="required">
832 <xs:documentation> Offset to first position in database entry that first (or offset)
833 position in sequence maps to </xs:documentation>
836 <xs:attribute name="end" type="xs:integer" use="required">
838 <xs:documentation> Offset to last position in database entry that last (offset)
839 position in sequence maps to </xs:documentation>