<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
 * Copyright (C) $$Year-Rel$$ The Jalview Authors
 * 
 * This file is part of Jalview.
 * 
 * Jalview is free software: you can redistribute it and/or
 * modify it under the terms of the GNU General Public License 
 * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
 *  
 * Jalview is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty 
 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
 * PURPOSE.  See the GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
 * The Jalview Authors are detailed in the 'AUTHORS' file.
-->
<!-- edited with XMLSpy v2006 sp1 U (http://www.altova.com) by ioh[ (o[ih[oh) -->
<!-- 
	Java JAXB binding classes are generated by running command line tool xjc:
 	    xjc schemas/jalview.xsd -d src -p jalview.xml.binding.jalview
 	Note this also generates code for included schemas
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vamsas="www.vamsas.ac.uk/jalview/version2" targetNamespace="www.vamsas.ac.uk/jalview/version2" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:complexType name="VAMSAS">
		<xs:sequence>
			<xs:element name="Tree" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="vamsas:SequenceSet" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="mapListType">
		<xs:annotation>
			<xs:documentation> 
				developed after mapRangeType from http://www.vamsas.ac.uk/schemas/1.0/vamsasTypes
			</xs:documentation>
			<xs:documentation>
				This effectively represents a java.util.MapList object
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="mapListFrom" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation> a region from start to end inclusive</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:complexType>
			</xs:element>					
			<xs:element name="mapListTo" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation> a region from start to end inclusive</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:complexType>
			</xs:element>					
		</xs:sequence>
		<xs:attribute name="mapFromUnit" type="xs:positiveInteger" use="required">
			<xs:annotation>
				<xs:documentation>number of dictionary symbol widths involved in each
					mapped position on this sequence (for example, 3 for a dna sequence exon
					region that is being mapped to a protein sequence). This is optional,
					since the unit can be usually be inferred from the dictionary type of
					each sequence involved in the mapping. </xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="mapToUnit" type="xs:positiveInteger" use="required">
			<xs:annotation>
				<xs:documentation>number of dictionary symbol widths involved in each
					mapped position on this sequence (for example, 3 for a dna sequence exon
					region that is being mapped to a protein sequence). This is optional,
					since the unit can be usually be inferred from the dictionary type of
					each sequence involved in the mapping. </xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:element name="Mapping">
		<xs:complexType>
			<xs:annotation>
				<xs:documentation>
					Represent the jalview.datamodel.Mapping object - it also provides
					a way of storing sequences that are mapped 'to' without adding them
					to the sequence set (which will mean they are then added to the alignment too).
				</xs:documentation>
			</xs:annotation>
			<xs:complexContent>
				<xs:extension base="vamsas:mapListType">
					<xs:sequence>
						<xs:choice minOccurs="0" maxOccurs="1">
							<xs:element ref="vamsas:Sequence"/>
							<xs:element name="dseqFor">
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:annotation>
											<xs:documentation>The sequence whose dataset sequence is to be referenced here</xs:documentation>
										</xs:annotation>
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
						</xs:choice>
					</xs:sequence>
					<xs:attribute name="mappingType" type="xs:string" use="optional">
						<xs:annotation>
							<xs:documentation>Biotype of the mapping e.g. CdsToPeptide</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:extension>
			</xs:complexContent>	
		</xs:complexType>
	</xs:element>
	<xs:element name="AlcodonFrame">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="alcodon" minOccurs="0" maxOccurs="unbounded">
					<xs:complexType>
						<xs:annotation>
							<xs:documentation>
								specifies a series of aligned codons from an associated DNA sequence alignment that when translated correspond to columns of a peptide alignment.
								Element may have either all pos1,2,3 attributes specified, or none at all (indicating a gapped column with no translated peptide).
							</xs:documentation>
						</xs:annotation>
						<xs:attribute name="pos1" type="xs:integer" use="optional"/>
						<xs:attribute name="pos2" type="xs:integer" use="optional"/>
						<xs:attribute name="pos3" type="xs:integer" use="optional"/>
					</xs:complexType>
				</xs:element>
				<xs:element name="alcodMap" minOccurs="0" maxOccurs="unbounded">
					<xs:complexType>
						<xs:sequence>
							<xs:element ref="vamsas:Mapping" maxOccurs="1" minOccurs="1">
								<xs:annotation>
									<xs:documentation>
										a Mapping entry and an associated protein sequence
									</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
						<xs:attribute name="dnasq" type="xs:string" use="required">
							<xs:annotation>
								<xs:documentation>
									internal jalview id for the dnasq for this mapping.
								</xs:documentation>
							</xs:annotation>
						</xs:attribute>
					</xs:complexType>
					
				</xs:element>
				
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Sequence">
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="vamsas:SequenceType">
					<xs:sequence>
						<xs:element name="DBRef" minOccurs="0" maxOccurs="unbounded">
							<xs:complexType>
								<xs:sequence>
									<xs:element ref="vamsas:Mapping" minOccurs="0" maxOccurs="1"/>
								</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="locus" type="xs:boolean" default="false">
									<xs:annotation>
										<xs:documentation>
											true for gene locus mapping, source=species, version=assembly, accession=chromosome
										</xs:documentation>
									</xs:annotation>
								</xs:attribute>
								<xs:attribute name="canonical" type="xs:boolean" default="false">
									<xs:annotation>
										<xs:documentation>
											true for the representative accession for databases where multiple accessions map to the same entry (eg. Uniprot)
										</xs:documentation>
									</xs:annotation>
								</xs:attribute>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
					<xs:attribute name="dsseqid" type="xs:string" use="optional">
						<xs:annotation>
							<xs:documentation>
								dataset sequence id for this sequence. Will be created as union of sequences.
							</xs:documentation>
						</xs:annotation>
					</xs:attribute>
					<xs:attribute name="biotype" type="xs:string" use="optional">
						<xs:annotation>
							<xs:documentation>
								Biotype of the sequence (if known)
							</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="Annotation">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="vamsas:annotationElement" minOccurs="0"
					maxOccurs="unbounded" />
				<xs:element name="label" type="xs:string" />
				<xs:element name="description" type="xs:string"
					minOccurs="0" />
				<xs:element name="thresholdLine" minOccurs="0">
					<xs:complexType>
						<xs:attribute name="label" type="xs:string" />
						<xs:attribute name="value" type="xs:float" />
						<xs:attribute name="colour" type="xs:int" />
					</xs:complexType>
				</xs:element>
				<xs:element name="property" minOccurs="0" maxOccurs="unbounded">
					<xs:complexType>
						<xs:attribute name="name" type="xs:string" />
						<xs:attribute name="value" type="xs:string" />
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="graph" type="xs:boolean" use="required" />
			<xs:attribute name="graphType" type="xs:int" use="optional" />
			<xs:attribute name="sequenceRef" type="xs:string"
				use="optional" />
			<xs:attribute name="groupRef" type="xs:string"
				use="optional" />
			<xs:attribute name="graphColour" type="xs:int"
				use="optional" />
			<xs:attribute name="graphGroup" type="xs:int"
				use="optional" />
			<xs:attribute name="graphHeight" type="xs:int" use="optional">
			<xs:annotation><xs:documentation>height in pixels for the graph if this is a graph-type annotation.</xs:documentation></xs:annotation></xs:attribute>
			<xs:attribute name="id" type="xs:string" use="optional" />
			<xs:attribute name="scoreOnly" type="xs:boolean"
				use="optional" default="false" />
			<xs:attribute name="score" type="xs:double" use="optional" />
			<xs:attribute name="visible" type="xs:boolean"
				use="optional" />
			<xs:attribute name="centreColLabels" type="xs:boolean"
				use="optional" />
			<xs:attribute name="scaleColLabels" type="xs:boolean"
				use="optional" />
			<xs:attribute name="showAllColLabels" type="xs:boolean"
				use="optional" />


			<xs:attribute name="autoCalculated" type="xs:boolean" use="optional" default="false">
			<xs:annotation><xs:documentation>is an autocalculated annotation row</xs:documentation>
			</xs:annotation></xs:attribute>
			<xs:attribute name="belowAlignment" type="xs:boolean" use="optional" default="true">
			<xs:annotation><xs:documentation>is to be shown below the alignment - introduced in Jalview 2.8 for visualizing T-COFFEE alignment scores</xs:documentation></xs:annotation></xs:attribute>
			<xs:attribute name="calcId" type="xs:string" use="optional">
			<xs:annotation><xs:documentation>Optional string identifier used to group sets of annotation produced by a particular calculation. Values are opaque strings but have semantic meaning to Jalview's renderer, data importer and calculation system.</xs:documentation></xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>	
	<xs:element name="SequenceSet">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="vamsas:Sequence" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="vamsas:Annotation" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="sequenceSetProperties" minOccurs="0" maxOccurs="unbounded">
					<xs:complexType>
						<xs:attribute name="key" type="xs:string"/>
						<xs:attribute name="value" type="xs:string"/>
					</xs:complexType>
				</xs:element>
				<xs:element ref="vamsas:AlcodonFrame" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="gapChar" type="xs:string" use="required"/>
			<xs:attribute name="datasetId" type="xs:string" use="optional">
				<xs:annotation>
					<xs:documentation>
						reference to set where jalview will gather the dataset sequences for all sequences in the set. 
					</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="annotationElement">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="displayCharacter" type="xs:string" minOccurs="0"/>
				<xs:element name="description" type="xs:string" minOccurs="0"/>
				<xs:element name="secondaryStructure" minOccurs="0">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:length value="1"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="value" type="xs:float" minOccurs="0"/>
			</xs:sequence>
			<xs:attribute name="position" type="xs:int" use="required"/>
			<xs:attribute name="colour" type="xs:int" use="optional"/>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="SequenceType">
		<xs:sequence>
			<xs:element name="sequence" type="xs:string" minOccurs="0"/>
			<xs:element name="name" type="xs:string" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:string"/>
		<xs:attribute name="description" type="xs:string"/>
	</xs:complexType>
</xs:schema>
