post-meeting refinements and commenting.
authorjprocter <jprocter@compbio.dundee.ac.uk>
Mon, 22 May 2006 15:50:20 +0000 (15:50 +0000)
committerjprocter <jprocter@compbio.dundee.ac.uk>
Mon, 22 May 2006 15:50:20 +0000 (15:50 +0000)
git-svn-id: https://svn.lifesci.dundee.ac.uk/svn/repository/trunk@221 be28352e-c001-0410-b1a7-c7978e42abec

schemas/vamsas.xsd
schemas/vamsasDocument.xsd

index 25ccc55..e735b8b 100644 (file)
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by MSD (EMBL OUTSTATION THE EBI WELLCOME TRUST GENOME CAMPUS) -->
 <!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by lj (jl) -->
-<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">
-       <xs:complexType name="rangeType">
-               <xs:annotation>
-                       <xs:documentation>Specify positions and/or regions on the principle dimension of some associated vamsas object
-                       TODO: this is abstract. should provide context to scope the range of ids for each use</xs:documentation>
-               <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
-               </xs:documentation></xs:annotation>
-               <!--  Do we really need this - a position could be just a seg with start=end and inclusive=true -->
-               <xs:choice>
-                       <xs:element name="pos" maxOccurs="unbounded" minOccurs="1">
-                               <xs:annotation><xs:documentation>a position within the associated object's coordinate system</xs:documentation></xs:annotation>
-                               <xs:complexType>
-                                       <xs:attribute name="i" type="xs:int" use="required"/>
-                               </xs:complexType>
-                       </xs:element>
-                       <xs:element name="seg" maxOccurs="unbounded" minOccurs="1">
-                               <xs:annotation><xs:documentation>a region from start to end, with flag for inclusivity of terminii</xs:documentation></xs:annotation>
-                               <xs:complexType>
-                                       <xs:attribute name="start" type="xs:int" use="required"/>
-                                       <xs:attribute name="end" type="xs:int" use="required"/>
-                                       <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>
-                               </xs:complexType>
-                       </xs:element>
-               </xs:choice>
-       </xs:complexType>
+<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">
+       <xs:annotation>
+               <xs:documentation>
+                       Vorba ID - Vamsas Object Request Broker Address ID (name
+                       needs to be worked on): Suggest it could be of the form
+                       documentRoot/datasetName/SequenceUID for a dataset sequence.
+                       Alignment sequence:
+                       documentRoot/datasetName/AlignmentId/SequenceUID for an
+                       aligned form of a dataset sequence
+
+               </xs:documentation>
+       </xs:annotation>
        <xs:element name="VAMSAS">
-               <xs:annotation><xs:documentation>contains unassociated trees and a number of analysis sets</xs:documentation></xs:annotation>
+               <xs:annotation>
+                       <xs:documentation>
+                               contains unassociated trees and a number of analysis
+                               sets
+                       </xs:documentation>
+               </xs:annotation>
                <xs:complexType>
                        <xs:sequence>
-                               <xs:element ref="vamsas:Tree" minOccurs="0" maxOccurs="unbounded"/>
-                               <xs:element ref="vamsas:DataSet" minOccurs="0" maxOccurs="unbounded"/>
+                               <xs:element ref="vamsas:Tree" minOccurs="0"
+                                       maxOccurs="unbounded" />
+                               <xs:element ref="vamsas:DataSet" minOccurs="0"
+                                       maxOccurs="unbounded" />
                        </xs:sequence>
-                       <xs:attribute name="id" type="xs:ID" use="optional">                    <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
+                       <xs:attribute name="id" type="xs:ID" use="optional">
+                               <xs:annotation>
+                                       <xs:documentation>
+                                               Primary Key for vamsas object referencing
+                                       </xs:documentation>
+                               </xs:annotation>
                        </xs:attribute>
-                       <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>
+                       <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>
                        </xs:attribute>
                </xs:complexType>
        </xs:element>
        <xs:annotation>
-               <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>
-       </xs:annotation>        
+               <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>
+       </xs:annotation>
        <xs:element name="Tree">
                <xs:complexType>
-                       <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>
+                       <xs:annotation>
+                               <xs:documentation>
+                                       Contains a named collection of trees
+                               </xs:documentation>
+                               <xs:documentation>
+                                TODO: define
+                                       way of referencing leaves of global tree for any
+                                       sequence/alignment object.
+                               SUggestion 1: Each named tree leafnode has a unique id (which may be unique in combination with trees own vorba ID). 
+                               Dataset sequences can be tagged with a property "vamsas:tree_leaf"
+                               </xs:documentation>
+                       </xs:annotation>
                        <xs:sequence>
-                               <xs:element name="title" type="xs:string" minOccurs="0"/>
+                               <xs:element name="title" type="xs:string" minOccurs="0" />
                                <xs:element name="newick" maxOccurs="unbounded">
                                        <xs:complexType>
                                                <xs:simpleContent>
                                                        <xs:extension base="xs:string">
-                                                               <xs:attribute name="title" type="xs:string" use="optional"/>
-                                                               <xs:attribute name="id" type="xs:ID"  use="optional">
-                                                                       <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
+                                                               <xs:attribute name="title"
+                                                                       type="xs:string" use="optional" />
+                                                               <xs:attribute name="id" type="xs:ID"
+                                                                       use="optional">
+                                                                       <xs:annotation>
+                                                                               <xs:documentation>
+                                                                                       Primary Key for vamsas
+                                                                                       object referencing
+                                                                               </xs:documentation>
+                                                                       </xs:annotation>
                                                                </xs:attribute>
-                                                               <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>
+                                                               <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>
                                                                </xs:attribute>
                                                        </xs:extension>
                                                </xs:simpleContent>
                                        </xs:complexType>
                                </xs:element>
-                               <xs:element ref="vamsas:property" maxOccurs="unbounded" minOccurs="0"/>
-                               <xs:element ref="vamsas:Provenance"/>
+                               <xs:element ref="vamsas:property" maxOccurs="unbounded"
+                                       minOccurs="0" />
+                               <xs:element ref="vamsas:Provenance" />
                        </xs:sequence>
-                       <xs:attribute name="id" type="xs:ID"  use="optional">                   <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
+                       <xs:attribute name="id" type="xs:ID" use="optional">
+                               <xs:annotation>
+                                       <xs:documentation>
+                                               Primary Key for vamsas object referencing
+                                       </xs:documentation>
+                               </xs:annotation>
                        </xs:attribute>
-                       <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>
+                       <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>
                        </xs:attribute>
-                       </xs:complexType>
+               </xs:complexType>
        </xs:element>
        <xs:element name="property">
-               <xs:complexType><xs:simpleContent>
-                       <xs:annotation><xs:documentation>Named and typed property string</xs:documentation></xs:annotation>
+               <xs:complexType>
+                       <xs:simpleContent>
+                               <xs:annotation>
+                                       <xs:documentation>
+                                               Named and typed property string
+                                       </xs:documentation>
+                               </xs:annotation>
+                               <xs:extension base="xs:string">
+                                       <xs:attribute name="name" type="xs:string"
+                                               use="required" />
+                                       <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>
+                               </xs:extension>
+                       </xs:simpleContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:complexType name="uri">
+               <xs:annotation>
+                       <xs:documentation>
+                               Primitive labelled URI object
+                       </xs:documentation>
+               </xs:annotation>
+               <xs:simpleContent>
                        <xs:extension base="xs:string">
-                               <xs:attribute name="name" type="xs:string" use="required"/>
-                                       <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>
+                               <xs:attribute name="href" type="xs:anyURI">
+                                       <xs:annotation>
+                                               <xs:documentation>The URI</xs:documentation>
+                                       </xs:annotation>
+                               </xs:attribute>
                        </xs:extension>
-               </xs:simpleContent></xs:complexType>
-       </xs:element>
+               </xs:simpleContent>
+       </xs:complexType>
+       <xs:complexType name="rangeType" abstract="true">
+               <xs:annotation>
+                       <xs:documentation>
+                               Specify an ordered set of positions and/or regions on the principle
+                               dimension of some associated vamsas object
+                       </xs:documentation>
+                       <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
+                       </xs:documentation>
+               </xs:annotation>
+               <!--  Do we really need this - a position could be just a seg with start=end and inclusive=true -->
+               <xs:choice>
+                       <xs:element name="pos" maxOccurs="unbounded"
+                               minOccurs="1">
+                               <xs:annotation>
+                                       <xs:documentation>
+                                               a position within the associated object's
+                                               coordinate system
+                                       </xs:documentation>
+                               </xs:annotation>
+                               <xs:complexType>
+                                       <xs:attribute name="i" type="xs:int" use="required" />
+                               </xs:complexType>
+                       </xs:element>
+                       <xs:element name="seg" maxOccurs="unbounded"
+                               minOccurs="1">
+                               <xs:annotation>
+                                       <xs:documentation>
+                                               a region from start to end, with flag for
+                                               inclusivity of terminii
+                                       </xs:documentation>
+                               </xs:annotation>
+                               <xs:complexType>
+                                       <xs:attribute name="start" type="xs:int"
+                                               use="required" />
+                                       <xs:attribute name="end" type="xs:int"
+                                               use="required" />
+                                       <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>
+                               </xs:complexType>
+                       </xs:element>
+               </xs:choice>
+       </xs:complexType>
        <xs:complexType name="rangeAnnotation">
                <xs:annotation>
-                       <xs:documentation>provenance contains source of annotation</xs:documentation>
-                       <xs:documentation>polymorphism for having collection of single points,
-                               or ordered set of regions with polarity (start.lt.end or end.lt.start)</xs:documentation>
+                       <xs:documentation>
+                               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.
+                       </xs:documentation>
                </xs:annotation>
                <xs:complexContent>
                        <xs:extension base="vamsas:rangeType">
                                <xs:sequence>
-                                       <xs:element name="description" type="xs:string" minOccurs="0"/>
-                                       <xs:element name="status" type="xs:string" minOccurs="0"/>
-                                       <xs:element ref="vamsas:annotationElement" minOccurs="0" maxOccurs="unbounded"/>
-                                       <xs:element ref="vamsas:Provenance" maxOccurs="1" minOccurs="1"/>
-                                       <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded"><xs:annotation>
-                                               <xs:documentation>Note:These are mutable so an application should check them each time.</xs:documentation>
-                                       </xs:annotation></xs:element>
+                                       <xs:element name="label" type="xs:string"
+                                               minOccurs="0" >
+                                               <xs:annotation>
+                                               <xs:documentation>
+                                                       Short, meaningful name for the annotation - if this is absent, then the type string should be used in its place.
+                                               </xs:documentation>
+                                               </xs:annotation>
+                                               </xs:element>
+                                       <xs:element name="description" type="xs:string"
+                                               minOccurs="0" >
+                                               <xs:annotation>
+                                               <xs:documentation>
+                                                       Human readable description of the annotation
+                                               </xs:documentation>
+                                               </xs:annotation>
+                                               </xs:element>
+                                       <xs:element name="status" type="xs:string"
+                                               minOccurs="0" >
+                                               <xs:annotation><xs:documentation>
+                                                       TODO: specify this - we have considered taking the GO evidence codes as a model for assessing a measure of quality to an annotation.
+                                               </xs:documentation></xs:annotation>
+                                               </xs:element>
+                                       <xs:element ref="vamsas:annotationElement"
+                                               minOccurs="0" maxOccurs="unbounded">
+                                               <xs:annotation>
+                                                       <xs:documentation>
+                                                               Annotation Element position maps to
+                                                               ordered positions defined by the
+                                                               sequence of rangeType pos positions or
+                                                               concatenated seg start/end segments.
+                                                       </xs:documentation>
+                                               </xs:annotation>
+                                       </xs:element>
+                                       <xs:element name="score" minOccurs="0"
+                                               maxOccurs="unbounded">
+                                               <xs:annotation>
+                                                       <xs:documentation>
+                                                               Ordered set of optionally named float
+                                                               values for the whole annotation
+                                                       </xs:documentation>
+                                               </xs:annotation>
+                                               <xs:complexType>
+                                                       <xs:simpleContent>
+                                                               <xs:extension base="xs:float">
+                                                                       <xs:attribute name="name"
+                                                                               type="xs:string" use="optional" default="score">
+                                                                       </xs:attribute>
+                                                               </xs:extension>
+                                                       </xs:simpleContent>
+                                               </xs:complexType>
+                                       </xs:element>
+                                       <xs:element name="url" type="vamsas:uri"
+                                               minOccurs="0" maxOccurs="unbounded" />
+                                       <xs:element ref="vamsas:property" minOccurs="0"
+                                               maxOccurs="unbounded">
+                                               <xs:annotation>
+                                                       <xs:documentation>
+                                                               Note:These are mutable so an application
+                                                               should check them each time.
+                                                       </xs:documentation>
+                                               </xs:annotation>
+                                       </xs:element>
                                </xs:sequence>
                                <xs:attribute name="id" type="xs:ID" use="optional">
-                                                       <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
+                                       <xs:annotation>
+                                               <xs:documentation>
+                                                       Primary Key for vamsas object referencing
+                                               </xs:documentation>
+                                       </xs:annotation>
+                               </xs:attribute>
+                               <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>
                                </xs:attribute>
-                               <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>
+                               <xs:attribute name="group" type="xs:string"
+                                       use="optional" default="">
+                                       <xs:annotation>
+                                               <xs:documentation>
+                                                       Annotation with the same non-empty group
+                                                       name are grouped together
+                                               </xs:documentation>
+                                       </xs:annotation>
+                               </xs:attribute>
+                               <xs:attribute name="type" type="xs:string"
+                                       use="required">
+                                       <xs:annotation>
+                                               <xs:documentation>
+                                                       A Das Feature has both a type and a Type ID.
+                                                       We go the route of requiring the type string
+                                                       to be taken from a controlled vocabulary if
+                                                       an application expects others to make sense
+                                                       of it. 
+                                                       The type may qualified - so uniprot:CHAIN is a valid type name, 
+                                                       and considered distinct from someotherDB:CHAIN
+                                               </xs:documentation>
+                                       </xs:annotation>
                                </xs:attribute>
-                               <xs:attribute name="group" type="xs:string" use="optional">
-                               <xs:annotation><xs:documentation>Annotation with the same non-empty group name are grouped together</xs:documentation></xs:annotation></xs:attribute>
-                               <xs:attribute name="type" type="xs:string" use="required"/>
-                               
                        </xs:extension>
                </xs:complexContent>
        </xs:complexType>
-       <xs:element name="param"><xs:complexType>
+       <xs:element name="param">
+               <xs:complexType>
                        <xs:annotation>
                                <xs:documentation>
-                                       Specifies a named and typed value used to perform some data transformation.
+                                       Specifies a named and typed value used to perform
+                                       some data transformation.
                                </xs:documentation>
                                <xs:documentation>
-                                       LATER: experiment with xml validation of property set prototypes for services</xs:documentation></xs:annotation>
+                                       LATER: experiment with xml validation of property
+                                       set prototypes for services
+                               </xs:documentation>
+                       </xs:annotation>
                        <xs:simpleContent>
-                               <xs:annotation><xs:documentation>Named and typed property string</xs:documentation></xs:annotation>
+                               <xs:annotation>
+                                       <xs:documentation>
+                                               Named and typed property string
+                                       </xs:documentation>
+                               </xs:annotation>
                                <xs:extension base="xs:string">
-                                       <xs:attribute name="name" type="xs:string" use="required"/>
-                                       <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>
+                                       <xs:attribute name="name" type="xs:string"
+                                               use="required" />
+                                       <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>
                                </xs:extension>
                        </xs:simpleContent>
-       </xs:complexType></xs:element>
-       <xs:element name="input"><xs:complexType>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="input">
+               <xs:complexType>
                        <xs:annotation>
                                <xs:documentation>
-                                       Selects all or part of a collection of vamsas objects as a named input to some transformation process. 
+                                       Selects all or part of a collection of vamsas
+                                       objects as a named input to some transformation
+                                       process. Many inputs with the same name imply a
+                                       group input (such as a collection of sequences)
                                </xs:documentation>
                        </xs:annotation>
                        <xs:complexContent>
+
                                <xs:extension base="vamsas:rangeType">
-                                       <xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
-                                       <xs:attribute name="objRef" type="xs:IDREF" use="optional"><xs:annotation><xs:documentation>Reference Frame for rangeType specfication</xs:documentation></xs:annotation></xs:attribute>
+                                       <xs:attribute name="name" type="xs:string"
+                                               use="required">
+                                       </xs:attribute>
+                                       <xs:attribute name="objRef" type="xs:IDREF"
+                                               use="optional">
+                                               <xs:annotation>
+                                                       <xs:documentation>
+                                                               Reference Frame for rangeType
+                                                               specfication
+                                                       </xs:documentation>
+                                               </xs:annotation>
+                                       </xs:attribute>
                                </xs:extension>
                        </xs:complexContent>
                </xs:complexType>
        </xs:element>
-       
+
        <xs:element name="Provenance">
                <xs:complexType>
                        <xs:annotation>
                                <xs:documentation>
-                                       Defines the origin and series of operations applied directly to the object that references it.
+                                       Defines the origin and series of operations applied
+                                       directly to the object that references it.
                                </xs:documentation>
                        </xs:annotation>
                        <xs:sequence>
                                <xs:element name="entry" maxOccurs="unbounded">
                                        <xs:complexType>
                                                <xs:sequence>
-                                                       <xs:element name="User" type="xs:string"><xs:annotation><xs:documentation>Who</xs:documentation></xs:annotation></xs:element>
-                                                       <xs:element name="App" type="xs:string"><xs:annotation><xs:documentation>With which application</xs:documentation></xs:annotation></xs:element>                                                 
-                                                       <xs:element name="Action" type="xs:string"><xs:annotation><xs:documentation>Did what</xs:documentation></xs:annotation></xs:element>
-                                                       <xs:element name="Date" type="xs:date"><xs:annotation><xs:documentation>When</xs:documentation></xs:annotation></xs:element>
-                                                       <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded"><xs:annotation><xs:documentation>additional information</xs:documentation></xs:annotation></xs:element>
-                                                       <xs:element ref="vamsas:param" minOccurs="0" maxOccurs="unbounded"><xs:annotation><xs:documentation>parameter for the action</xs:documentation></xs:annotation></xs:element>
-                                                       <xs:element ref="vamsas:input" minOccurs="0" maxOccurs="unbounded"><xs:annotation><xs:documentation>bioinformatic objects input to action</xs:documentation></xs:annotation></xs:element>
+                                                       <xs:element name="User" type="xs:string">
+                                                               <xs:annotation>
+                                                                       <xs:documentation>
+                                                                               Who
+                                                                       </xs:documentation>
+                                                               </xs:annotation>
+                                                       </xs:element>
+                                                       <xs:element name="App" type="xs:string">
+                                                               <xs:annotation>
+                                                                       <xs:documentation>
+                                                                               With which application
+                                                                       </xs:documentation>
+                                                               </xs:annotation>
+                                                       </xs:element>
+                                                       <xs:element name="Action"
+                                                               type="xs:string">
+                                                               <xs:annotation>
+                                                                       <xs:documentation>
+                                                                               Did what
+                                                                       </xs:documentation>
+                                                               </xs:annotation>
+                                                       </xs:element>
+                                                       <xs:element name="Date" type="xs:date">
+                                                               <xs:annotation>
+                                                                       <xs:documentation>
+                                                                               When
+                                                                       </xs:documentation>
+                                                               </xs:annotation>
+                                                       </xs:element>
+                                                       <xs:element ref="vamsas:property"
+                                                               minOccurs="0" maxOccurs="unbounded">
+                                                               <xs:annotation>
+                                                                       <xs:documentation>
+                                                                               additional information
+                                                                       </xs:documentation>
+                                                               </xs:annotation>
+                                                       </xs:element>
+                                                       <xs:element ref="vamsas:param" minOccurs="0"
+                                                               maxOccurs="unbounded">
+                                                               <xs:annotation>
+                                                                       <xs:documentation>
+                                                                               parameter for the action
+                                                                       </xs:documentation>
+                                                               </xs:annotation>
+                                                       </xs:element>
+                                                       <xs:element ref="vamsas:input" minOccurs="0"
+                                                               maxOccurs="unbounded">
+                                                               <xs:annotation>
+                                                                       <xs:documentation>
+                                                                               bioinformatic objects input to
+                                                                               action
+                                                                       </xs:documentation>
+                                                               </xs:annotation>
+                                                       </xs:element>
                                                </xs:sequence>
-                                               <xs:attribute name="id" type="xs:ID" use="optional">                    <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
+                                               <xs:attribute name="id" type="xs:ID"
+                                                       use="optional">
+                                                       <xs:annotation>
+                                                               <xs:documentation>
+                                                                       Primary Key for vamsas object
+                                                                       referencing
+                                                               </xs:documentation>
+                                                       </xs:annotation>
                                                </xs:attribute>
                                        </xs:complexType>
                                </xs:element>
        </xs:element>
        <xs:element name="DataSet">
                <xs:complexType>
-                       <xs:annotation><xs:documentation>A collection of sequences, alignments, trees and other things.</xs:documentation></xs:annotation>
+                       <xs:annotation>
+                               <xs:documentation>
+                                       A collection of sequences, alignments, trees and
+                                       other things.
+                               </xs:documentation>
+                       </xs:annotation>
                        <xs:sequence>
                                <xs:element name="Sequence" maxOccurs="unbounded">
                                        <xs:complexType>
-                                               <xs:annotation><xs:documentation>a primary or secondary sequence record from which all other sequences may be derived</xs:documentation></xs:annotation>
+                                               <xs:annotation>
+                                                       <xs:documentation>
+                                                               a primary or secondary sequence record
+                                                               from which all other sequences may be
+                                                               derived
+                                                       </xs:documentation>
+                                               </xs:annotation>
                                                <xs:complexContent>
                                                        <xs:extension base="vamsas:SequenceType">
                                                                <xs:sequence>
-                                                                       <xs:element name="dbRef" minOccurs="0" maxOccurs="unbounded">
+                                                                       <xs:element name="dbRef"
+                                                                               minOccurs="0" maxOccurs="unbounded">
+                                                                               <xs:annotation>
+                                                                                       <xs:documentation>
+                                                                                               Store a list of database
+                                                                                               references for this
+                                                                                               sequence record - with
+                                                                                               optional mapping from
+                                                                                               database sequence to the
+                                                                                               given sequence record
+                                                                                       </xs:documentation>
+                                                                                       <xs:documentation></xs:documentation>
+                                                                                       <xs:documentation></xs:documentation>
+                                                                               </xs:annotation>
                                                                                <xs:complexType>
                                                                                        <xs:sequence>
-                                                                                               <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded"/>
+                                                                                               <xs:element name="map"
+                                                                                                       minOccurs="0" maxOccurs="unbounded">
+                                                                                                       <xs:complexType>
+                                                                                                               <xs:attribute
+                                                                                                                       name="from" type="xs:integer" default="0"
+                                                                                                                       use="optional">
+                                                                                                                       <xs:annotation>
+                                                                                                                               <xs:documentation>
+                                                                                                                                       Offset
+                                                                                                                                       to
+                                                                                                                                       first
+                                                                                                                                       position
+                                                                                                                                       in
+                                                                                                                                       dataset
+                                                                                                                                       sequence
+                                                                                                                                       record
+                                                                                                                                       that
+                                                                                                                                       this
+                                                                                                                                       database
+                                                                                                                                       entry
+                                                                                                                                       maps
+                                                                                                                                       to
+                                                                                                                               </xs:documentation>
+                                                                                                                       </xs:annotation>
+                                                                                                               </xs:attribute>
+                                                                                                               <xs:attribute
+                                                                                                                       name="to" type="xs:integer" default="0" use="optional">
+                                                                                                                       <xs:annotation>
+                                                                                                                               <xs:documentation>
+                                                                                                                                       Offset
+                                                                                                                                       to
+                                                                                                                                       last
+                                                                                                                                       position
+                                                                                                                                       in
+                                                                                                                                       dataset
+                                                                                                                                       sequence
+                                                                                                                                       record
+                                                                                                                                       that
+                                                                                                                                       this
+                                                                                                                                       database
+                                                                                                                                       entry
+                                                                                                                                       maps
+                                                                                                                                       to
+                                                                                                                               </xs:documentation>
+                                                                                                                       </xs:annotation>
+                                                                                                               </xs:attribute>
+                                                                                                               <xs:attribute
+                                                                                                                       name="start" type="xs:integer" use="required">
+                                                                                                               <xs:annotation>
+                                                                                                                       <xs:documentation>
+                                                                                                                               Offset
+                                                                                                                               to first
+                                                                                                                               last
+                                                                                                                               position
+                                                                                                                               in
+                                                                                                                               database
+                                                                                                                               entry
+                                                                                                                               that
+                                                                                                                               first
+                                                                                                                               (or
+                                                                                                                               offset)
+                                                                                                                               position
+                                                                                                                               in
+                                                                                                                               sequence
+                                                                                                                               maps to
+                                                                                                                       </xs:documentation>
+                                                                                                               </xs:annotation>
+                                                                                                               </xs:attribute>
+                                                                                                               <xs:attribute
+                                                                                                                       name="end" type="xs:integer" use="required">
+                                                                                                               <xs:annotation>
+                                                                                                                       <xs:documentation>
+                                                                                                                               Offset
+                                                                                                                               to last
+                                                                                                                               position
+                                                                                                                               in
+                                                                                                                               database
+                                                                                                                               entry
+                                                                                                                               that
+                                                                                                                               last
+                                                                                                                               (offset)
+                                                                                                                               position
+                                                                                                                               in
+                                                                                                                               sequence
+                                                                                                                               maps to
+                                                                                                                       </xs:documentation>
+                                                                                                               </xs:annotation>
+                                                                                                               </xs:attribute>
+                                                                                                       </xs:complexType>
+                                                                                               </xs:element>
+                                                                                               <xs:element name="link" type="vamsas:uri" minOccurs="0" maxOccurs="unbounded"/>
+                                                                                               <xs:element
+                                                                                                       ref="vamsas:property" minOccurs="0" maxOccurs="unbounded" />
                                                                                        </xs:sequence>
-                                                                                       <xs:attribute name="source" type="xs:string"/>
-                                                                                       <xs:attribute name="version" type="xs:string"/>
-                                                                                       <xs:attribute name="accessionId" type="xs:string"/>
-                                                                                       <xs:attribute name="id" type="xs:ID" use="optional">                    <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
+                                                                                       <xs:attribute name="source"
+                                                                                               type="xs:string" use="required">
+                                                                                               <xs:annotation>
+                                                                                                       <xs:documentation>
+                                                                                                               TODO Database
+                                                                                                               Naming
+                                                                                                               Convention:
+                                                                                                               either start
+                                                                                                               using LSID (so
+                                                                                                               change type to
+                                                                                                               URI) or leave
+                                                                                                               this as an
+                                                                                                               uncontrolled/unspecified
+                                                                                                               string ID
+                                                                                                       </xs:documentation>
+                                                                                               </xs:annotation>
+                                                                                       </xs:attribute>
+                                                                                       <xs:attribute name="version"
+                                                                                               type="xs:string" use="required">
+                                                                                               <xs:annotation>
+                                                                                                       <xs:documentation>
+                                                                                                               Version must be
+                                                                                                               specified -
+                                                                                                       </xs:documentation>
+                                                                                               </xs:annotation>
+                                                                                       </xs:attribute>
+                                                                                       <xs:attribute
+                                                                                               name="accessionId" type="xs:string" use="required">
+                                                                                               <xs:annotation>
+                                                                                                       <xs:documentation>
+                                                                                                               TODO: make some
+                                                                                                               specification of
+                                                                                                               the database
+                                                                                                               field from which
+                                                                                                               this accessionId
+                                                                                                               is taken from -
+                                                                                                               should that be a
+                                                                                                               special property
+                                                                                                               of the dbRef
+                                                                                                               object ?
+                                                                                                       </xs:documentation>
+                                                                                               </xs:annotation>
+                                                                                       </xs:attribute>
+                                                                                       <xs:attribute name="id"
+                                                                                               type="xs:ID" use="optional">
+                                                                                               <xs:annotation>
+                                                                                                       <xs:documentation>
+                                                                                                               Primary Key for
+                                                                                                               vamsas object
+                                                                                                               referencing
+                                                                                                       </xs:documentation>
+                                                                                               </xs:annotation>
                                                                                        </xs:attribute>
                                                                                </xs:complexType>
                                                                        </xs:element>
                                                                </xs:sequence>
-                                                               <xs:attribute name="id" type="xs:ID" use="optional">                    <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
+                                                               <xs:attribute name="id" type="xs:ID"
+                                                                       use="optional">
+                                                                       <xs:annotation>
+                                                                               <xs:documentation>
+                                                                                       Primary Key for vamsas
+                                                                                       object referencing
+                                                                               </xs:documentation>
+                                                                       </xs:annotation>
+                                                               </xs:attribute>
+                                                               <xs:attribute name="dictionary"
+                                                                       type="xs:string" use="required">
+                                                                       <xs:annotation>
+                                                                               <xs:documentation>
+                                                                                       symbol class for sequence
+                                                                               </xs:documentation>
+                                                                       </xs:annotation>
                                                                </xs:attribute>
-                                                               <xs:attribute name="dictionary" type="xs:string" use="required"><xs:annotation><xs:documentation>symbol class for sequence</xs:documentation></xs:annotation></xs:attribute>
                                                        </xs:extension>
                                                </xs:complexContent>
                                        </xs:complexType>
                                </xs:element>
-                               <xs:element name="DataSetAnnotations" minOccurs="0" maxOccurs="unbounded">
+                               <xs:element name="DataSetAnnotations" minOccurs="0"
+                                       maxOccurs="unbounded">
                                        <xs:complexType>
-                                               <xs:annotation><xs:documentation>Annotate over positions and regions of dataset sequences</xs:documentation>
+                                               <xs:annotation>
+                                                       <xs:documentation>
+                                                               Annotate over positions and regions of a
+                                                               dataset sequence
+                                                       </xs:documentation>
                                                </xs:annotation>
                                                <xs:complexContent>
-                                                       <xs:extension base="vamsas:rangeAnnotation">
-                                                               <xs:attribute name="seqRef" type="xs:IDREF" use="optional">
-                                                                       <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>
+                                                       <xs:extension
+                                                               base="vamsas:rangeAnnotation">
+                                                               <xs:sequence>
+                                                                       <xs:element ref="vamsas:Provenance"
+                                                                               maxOccurs="1" minOccurs="1" />
+                                                               </xs:sequence>
+                                                               <xs:attribute name="seqRef"
+                                                                       type="xs:IDREF" use="required">
+                                                                       <xs:annotation>
+                                                                               <xs:documentation>
+                                                                                       annotation is associated
+                                                                                       with a particular dataset
+                                                                                       sequence
+                                                                               </xs:documentation>
+                                                                       </xs:annotation>
                                                                </xs:attribute>
                                                        </xs:extension>
                                                </xs:complexContent>
                                        </xs:complexType>
                                </xs:element>
-                               <xs:element name="Alignment" minOccurs="0" maxOccurs="unbounded">
+                               <xs:element name="Alignment" minOccurs="0"
+                                       maxOccurs="unbounded">
                                        <xs:complexType>
                                                <xs:sequence>
-                                                       <xs:element name="AlignmentFeatures" minOccurs="0" maxOccurs="unbounded"><xs:complexType><xs:annotation>
-                                                               <xs:documentation>Annotate over positions and regions of the alignment</xs:documentation>
-                                                       </xs:annotation><xs:complexContent>
-                                                               <xs:extension base="vamsas:rangeAnnotation">                                                            
-                                                                       <xs:attribute name="seqRef" type="xs:IDREF" use="optional">
-                                                                       <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>
-                                                               </xs:attribute>
-                                                               </xs:extension>
-                                                       </xs:complexContent></xs:complexType></xs:element> 
-                                                       <xs:element name="AlignmentAnnotations" minOccurs="0" maxOccurs="unbounded">
+                                                       <xs:element name="AlignmentAnnotation"
+                                                               minOccurs="0" maxOccurs="unbounded">
                                                                <xs:annotation>
                                                                        <xs:documentation>
-                                                                               TODO: hard to distinguish this from the alignment features element. Do we merge them and leave the applications
+                                                                               This is annotation over the
+                                                                               coordinate frame defined by all
+                                                                               the columns in the alignment.
                                                                        </xs:documentation>
                                                                </xs:annotation>
                                                                <xs:complexType>
-                                                                       <xs:sequence>
-                                                                               <xs:element ref="vamsas:annotationElement" maxOccurs="unbounded"/>
-                                                                               <xs:element name="label" type="xs:string"/>
-                                                                               <xs:element name="description" type="xs:string"/>
-                                                                               <xs:element ref="vamsas:Provenance"/>
-                                                                       </xs:sequence>
-                                                                       <xs:attribute name="graph" type="xs:boolean" use="required"/>
-                                                                       <xs:attribute name="id" type="xs:ID" use="optional">                    <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
-                                                                       </xs:attribute>
+                                                                       <xs:complexContent>
+                                                                               <xs:extension
+                                                                                       base="vamsas:rangeAnnotation">
+                                                                                       <xs:sequence>
+                                                                                               <xs:element
+                                                                                                       ref="vamsas:Provenance" minOccurs="1" maxOccurs="1" />
+                                                                                       </xs:sequence>
+                                                                                       <xs:attribute name="graph"
+                                                                                               type="xs:boolean" use="required">
+                                                                                               <xs:annotation>
+                                                                                                       <xs:documentation>
+                                                                                                               TODO: decide if
+                                                                                                               this flag is
+                                                                                                               redundant - when
+                                                                                                               true it would
+                                                                                                               suggest that the
+                                                                                                               annotationElement
+                                                                                                               values together
+                                                                                                               form a graph
+                                                                                                       </xs:documentation>
+                                                                                               </xs:annotation>
+                                                                                       </xs:attribute>
+                                                                               </xs:extension>
+                                                                       </xs:complexContent>
                                                                </xs:complexType>
                                                        </xs:element>
-                                                       <xs:element ref="vamsas:Tree" minOccurs="0" maxOccurs="unbounded"/>
-                                                       <xs:element name="alignmentSequence" maxOccurs="unbounded">
+                                                       <xs:element ref="vamsas:Tree" minOccurs="0"
+                                                               maxOccurs="unbounded" />
+                                                       <xs:element name="alignmentSequence"
+                                                               maxOccurs="unbounded">
                                                                <xs:complexType>
                                                                        <xs:complexContent>
-                                                                               <xs:extension base="vamsas:SequenceType">
+                                                                               <xs:extension
+                                                                                       base="vamsas:SequenceType">
                                                                                        <xs:sequence>
-                                                                                               <xs:element name="AlignmentSequenceFeature" type="vamsas:rangeAnnotation" minOccurs="0" maxOccurs="unbounded">
-                                                                                                       <xs:annotation>
-                                                                                                       <xs:documentation>Annotate over positions and regions of the ungapped sequences in the alignment</xs:documentation>
-                                                                                                               <xs:documentation>TODO: have to remove id rangeSpec or require it to be the same as dataset sequence reference</xs:documentation>
-                                                                                               </xs:annotation>
-                                                                                               </xs:element> 
+                                                                                               <xs:element
+                                                                                                       name="AlignmentSequenceAnnotation" minOccurs="0"
+                                                                                                       maxOccurs="unbounded">
+                                                                                                       <xs:complexType>
+                                                                                                               <xs:annotation>
+                                                                                                                       <xs:documentation>
+                                                                                                                               Annotate
+                                                                                                                               over
+                                                                                                                               positions
+                                                                                                                               and
+                                                                                                                               regions
+                                                                                                                               of the
+                                                                                                                               ungapped
+                                                                                                                               sequence
+                                                                                                                               in the
+                                                                                                                               context
+                                                                                                                               of the
+                                                                                                                               alignment
+                                                                                                                       </xs:documentation>
+                                                                                                                       <xs:documentation></xs:documentation>
+                                                                                                               </xs:annotation>
+                                                                                                               <xs:complexContent>
+                                                                                                                       <xs:extension
+                                                                                                                               base="vamsas:rangeAnnotation">
+                                                                                                                               <xs:sequence>
+                                                                                                                                       <xs:element
+                                                                                                                                               ref="vamsas:Provenance" minOccurs="1" maxOccurs="1" />
+                                                                                                                               </xs:sequence>
+                                                                                                                               <xs:attribute
+                                                                                                                                       name="graph" type="xs:boolean" use="required">
+                                                                                                                                       <xs:annotation>
+                                                                                                                                               <xs:documentation>
+                                                                                                                                                       TODO:
+                                                                                                                                                       decide
+                                                                                                                                                       if
+                                                                                                                                                       this
+                                                                                                                                                       flag
+                                                                                                                                                       is
+                                                                                                                                                       redundant
+                                                                                                                                                       -
+                                                                                                                                                       when
+                                                                                                                                                       true
+                                                                                                                                                       it
+                                                                                                                                                       would
+                                                                                                                                                       suggest
+                                                                                                                                                       that
+                                                                                                                                                       the
+                                                                                                                                                       annotationElement
+                                                                                                                                                       values
+                                                                                                                                                       together
+                                                                                                                                                       form
+                                                                                                                                                       a
+                                                                                                                                                       graph
+                                                                                                                                               </xs:documentation>
+                                                                                                                                       </xs:annotation>
+                                                                                                                               </xs:attribute>
+                                                                                                                       </xs:extension>
+                                                                                                               </xs:complexContent>
+
+                                                                                                               <!--                                                            
+                                                                                                                       This replaces the flat list of sequenceFeatures.
+                                                                                                                       <xs:element name="AlignmentFeatures" minOccurs="0" maxOccurs="unbounded"><xs:complexType><xs:annotation>
+                                                                                                                       <xs:documentation>Annotate over positions and regions of the alignment</xs:documentation>
+                                                                                                                       </xs:annotation><xs:complexContent>
+                                                                                                                       <xs:extension base="vamsas:rangeFeature">                                                               
+                                                                                                                       <xs:attribute name="seqRef" type="xs:IDREF" use="optional">
+                                                                                                                       <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>
+                                                                                                                       </xs:attribute>
+                                                                                                                       </xs:extension>
+                                                                                                                       </xs:complexContent></xs:complexType></xs:element> -->
+                                                                                                       </xs:complexType>
+                                                                                               </xs:element>
                                                                                        </xs:sequence>
-                                                                                       <xs:attribute name="id" type="xs:ID" use="optional">
-                                                                                               <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
+                                                                                       <xs:attribute name="id"
+                                                                                               type="xs:ID" use="optional">
+                                                                                               <xs:annotation>
+                                                                                                       <xs:documentation>
+                                                                                                               Primary Key for
+                                                                                                               vamsas object
+                                                                                                               referencing
+                                                                                                       </xs:documentation>
+                                                                                               </xs:annotation>
+                                                                                       </xs:attribute>
+                                                                                       <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>
-                                                                                       <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>
                                                                                </xs:extension>
                                                                        </xs:complexContent>
                                                                </xs:complexType>
                                                        </xs:element>
-                                                       <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded"><xs:annotation>
-                                                               <xs:documentation>typical properties may be alignment score objects </xs:documentation>
-                                                       </xs:annotation></xs:element>
-                                                       <xs:element ref="vamsas:Provenance"/>
+                                                       <xs:element ref="vamsas:property"
+                                                               minOccurs="0" maxOccurs="unbounded">
+                                                               <xs:annotation>
+                                                                       <xs:documentation>
+                                                                               typical properties may be
+                                                                               additional alignment score
+                                                                               objects
+                                                                       </xs:documentation>
+                                                               </xs:annotation>
+                                                       </xs:element>
+                                                       <xs:element ref="vamsas:Provenance" />
                                                </xs:sequence>
-                                               <xs:attribute name="gapChar" type="xs:string" use="required"/>
-                                               <xs:attribute name="aligned" type="xs:boolean" use="optional"/>
-                                               <xs:attribute name="id" type="xs:ID" use="optional">                    <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
+                                               <xs:attribute name="gapChar" type="xs:string"
+                                                       use="required" />
+                                               <xs:attribute name="aligned" type="xs:boolean"
+                                                       use="optional" />
+                                               <xs:attribute name="id" type="xs:ID"
+                                                       use="optional">
+                                                       <xs:annotation>
+                                                               <xs:documentation>
+                                                                       Primary Key for vamsas object
+                                                                       referencing
+                                                               </xs:documentation>
+                                                       </xs:annotation>
                                                </xs:attribute>
-                                               <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>
+                                               <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>
                                                </xs:attribute>
                                        </xs:complexType>
                                </xs:element>
-                               <xs:element ref="vamsas:Tree" minOccurs="0" maxOccurs="unbounded"/>
-                               <xs:element ref="vamsas:Provenance"/>
+                               <xs:element ref="vamsas:Tree" minOccurs="0"
+                                       maxOccurs="unbounded" />
+                               <xs:element ref="vamsas:Provenance" />
                        </xs:sequence>
-                       <xs:attribute name="id" type="xs:ID" use="optional">                    <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
+                       <xs:attribute name="id" type="xs:ID" use="optional">
+                               <xs:annotation>
+                                       <xs:documentation>
+                                               Primary Key for vamsas object referencing
+                                       </xs:documentation>
+                               </xs:annotation>
                        </xs:attribute>
                </xs:complexType>
        </xs:element>
        <xs:element name="annotationElement">
                <xs:complexType>
-                       <xs:annotation><xs:documentation>per-site symbolic and/or quantitative annotation</xs:documentation>
-                       <xs:documentation>SecondaryStructure and display character (from Jalview) have been subsumed into the glyph element</xs:documentation></xs:annotation>
+                       <xs:annotation>
+                               <xs:documentation>
+                                       per-site symbolic and/or quantitative annotation
+                               </xs:documentation>
+                               <xs:documentation>
+                                       SecondaryStructure and display character (from
+                                       Jalview) have been subsumed into the glyph element
+                               </xs:documentation>
+                       </xs:annotation>
                        <xs:sequence>
-                               
-                               <xs:element name="description" type="xs:string" minOccurs="0">
-                               <xs:annotation><xs:documentation>Free text at this position</xs:documentation></xs:annotation>
+
+                               <xs:element name="description" type="xs:string"
+                                       minOccurs="0">
+                                       <xs:annotation>
+                                               <xs:documentation>
+                                                       Free text at this position
+                                               </xs:documentation>
+                                       </xs:annotation>
                                </xs:element>
-                               <xs:element name="glyph" minOccurs="0" maxOccurs="unbounded">
-                                       <xs:annotation><xs:documentation>Discrete symbol - possibly graphically represented</xs:documentation></xs:annotation>
+                               <xs:element name="glyph" minOccurs="0"
+                                       maxOccurs="unbounded">
+                                       <xs:annotation>
+                                               <xs:documentation>
+                                                       Discrete symbol - possibly graphically
+                                                       represented
+                                               </xs:documentation>
+                                       </xs:annotation>
                                        <xs:complexType>
-                                       <xs:simpleContent>
-                                       <xs:extension base="xs:string">
-                                               <xs:attribute name="dict" type="xs:string" default="utf8" use="optional">
-                                               <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>
-                                               <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>
-                               </xs:extension>
-                               </xs:simpleContent>
-                               </xs:complexType>                       
+                                               <xs:simpleContent>
+                                                       <xs:extension base="xs:string">
+                                                               <xs:attribute name="dict"
+                                                                       type="xs:string" default="utf8" use="optional">
+                                                                       <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>
+                                                                               <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>
+                                                       </xs:extension>
+                                               </xs:simpleContent>
+                                       </xs:complexType>
+                               </xs:element>
+                               <xs:element name="value" type="xs:float" minOccurs="0"
+                                       maxOccurs="unbounded">
+                                       <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
+                                               </xs:documentation>
+                                       </xs:annotation>
                                </xs:element>
-                               <xs:element name="value" type="xs:float" minOccurs="0" maxOccurs="unbounded">
-                               <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
-                               </xs:documentation></xs:annotation></xs:element>
                        </xs:sequence>
-                       <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>
-                       <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>
-                       <xs:attribute name="id" type="xs:ID" use="optional">                    <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
+                       <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>
+                       <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>
+                       <xs:attribute name="id" type="xs:ID" use="optional">
+                               <xs:annotation>
+                                       <xs:documentation>
+                                               Primary Key for vamsas object referencing
+                                       </xs:documentation>
+                               </xs:annotation>
                        </xs:attribute>
                </xs:complexType>
        </xs:element>
        <xs:complexType name="SequenceType">
                <xs:sequence>
-                       <xs:element name="sequence" type="xs:string" minOccurs="1" maxOccurs="1"/>
-                       <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
-                       <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
-                       <xs:element ref="vamsas:property" minOccurs="0" maxOccurs="unbounded"><xs:annotation><xs:documentation>additional typed properties</xs:documentation></xs:annotation></xs:element>
+                       <xs:element name="sequence" type="xs:string" minOccurs="1"
+                               maxOccurs="1" />
+                       <xs:element name="name" type="xs:string" minOccurs="1"
+                               maxOccurs="1" />
+                       <xs:element name="description" type="xs:string"
+                               minOccurs="0" maxOccurs="1" />
+                       <xs:element ref="vamsas:property" minOccurs="0"
+                               maxOccurs="unbounded">
+                               <xs:annotation>
+                                       <xs:documentation>
+                                               additional typed properties
+                                       </xs:documentation>
+                               </xs:annotation>
+                       </xs:element>
                </xs:sequence>
-               <xs:attribute name="start" type="xs:integer" use="required"/>
-               <xs:attribute name="end" type="xs:integer" use="required"/>
+               <xs:attribute name="start" type="xs:integer" use="required" />
+               <xs:attribute name="end" type="xs:integer" use="required" />
        </xs:complexType>
        <xs:element name="ApplicationData">
                <xs:complexType>
                        <xs:annotation>
-                               <xs:documentation>Data specific to a particular type and version of vamsas application</xs:documentation>
+                               <xs:documentation>
+                                       Data specific to a particular type and version of
+                                       vamsas application
+                               </xs:documentation>
                        </xs:annotation>
                        <xs:complexContent>
                                <xs:extension base="vamsas:appData">
                                        <xs:sequence>
-                                               <xs:element name="User" maxOccurs="unbounded" minOccurs="0">
+                                               <xs:element name="User" maxOccurs="unbounded"
+                                                       minOccurs="0">
                                                        <xs:complexType>
                                                                <xs:complexContent>
-                                                                       <xs:extension base="vamsas:appData">
-                                                                               <xs:annotation><xs:documentation>Data available to just a particular user</xs:documentation></xs:annotation>
-                                                                               <xs:attribute name="fullname" type="xs:string" use="required"/>
-                                                                               <xs:attribute name="organization" type="xs:string" use="required"/>
+                                                                       <xs:extension
+                                                                               base="vamsas:appData">
+                                                                               <xs:annotation>
+                                                                                       <xs:documentation>
+                                                                                               Data available to just a
+                                                                                               particular user
+                                                                                       </xs:documentation>
+                                                                               </xs:annotation>
+                                                                               <xs:attribute name="fullname"
+                                                                                       type="xs:string" use="required" />
+                                                                               <xs:attribute
+                                                                                       name="organization" type="xs:string" use="required" />
                                                                        </xs:extension>
                                                                </xs:complexContent>
                                                        </xs:complexType>
                                                </xs:element>
-                                               <xs:element name="Common" maxOccurs="1" minOccurs="0">
+                                               <xs:element name="Common" maxOccurs="1"
+                                                       minOccurs="0">
                                                        <xs:complexType>
                                                                <xs:complexContent>
-                                                                       <xs:extension base="vamsas:appData">                                                                    </xs:extension>
+                                                                       <xs:extension
+                                                                               base="vamsas:appData">
+                                                                       </xs:extension>
                                                                </xs:complexContent>
                                                        </xs:complexType>
                                                </xs:element>
-                                               <xs:element name="Instance" maxOccurs="unbounded" minOccurs="0">
+                                               <xs:element name="Instance"
+                                                       maxOccurs="unbounded" minOccurs="0">
                                                        <xs:complexType>
                                                                <xs:complexContent>
-                                                                       <xs:extension base="vamsas:appData">
+                                                                       <xs:extension
+                                                                               base="vamsas:appData">
                                                                                <xs:annotation>
-                                                                                       <xs:documentation>Data available to just a specific instance of the application</xs:documentation>
-                                                                                       <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>
+                                                                                       <xs:documentation>
+                                                                                               Data available to just a
+                                                                                               specific instance of the
+                                                                                               application
+                                                                                       </xs:documentation>
+                                                                                       <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>
                                                                                </xs:annotation>
-                                                                               <xs:attribute name="urn" type="xs:string" use="required"/>
+                                                                               <xs:attribute name="urn"
+                                                                                       type="xs:string" use="required" />
                                                                        </xs:extension>
                                                                </xs:complexContent>
                                                        </xs:complexType>
                                                </xs:element>
                                        </xs:sequence>
-                                       <xs:attribute name="version" type="xs:string" use="required"/>
-                                       <xs:attribute name="name" type="xs:string" use="required"/>
+                                       <xs:attribute name="version" type="xs:string"
+                                               use="required" ><xs:annotation><xs:documentation>
+                                                       Version string describing the application specific data storage version used</xs:documentation></xs:annotation></xs:attribute>
+                                       <xs:attribute name="name" type="xs:string"
+                                               use="required" >
+                                               <xs:annotation><xs:documentation>
+                                                       Canonical name of application
+                                               </xs:documentation>
+                                               </xs:annotation>
+                                               </xs:attribute>
                                </xs:extension>
                        </xs:complexContent>
                </xs:complexType>
        </xs:element>
        <xs:element name="Attachment">
-       <xs:complexType>
-       <xs:complexContent>
-         <xs:extension base="vamsas:appData">
-         <xs:annotation>
-         <xs:documentation>General data container to attach a typed data object to any vamsas object</xs:documentation>
-         </xs:annotation>
-         <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>
-         <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>
-         <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>
-         <xs:attribute name="id" type="xs:ID" use="optional">                  <xs:annotation><xs:documentation>Primary Key for vamsas object referencing</xs:documentation></xs:annotation>
-                       </xs:attribute>
-         </xs:extension>         
-       </xs:complexContent>
-       </xs:complexType>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:extension base="vamsas:appData">
+                                       <xs:annotation>
+                                               <xs:documentation>
+                                                       General data container to attach a typed
+                                                       data object to any vamsas object
+                                               </xs:documentation>
+                                       </xs:annotation>
+                                       <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>
+                                       <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>
+                                       <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>
+                                       <xs:attribute name="id" type="xs:ID"
+                                               use="optional">
+                                               <xs:annotation>
+                                                       <xs:documentation>
+                                                               Primary Key for vamsas object
+                                                               referencing
+                                                       </xs:documentation>
+                                               </xs:annotation>
+                                       </xs:attribute>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
        </xs:element>
        <xs:complexType name="appData">
                <xs:choice>
-                       <xs:element name="data" type="xs:base64Binary"/>
-                       <xs:element name="dataReference" type="xs:string"/>
+                       <xs:element name="data" type="xs:base64Binary" />
+                       <xs:element name="dataReference" type="xs:string" />
                </xs:choice>
        </xs:complexType>
 </xs:schema>
index 17547c7..2834313 100644 (file)
@@ -19,6 +19,7 @@
                 <xs:element ref="vamsas:Provenance" minOccurs="0" maxOccurs="1"/>
                 <xs:element ref="vamsas:VAMSAS" minOccurs="1" maxOccurs="unbounded"/>
                 <xs:element ref="vamsas:ApplicationData" minOccurs="0" maxOccurs="unbounded"/>
+                <xs:element ref="vamsas:Attachment" minOccurs="0" maxOccurs="unbounded"/>
             </xs:sequence>
         </xs:complexType>
     </xs:element>