+ <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>
+ <!-- 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>
+ 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:attribute>
+ </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="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="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>
+ <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>
+