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" targetNamespace="http://www.vamsas.org" elementFormDefault="qualified" attributeFormDefault="unqualified">
7 Vorba ID - Vamsas Object Request Broker Address ID (name
8 needs to be worked on): Suggest it could be of the form
9 documentRoot/datasetName/SequenceUID for a dataset sequence.
11 documentRoot/datasetName/AlignmentId/SequenceUID for an
12 aligned form of a dataset sequence
16 <xs:element name="VAMSAS">
19 contains unassociated trees and a number of analysis
25 <xs:element ref="vamsas:Tree" minOccurs="0" maxOccurs="unbounded"/>
26 <xs:element ref="vamsas:DataSet" minOccurs="0" maxOccurs="unbounded"/>
28 <xs:attribute name="id" type="xs:ID" use="optional">
31 Primary Key for vamsas object referencing
35 <xs:attribute name="modifiable" type="xs:boolean" use="optional" default="true">
38 objects with modifiable=false will not be
39 modified by a vamsas client update
47 Properties. Generally, these are mutable so an application
48 should check them each time. This may change depending on
49 the context of the property
52 <xs:element name="Tree">
56 Contains a named collection of trees
60 way of referencing leaves of global tree for any
61 sequence/alignment object.
62 SUggestion 1: Each named tree leafnode has a unique id (which may be unique in combination with trees own vorba ID).
63 Dataset sequences can be tagged with a property "vamsas:tree_leaf"
67 <xs:element name="title" type="xs:string" minOccurs="0"/>
68 <xs:element name="newick" maxOccurs="unbounded">
71 <xs:extension base="xs:string">
72 <xs:attribute name="title" type="xs:string" use="optional"/>
73 <xs:attribute name="id" type="xs:ID" use="optional">
76 Primary Key for vamsas
81 <xs:attribute name="modifiable" type="xs:boolean" use="optional" default="true">
85 modifiable=false will not be
86 modified by a vamsas client
95 <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded"/>
96 <xs:element ref="vamsas:Provenance"/>
98 <xs:attribute name="id" type="xs:ID" use="optional">
101 Primary Key for vamsas object referencing
105 <xs:attribute name="modifiable" type="xs:boolean" use="optional" default="true">
108 objects with modifiable=false will not be
109 modified by a vamsas client update
115 <xs:element name="property">
120 Named and typed property string
123 <xs:extension base="xs:string">
124 <xs:attribute name="name" type="xs:string" use="required"/>
125 <xs:attribute name="type" type="xs:string" use="required">
128 The type specifies how the property will
129 be parsed. Empty property strings are
130 allowed, and can be used to prototype
131 the input to a document. TODO: specify
140 <xs:element name="link">
144 Primitive labelled URI object
148 <xs:extension base="xs:string">
149 <xs:attribute name="href" type="xs:anyURI">
151 <xs:documentation>The URI</xs:documentation>
158 <xs:complexType name="rangeType" abstract="true">
161 Specify an ordered set of positions and/or regions on the principle
162 dimension of some associated vamsas object
165 Keeping to jaxb-1.0 specification for the moment - this
166 choice should become a substitution group when we use
167 jaxb-2.0 capable bindings
171 <xs:element name="pos" maxOccurs="unbounded">
174 a position within the associated object's
179 <xs:attribute name="i" type="xs:int" use="required"/>
182 <xs:element name="seg" maxOccurs="unbounded">
185 a region from start to end, with flag for
186 inclusivity of terminii
190 <xs:attribute name="start" type="xs:int" use="required"/>
191 <xs:attribute name="end" type="xs:int" use="required"/>
192 <xs:attribute name="inclusive" type="xs:boolean" use="required">
195 when false, a consecutive range like
196 'start=1, end=2' means the region lying
197 after position 1 and before position 2
204 <!-- Do we really need this - a position could be just a seg with start=end and inclusive=true -->
206 <xs:complexType name="rangeAnnotation">
209 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.
213 <xs:extension base="vamsas:rangeType">
215 <xs:element name="label" type="xs:string" minOccurs="0">
218 Short, meaningful name for the annotation - if this is absent, then the type string should be used in its place.
222 <xs:element name="description" type="xs:string" minOccurs="0">
225 Human readable description of the annotation
229 <xs:element name="status" type="xs:string" minOccurs="0">
232 TODO: specify this - we have considered taking the GO evidence codes as a model for assessing a measure of quality to an annotation.
236 <xs:element ref="vamsas:annotationElement" minOccurs="0" maxOccurs="unbounded">
239 Annotation Element position maps to
240 ordered positions defined by the
241 sequence of rangeType pos positions or
242 concatenated seg start/end segments.
246 <xs:element name="score" minOccurs="0" maxOccurs="unbounded">
249 Ordered set of optionally named float
250 values for the whole annotation
255 <xs:extension base="xs:float">
256 <xs:attribute name="name" type="xs:string" use="optional" default="score"/>
261 <xs:element ref="vamsas:link" minOccurs="0" maxOccurs="unbounded"/>
262 <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded">
265 Note:These are mutable so an application
266 should check them each time.
271 <xs:attribute name="id" type="xs:ID" use="optional">
274 Primary Key for vamsas object referencing
278 <xs:attribute name="modifiable" type="xs:boolean" use="optional" default="true">
281 objects with modifiable=false will not be
282 modified by a vamsas client update
286 <xs:attribute name="group" type="xs:string" use="optional" default="">
289 Annotation with the same non-empty group
290 name are grouped together
294 <xs:attribute name="type" type="xs:string" use="required">
297 A Das Feature has both a type and a Type ID.
298 We go the route of requiring the type string
299 to be taken from a controlled vocabulary if
300 an application expects others to make sense
302 The type may qualified - so uniprot:CHAIN is a valid type name,
303 and considered distinct from someotherDB:CHAIN
310 <xs:element name="param">
314 Specifies a named and typed value used to perform
315 some data transformation.
318 LATER: experiment with xml validation of property
319 set prototypes for services
325 Named and typed property string
328 <xs:extension base="xs:string">
329 <xs:attribute name="name" type="xs:string" use="required"/>
330 <xs:attribute name="type" type="xs:string" use="required">
333 The type specifies how the property will
334 be parsed. Empty property strings are
335 allowed, and can be used to prototype
336 the input to a document. TODO: specify
345 <xs:element name="input">
349 Selects all or part of a collection of vamsas
350 objects as a named input to some transformation
351 process. Many inputs with the same name imply a
352 group input (such as a collection of sequences)
356 <xs:extension base="vamsas:rangeType">
357 <xs:attribute name="name" type="xs:string" use="required"/>
358 <xs:attribute name="objRef" type="xs:IDREF" use="optional">
361 Reference Frame for rangeType
370 <xs:element name="Provenance">
374 Defines the origin and series of operations applied
375 directly to the object that references it.
379 <xs:element name="entry" maxOccurs="unbounded">
382 <xs:element name="User" type="xs:string">
389 <xs:element name="App" type="xs:string">
392 With which application
396 <xs:element name="Action" type="xs:string">
403 <xs:element name="Date" type="xs:date">
410 <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded">
413 additional information
417 <xs:element ref="vamsas:param" minOccurs="0" maxOccurs="unbounded">
420 parameter for the action
424 <xs:element ref="vamsas:input" minOccurs="0" maxOccurs="unbounded">
427 bioinformatic objects input to
433 <xs:attribute name="id" type="xs:ID" use="optional">
436 Primary Key for vamsas object
446 <xs:element name="DataSet">
450 A collection of sequences, alignments, trees and
455 <xs:element name="Sequence" maxOccurs="unbounded">
459 a primary or secondary sequence record
460 from which all other sequences may be
465 <xs:extension base="vamsas:SequenceType">
467 <xs:element name="dbRef" minOccurs="0" maxOccurs="unbounded">
470 Store a list of database
472 sequence record - with
473 optional mapping from
474 database sequence to the
475 given sequence record
482 <xs:element name="map" minOccurs="0" maxOccurs="unbounded">
484 <xs:attribute name="from" type="xs:integer" use="optional" default="0">
504 <xs:attribute name="to" type="xs:integer" use="optional" default="0">
524 <xs:attribute name="start" type="xs:integer" use="required">
545 <xs:attribute name="end" type="xs:integer" use="required">
566 <xs:element ref="vamsas:link" minOccurs="0" maxOccurs="unbounded"/>
567 <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded"/>
569 <xs:attribute name="source" type="xs:string" use="required">
580 uncontrolled/unspecified
585 <xs:attribute name="version" type="xs:string" use="required">
593 <xs:attribute name="accessionId" type="xs:string" use="required">
609 <xs:attribute name="id" type="xs:ID" use="optional">
621 <xs:attribute name="id" type="xs:ID" use="optional">
624 Primary Key for vamsas
629 <xs:attribute name="dictionary" type="xs:string" use="required">
632 symbol class for sequence
640 <xs:element name="DataSetAnnotations" minOccurs="0" maxOccurs="unbounded">
644 Annotate over positions and regions of a
649 <xs:extension base="vamsas:rangeAnnotation">
651 <xs:element ref="vamsas:Provenance"/>
653 <xs:attribute name="seqRef" type="xs:IDREF" use="required">
656 annotation is associated
657 with a particular dataset
666 <xs:element name="Alignment" minOccurs="0" maxOccurs="unbounded">
669 <xs:element name="AlignmentAnnotation" minOccurs="0" maxOccurs="unbounded">
672 This is annotation over the
673 coordinate frame defined by all
674 the columns in the alignment.
679 <xs:extension base="vamsas:rangeAnnotation">
681 <xs:element ref="vamsas:Provenance"/>
683 <xs:attribute name="graph" type="xs:boolean" use="required">
701 <xs:element ref="vamsas:Tree" minOccurs="0" maxOccurs="unbounded"/>
702 <xs:element name="alignmentSequence" maxOccurs="unbounded">
705 <xs:extension base="vamsas:SequenceType">
707 <xs:element name="AlignmentSequenceAnnotation" minOccurs="0" maxOccurs="unbounded">
727 <xs:extension base="vamsas:rangeAnnotation">
729 <xs:element ref="vamsas:Provenance"/>
731 <xs:attribute name="graph" type="xs:boolean" use="required">
761 This replaces the flat list of sequenceFeatures.
762 <xs:element name="AlignmentFeatures" minOccurs="0" maxOccurs="unbounded"><xs:complexType><xs:annotation>
763 <xs:documentation>Annotate over positions and regions of the alignment</xs:documentation>
764 </xs:annotation><xs:complexContent>
765 <xs:extension base="vamsas:rangeFeature">
766 <xs:attribute name="seqRef" type="xs:IDREF" use="optional">
767 <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>
770 </xs:complexContent></xs:complexType></xs:element> -->
774 <xs:attribute name="id" type="xs:ID" use="optional">
783 <xs:attribute name="refid" type="xs:IDREF" use="required">
798 <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded">
801 typical properties may be
802 additional alignment score
807 <xs:element ref="vamsas:Provenance"/>
809 <xs:attribute name="gapChar" type="xs:string" use="required"/>
810 <xs:attribute name="aligned" type="xs:boolean" use="optional"/>
811 <xs:attribute name="id" type="xs:ID" use="optional">
814 Primary Key for vamsas object
819 <xs:attribute name="modifiable" type="xs:boolean" use="optional" default="true">
822 objects with modifiable=false will
823 not be modified by a vamsas client
830 <xs:element ref="vamsas:Tree" minOccurs="0" maxOccurs="unbounded"/>
831 <xs:element ref="vamsas:Provenance"/>
833 <xs:attribute name="id" type="xs:ID" use="optional">
836 Primary Key for vamsas object referencing
842 <xs:element name="annotationElement">
846 per-site symbolic and/or quantitative annotation
849 SecondaryStructure and display character (from
850 Jalview) have been subsumed into the glyph element
854 <xs:element name="description" type="xs:string" minOccurs="0">
857 Free text at this position
861 <xs:element name="glyph" minOccurs="0" maxOccurs="unbounded">
864 Discrete symbol - possibly graphically
870 <xs:extension base="xs:string">
871 <xs:attribute name="dict" type="xs:string" use="optional" default="utf8">
875 dictionary for this glyph -
876 eg utf8 (the default),
878 kd_hydrophobicity - the
879 content is not validated so
880 applications must ensure
881 they gracefully deal with
885 TODO: specify a minimum list
886 of glyph dictionaries to get
887 us started and provide a way
888 for the vamsasClient to
889 validate their content if
890 regexes are specified
898 <xs:element name="value" type="xs:float" minOccurs="0" maxOccurs="unbounded">
901 Ordered set of float values - an application
902 may treat the values together as a vector
903 with common support for a set of annotation
904 elements - but this is, again, not validated
905 so applications should deal gracefully with
906 varying numbers of dimensions
911 <xs:attribute name="position" type="xs:integer" use="required">
914 position with respect to the coordinate frame
915 defined by a rangeType specification
919 <xs:attribute name="after" type="xs:boolean" use="optional" default="false">
922 true means the annotation element appears
923 between the specified position and the next
927 <xs:attribute name="id" type="xs:ID" use="optional">
930 Primary Key for vamsas object referencing
936 <xs:complexType name="SequenceType">
938 <xs:element name="sequence" type="xs:string"/>
939 <xs:element name="name" type="xs:string"/>
940 <xs:element name="description" type="xs:string" minOccurs="0"/>
941 <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded">
944 additional typed properties
948 <xs:element ref="vamsas:mapping" minOccurs="0" maxOccurs="unbounded"/>
950 <xs:attribute name="start" type="xs:integer" use="required"/>
951 <xs:attribute name="end" type="xs:integer" use="required"/>
953 <xs:element name="ApplicationData">
957 Data specific to a particular type and version of
962 <xs:extension base="vamsas:appData">
964 <xs:element name="User" minOccurs="0" maxOccurs="unbounded">
967 <xs:extension base="vamsas:appData">
970 Data available to just a
974 <xs:attribute name="fullname" type="xs:string" use="required"/>
975 <xs:attribute name="organization" type="xs:string" use="required"/>
980 <xs:element name="Common" minOccurs="0">
983 <xs:extension base="vamsas:appData"/>
987 <xs:element name="Instance" minOccurs="0" maxOccurs="unbounded">
990 <xs:extension base="vamsas:appData">
993 Data available to just a
994 specific instance of the
998 VAMSAS/Pierre: Is this
1000 Application instances
1001 may not be accessible
1002 after the session has
1003 closed - the user may
1004 have to be presented
1006 picking up the data in
1010 <xs:attribute name="urn" type="xs:string" use="required"/>
1012 </xs:complexContent>
1016 <xs:attribute name="version" type="xs:string" use="required">
1019 Version string describing the application specific data storage version used</xs:documentation>
1022 <xs:attribute name="name" type="xs:string" use="required">
1025 Canonical name of application
1030 </xs:complexContent>
1033 <xs:element name="Attachment">
1036 <xs:extension base="vamsas:appData">
1039 General data container to attach a typed
1040 data object to any vamsas object
1043 <xs:attribute name="compressed" type="xs:boolean" use="optional" default="false">
1046 true implies data will be decompresses
1047 with Zip before presenting to
1052 <xs:attribute name="type" type="xs:string" use="required">
1055 Type of arbitrary data - TODO: decide
1056 format - use (extended) MIME types ?
1060 <xs:attribute name="objectref" type="xs:IDREF" use="required">
1063 Object the arbitrary data is associated
1068 <xs:attribute name="id" type="xs:ID" use="optional">
1071 Primary Key for vamsas object
1077 </xs:complexContent>
1080 <xs:complexType name="appData">
1082 <xs:element name="data" type="xs:base64Binary"/>
1083 <xs:element name="dataReference" type="xs:string"/>
1086 <xs:element name="mapping">
1089 <xs:element name="objectA">
1092 <xs:extension base="vamsas:rangeType">
1093 <xs:attribute name="objRefA" type="xs:IDREF" use="required"/>
1095 </xs:complexContent>
1098 <xs:element name="objectB">
1101 <xs:extension base="vamsas:rangeType">
1102 <xs:attribute name="objRefB" type="xs:IDREF" use="required"/>
1104 </xs:complexContent>