+ <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="vamsas:locks" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="referenceType">
+ <xs:annotation>
+ <xs:documentation> base type for citing arbitrary links between vamsas objects
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:annotation>
+ <xs:documentation> Optional human readable description of the relationship
+ </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="refs" type="xs:IDREFS">
+ <xs:annotation>
+ <xs:documentation>List of one or more vamsas object
+ references</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:complexType name="nodeType">
+ <xs:sequence>
+ <xs:element name="name" type="xs:string" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>Short name for this node</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>Descriptive text for this node</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="vref" type="vamsas:referenceType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Direct associations between this node and any vamsas
+ objects</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="vamsas:property" 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>
+ <xs:attribute name="modifiable" type="vamsas:locks" use="optional"/>
+ </xs:complexType>
+ <xs:element name="property">
+ <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:element name="link">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation> Primitive labelled URI object </xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <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: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>
+ <xs:choice>
+ <xs:element name="pos" maxOccurs="unbounded">
+ <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">
+ <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>
+ <!-- Do we really need this - a position could be just a seg with start=end and inclusive=true -->
+ </xs:complexType>
+ <xs:complexType name="rangeAnnotation">
+ <xs:annotation>
+ <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="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:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="vamsas:link" 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:attribute>
+ <xs:attribute name="modifiable" type="vamsas:locks" use="optional"/>
+ <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:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="param">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation> 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>
+ <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: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. 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 name="objRef" type="xs:IDREFS" use="optional">
+ <xs:annotation>
+ <xs:documentation> Reference Frame for rangeType specfication
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>