Merge branch 'master' of https://github.com/cmzmasek/forester
[jalview.git] / forester / resources / phyloxml_schema / 1.20 / phyloxml.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--                                                             -->
3 <!-- phyloXML                                                    -->
4 <!--                                                             -->
5 <!-- schema in XMLSchema                                         -->
6 <!--                                                             -->
7 <!-- License: The phyloXML XML Schema Definition is              -->
8 <!--          dual-licensed under the LGPL or Ruby's             -->
9 <!--          License.                                           -->
10 <!--          You can redistribute and/or modify                 -->
11 <!--          it under either the terms of the LGPL,             -->
12 <!--          or Ruby's License.                                 -->
13 <!--          see: http://www.ruby-lang.org/en/about/license.txt -->
14 <!--                                                             -->
15 <!-- Copyright (c) 2008-2016 Christian Zmasek                    -->
16 <!--                                                             -->
17 <!-- www.phyloxml.org                                            -->
18 <!-- Version: 1.20                                               -->
19 <!-- Last modified: 2016.07.06 by Christian Zmasek               -->
20 <!--                                                             -->
21 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:phy="http://www.phyloxml.org"
22    targetNamespace="http://www.phyloxml.org" elementFormDefault="qualified"
23    attributeFormDefault="unqualified">
24    <xs:annotation>
25       <xs:documentation>phyloXML is an XML language to describe evolutionary trees and associated
26          data. Version: 1.20. License: dual-licensed under the LGPL or Ruby's License. Copyright (c)
27          2008-2016 Christian M Zmasek.</xs:documentation>
28    </xs:annotation>
29    <!-- phyloxml is the root element:-->
30    <xs:element name="phyloxml" type="phy:Phyloxml"/>
31    <!-- phyloXML definition:-->
32    <xs:complexType name="Phyloxml">
33       <xs:annotation>
34          <xs:documentation> 'phyloxml' is the name of the root element. Phyloxml contains an
35             arbitrary number of 'phylogeny' elements (each representing one phylogeny) possibly
36             followed by elements from other namespaces. </xs:documentation>
37       </xs:annotation>
38       <xs:sequence maxOccurs="unbounded">
39          <xs:element name="phylogeny" type="phy:Phylogeny" minOccurs="0" maxOccurs="unbounded"/>
40          <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other"/>
41       </xs:sequence>
42    </xs:complexType>
43    <!-- Phylogeny:-->
44    <xs:complexType name="Phylogeny">
45       <xs:annotation>
46          <xs:documentation> Element Phylogeny is used to represent a phylogeny. The required
47             attribute 'rooted' is used to indicate whether the phylogeny is rooted or not. The
48             attribute 'rerootable' can be used to indicate that the phylogeny is not allowed to be
49             rooted differently (i.e. because it is associated with root dependent data, such as gene
50             duplications). The attribute 'type' can be used to indicate the type of phylogeny (i.e.
51             'gene tree'). It is recommended to use the attribute 'branch_length_unit' if the
52             phylogeny has branch lengths. Element clade is used in a recursive manner to describe
53             the topology of a phylogenetic tree.</xs:documentation>
54       </xs:annotation>
55       <xs:sequence>
56          <xs:element name="name" type="xs:token" minOccurs="0"/>
57          <xs:element name="id" type="phy:Id" minOccurs="0"/>
58          <xs:element name="description" type="xs:token" minOccurs="0"/>
59          <xs:element name="date" type="xs:dateTime" minOccurs="0"/>
60          <xs:element name="confidence" type="phy:Confidence" minOccurs="0" maxOccurs="unbounded"/>
61          <xs:element name="clade" type="phy:Clade" minOccurs="0"/>
62          <xs:element name="clade_relation" type="phy:CladeRelation" minOccurs="0"
63             maxOccurs="unbounded"/>
64          <xs:element name="sequence_relation" type="phy:SequenceRelation" minOccurs="0"
65             maxOccurs="unbounded"/>
66          <xs:element name="property" type="phy:Property" minOccurs="0" maxOccurs="unbounded"/>
67          <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other"/>
68       </xs:sequence>
69       <xs:attribute name="rooted" type="xs:boolean" use="required"/>
70       <xs:attribute name="rerootable" type="xs:boolean"/>
71       <xs:attribute name="branch_length_unit" type="xs:token"/>
72       <xs:attribute name="type" type="xs:token"/>
73    </xs:complexType>
74    <!-- Clade:-->
75    <xs:complexType name="Clade">
76       <xs:annotation>
77          <xs:documentation> Element Clade is used in a recursive manner to describe the topology of
78             a phylogenetic tree. The parent branch length of a clade can be described either with
79             the 'branch_length' element or the 'branch_length' attribute (it is not recommended to
80             use both at the same time, though). Usage of the 'branch_length' attribute allows for a
81             less verbose description. Element 'confidence' is used to indicate the support for a
82             clade/parent branch. Element 'events' is used to describe such events as
83             gene-duplications at the root node/parent branch of a clade. Element 'width' is the
84             branch width for this clade (including parent branch). Both 'color' and 'width' elements
85             apply for the whole clade unless overwritten in-sub clades. Attribute 'id_source' is
86             used to link other elements to a clade (on the xml-level). </xs:documentation>
87       </xs:annotation>
88       <xs:sequence>
89          <xs:element name="name" type="xs:token" minOccurs="0"/>
90          <xs:element name="branch_length" type="xs:double" minOccurs="0"/>
91          <xs:element name="confidence" type="phy:Confidence" minOccurs="0" maxOccurs="unbounded"/>
92          <xs:element name="width" type="xs:double" minOccurs="0"/>
93          <xs:element name="color" type="phy:BranchColor" minOccurs="0"/>
94          <xs:element name="taxonomy" type="phy:Taxonomy" minOccurs="0" maxOccurs="unbounded"/>
95          <xs:element name="sequence" type="phy:Sequence" minOccurs="0" maxOccurs="unbounded"/>
96          <xs:element name="events" type="phy:Events" minOccurs="0"/>
97          <xs:element name="binary_characters" type="phy:BinaryCharacters" minOccurs="0"/>
98          <xs:element name="distribution" type="phy:Distribution" minOccurs="0" maxOccurs="unbounded"/>
99          <xs:element name="date" type="phy:Date" minOccurs="0"/>
100          <xs:element name="reference" type="phy:Reference" minOccurs="0" maxOccurs="unbounded"/>
101          <xs:element name="property" type="phy:Property" minOccurs="0" maxOccurs="unbounded"/>
102          <xs:element name="clade" type="phy:Clade" minOccurs="0" maxOccurs="unbounded"/>
103          <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other"/>
104       </xs:sequence>
105       <xs:attribute name="branch_length" type="xs:double"/>
106       <xs:attribute name="id_source" type="phy:id_source"/>
107       <xs:attribute name="collapse" type="xs:boolean"/>
108    </xs:complexType>
109    <!-- Taxonomy:-->
110    <xs:complexType name="Taxonomy">
111       <xs:annotation>
112          <xs:documentation> Element Taxonomy is used to describe taxonomic information for a clade.
113             Element 'code' is intended to store UniProt/Swiss-Prot style organism codes (e.g.
114             'APLCA' for the California sea hare 'Aplysia californica'). Element 'authority' is used
115             to keep the authority, such as 'J. G. Cooper, 1863', associated with the
116             'scientific_name'. Element 'id' is used for a unique identifier of a taxon (for example
117             '6500' with 'ncbi_taxonomy' as 'provider' for the California sea hare). Attribute
118             'id_source' is used to link other elements to a taxonomy (on the
119             xml-level).</xs:documentation>
120       </xs:annotation>
121       <xs:sequence>
122          <xs:element name="id" type="phy:Id" minOccurs="0"/>
123          <xs:element name="code" type="phy:TaxonomyCode" minOccurs="0"/>
124          <xs:element name="scientific_name" type="xs:token" minOccurs="0"/>
125          <xs:element name="authority" type="xs:token" minOccurs="0"/>
126          <xs:element name="common_name" type="xs:token" minOccurs="0"/>
127          <xs:element name="synonym" type="xs:token" minOccurs="0" maxOccurs="unbounded"/>
128          <xs:element name="rank" type="phy:Rank" minOccurs="0"/>
129          <xs:element name="uri" type="phy:Uri" minOccurs="0" maxOccurs="unbounded"/>
130          <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other"/>
131       </xs:sequence>
132       <xs:attribute name="id_source" type="phy:id_source"/>
133    </xs:complexType>
134    <xs:simpleType name="TaxonomyCode">
135       <xs:restriction base="xs:token">
136          <xs:pattern value="([A-Z9][A-Z]{2}[A-Z0-9]{2})|RAT|PIG|PEA"/>
137       </xs:restriction>
138    </xs:simpleType>
139    <xs:simpleType name="Rank">
140       <xs:restriction base="xs:token">
141          <xs:enumeration value="domain"/>
142          <xs:enumeration value="superkingdom"/>
143          <xs:enumeration value="kingdom"/>
144          <xs:enumeration value="subkingdom"/>
145          <xs:enumeration value="branch"/>
146          <xs:enumeration value="infrakingdom"/>
147          <xs:enumeration value="superphylum"/>
148          <xs:enumeration value="phylum"/>
149          <xs:enumeration value="subphylum"/>
150          <xs:enumeration value="infraphylum"/>
151          <xs:enumeration value="microphylum"/>
152          <xs:enumeration value="superdivision"/>
153          <xs:enumeration value="division"/>
154          <xs:enumeration value="subdivision"/>
155          <xs:enumeration value="infradivision"/>
156          <xs:enumeration value="superclass"/>
157          <xs:enumeration value="class"/>
158          <xs:enumeration value="subclass"/>
159          <xs:enumeration value="infraclass"/>
160          <xs:enumeration value="superlegion"/>
161          <xs:enumeration value="legion"/>
162          <xs:enumeration value="sublegion"/>
163          <xs:enumeration value="infralegion"/>
164          <xs:enumeration value="supercohort"/>
165          <xs:enumeration value="cohort"/>
166          <xs:enumeration value="subcohort"/>
167          <xs:enumeration value="infracohort"/>
168          <xs:enumeration value="magnorder"/>
169          <xs:enumeration value="superorder"/>
170          <xs:enumeration value="order"/>
171          <xs:enumeration value="suborder"/>
172          <xs:enumeration value="infraorder"/>
173          <xs:enumeration value="superfamily"/>
174          <xs:enumeration value="family"/>
175          <xs:enumeration value="subfamily"/>
176          <xs:enumeration value="supertribe"/>
177          <xs:enumeration value="tribe"/>
178          <xs:enumeration value="subtribe"/>
179          <xs:enumeration value="infratribe"/>
180          <xs:enumeration value="genus"/>
181          <xs:enumeration value="subgenus"/>
182          <xs:enumeration value="superspecies"/>
183          <xs:enumeration value="species"/>
184          <xs:enumeration value="subspecies"/>
185          <xs:enumeration value="variety"/>
186          <xs:enumeration value="varietas"/>
187          <xs:enumeration value="subvariety"/>
188          <xs:enumeration value="form"/>
189          <xs:enumeration value="subform"/>
190          <xs:enumeration value="cultivar"/>
191          <xs:enumeration value="strain"/>
192          <xs:enumeration value="section"/>
193          <xs:enumeration value="subsection"/>
194          <xs:enumeration value="unknown"/>
195          <xs:enumeration value="other"/>
196       </xs:restriction>
197    </xs:simpleType>
198    <!-- Sequence:-->
199    <xs:complexType name="Sequence">
200       <xs:annotation>
201          <xs:documentation> Element Sequence is used to represent a molecular sequence (Protein,
202             DNA, RNA) associated with a node. 'symbol' is a short (maximal 20 characters) symbol of
203             the sequence (e.g. 'ACTM') whereas 'name' is used for the full name (e.g. 'muscle
204             Actin'). 'gene_name' can be used when protein and gene names differ. 'location' is used
205             for the location of a sequence on a genome/chromosome. The actual sequence can be stored
206             with the 'mol_seq' element. Attribute 'type' is used to indicate the type of sequence
207             ('dna', 'rna', or 'protein'). One intended use for 'id_ref' is to link a sequence to a
208             taxonomy (via the taxonomy's 'id_source') in case of multiple sequences and taxonomies
209             per node. </xs:documentation>
210       </xs:annotation>
211       <xs:sequence>
212          <xs:element name="symbol" type="phy:SequenceSymbol" minOccurs="0"/>
213          <xs:element name="accession" type="phy:Accession" minOccurs="0"/>
214          <xs:element name="name" type="xs:token" minOccurs="0"/>
215          <xs:element name="gene_name" type="xs:token" minOccurs="0"/>
216          <xs:element name="location" type="xs:token" minOccurs="0"/>
217          <xs:element name="mol_seq" type="phy:MolSeq" minOccurs="0"/>
218          <xs:element name="uri" type="phy:Uri" minOccurs="0" maxOccurs="unbounded"/>
219          <xs:element name="annotation" type="phy:Annotation" minOccurs="0" maxOccurs="unbounded"/>
220          <xs:element name="cross_references" type="phy:CrossReferences" minOccurs="0"/>
221          <xs:element name="domain_architecture" type="phy:DomainArchitecture" minOccurs="0"/>
222          <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other"/>
223       </xs:sequence>
224       <xs:attribute name="type" type="phy:SequenceType"/>
225       <xs:attribute name="id_source" type="phy:id_source"/>
226       <xs:attribute name="id_ref" type="phy:id_ref"/>
227    </xs:complexType>
228    <xs:simpleType name="SequenceSymbol">
229       <xs:restriction base="xs:token">
230          <xs:pattern value="\S{1,20}"/>
231       </xs:restriction>
232    </xs:simpleType>
233    <xs:complexType name="MolSeq">
234       <xs:annotation>
235          <xs:documentation> Element 'mol_seq' is used to store molecular sequences. The 'is_aligned'
236             attribute is used to indicated that this molecular sequence is aligned with all other
237             sequences in the same phylogeny for which 'is aligned' is true as well (which, in most
238             cases, means that gaps were introduced, and that all sequences for which 'is aligned' is
239             true must have the same length).</xs:documentation>
240       </xs:annotation>
241       <xs:simpleContent>
242          <xs:extension base="xs:token">
243             <xs:attribute name="is_aligned" type="xs:boolean"/>
244          </xs:extension>
245       </xs:simpleContent>
246    </xs:complexType>
247    <xs:simpleType name="SequenceType">
248       <xs:restriction base="xs:token">
249          <xs:enumeration value="rna"/>
250          <xs:enumeration value="dna"/>
251          <xs:enumeration value="protein"/>
252       </xs:restriction>
253    </xs:simpleType>
254    <!-- Accession:-->
255    <xs:complexType name="Accession">
256       <xs:annotation>
257          <xs:documentation> Element Accession is used to capture the local part in a sequence
258             identifier (e.g. 'P17304' in 'UniProtKB:P17304', in which case the 'source' attribute
259             would be 'UniProtKB'). </xs:documentation>
260       </xs:annotation>
261       <xs:simpleContent>
262          <xs:extension base="xs:token">
263             <xs:attribute name="source" type="xs:token" use="required"/>
264             <xs:attribute name="comment" type="xs:token"/>
265          </xs:extension>
266       </xs:simpleContent>
267    </xs:complexType>
268    <!-- CrossReferences: -->
269    <xs:complexType name="CrossReferences">
270       <xs:annotation>
271          <xs:documentation> Used to store accessions to additional resources. </xs:documentation>
272       </xs:annotation>
273       <xs:sequence>
274          <xs:element name="accession" type="phy:Accession" minOccurs="1" maxOccurs="unbounded"/>
275       </xs:sequence>
276    </xs:complexType>
277    <!-- DomainArchitecture: -->
278    <xs:complexType name="DomainArchitecture">
279       <xs:annotation>
280          <xs:documentation> This is used describe the domain architecture of a protein. Attribute
281             'length' is the total length of the protein</xs:documentation>
282       </xs:annotation>
283       <xs:sequence>
284          <xs:element name="domain" type="phy:ProteinDomain" minOccurs="1" maxOccurs="unbounded"/>
285       </xs:sequence>
286       <xs:attribute name="length" type="xs:nonNegativeInteger"/>
287    </xs:complexType>
288    <xs:complexType name="ProteinDomain">
289       <xs:annotation>
290          <xs:documentation> To represent an individual domain in a domain architecture. The
291             name/unique identifier is described via the 'id' attribute. 'confidence' can be used to
292             store (i.e.) E-values.</xs:documentation>
293       </xs:annotation>
294       <xs:simpleContent>
295          <xs:extension base="xs:token">
296             <xs:attribute name="from" type="xs:nonNegativeInteger" use="required"/>
297             <xs:attribute name="to" type="xs:nonNegativeInteger" use="required"/>
298             <xs:attribute name="confidence" type="xs:double"/>
299             <xs:attribute name="id" type="xs:token"/>
300          </xs:extension>
301       </xs:simpleContent>
302    </xs:complexType>
303    <!-- Events:-->
304    <xs:complexType name="Events">
305       <xs:annotation>
306          <xs:documentation> Events at the root node of a clade (e.g. one gene duplication).
307          </xs:documentation>
308       </xs:annotation>
309       <xs:sequence>
310          <xs:element name="type" type="phy:EventType" minOccurs="0"/>
311          <xs:element name="duplications" type="xs:nonNegativeInteger" minOccurs="0"/>
312          <xs:element name="speciations" type="xs:nonNegativeInteger" minOccurs="0"/>
313          <xs:element name="losses" type="xs:nonNegativeInteger" minOccurs="0"/>
314          <xs:element name="confidence" type="phy:Confidence" minOccurs="0"/>
315       </xs:sequence>
316    </xs:complexType>
317    <xs:simpleType name="EventType">
318       <xs:restriction base="xs:token">
319          <xs:enumeration value="transfer"/>
320          <xs:enumeration value="fusion"/>
321          <xs:enumeration value="speciation_or_duplication"/>
322          <xs:enumeration value="other"/>
323          <xs:enumeration value="mixed"/>
324          <xs:enumeration value="unassigned"/>
325       </xs:restriction>
326    </xs:simpleType>
327    <!--BinaryCharacters:-->
328    <xs:complexType name="BinaryCharacters">
329       <xs:annotation>
330          <xs:documentation> The names and/or counts of binary characters present, gained, and lost
331             at the root of a clade. </xs:documentation>
332       </xs:annotation>
333       <xs:sequence>
334          <xs:element name="gained" type="phy:BinaryCharacterList" minOccurs="0"/>
335          <xs:element name="lost" type="phy:BinaryCharacterList" minOccurs="0"/>
336          <xs:element name="present" type="phy:BinaryCharacterList" minOccurs="0"/>
337          <xs:element name="absent" type="phy:BinaryCharacterList" minOccurs="0"/>
338       </xs:sequence>
339       <xs:attribute name="type" type="xs:token"/>
340       <xs:attribute name="gained_count" type="xs:nonNegativeInteger"/>
341       <xs:attribute name="lost_count" type="xs:nonNegativeInteger"/>
342       <xs:attribute name="present_count" type="xs:nonNegativeInteger"/>
343       <xs:attribute name="absent_count" type="xs:nonNegativeInteger"/>
344    </xs:complexType>
345    <xs:complexType name="BinaryCharacterList">
346       <xs:sequence>
347          <xs:element name="bc" type="xs:token" maxOccurs="unbounded"/>
348       </xs:sequence>
349    </xs:complexType>
350    <!-- Reference:-->
351    <xs:complexType name="Reference">
352       <xs:annotation>
353          <xs:documentation> A literature reference for a clade. It is recommended to use the 'doi'
354             attribute instead of the free text 'desc' element whenever possible. </xs:documentation>
355       </xs:annotation>
356       <xs:sequence>
357          <xs:element name="desc" type="xs:token" minOccurs="0"/>
358       </xs:sequence>
359       <xs:attribute name="doi" type="xs:token"/>
360    </xs:complexType>
361    <!-- Annotation:-->
362    <xs:complexType name="Annotation">
363       <xs:annotation>
364          <xs:documentation> The annotation of a molecular sequence. It is recommended to annotate by
365             using the optional 'ref' attribute (some examples of acceptable values for the ref
366             attribute: 'GO:0008270', 'KEGG:Tetrachloroethene degradation', 'EC:1.1.1.1'). Optional
367             element 'desc' allows for a free text description. Optional element 'confidence' is used
368             to state the type and value of support for a annotation. Similarly, optional attribute
369             'evidence' is used to describe the evidence for a annotation as free text (e.g.
370             'experimental'). Optional element 'property' allows for further, typed and referenced
371             annotations from external resources.</xs:documentation>
372       </xs:annotation>
373       <xs:sequence>
374          <xs:element name="desc" type="xs:token" minOccurs="0"/>
375          <xs:element name="confidence" type="phy:Confidence" minOccurs="0"/>
376          <xs:element name="property" type="phy:Property" minOccurs="0" maxOccurs="unbounded"/>
377          <xs:element name="uri" type="phy:Uri" minOccurs="0" maxOccurs="unbounded"/>
378       </xs:sequence>
379       <xs:attribute name="ref" type="phy:ref"/>
380       <xs:attribute name="source" type="xs:token"/>
381       <xs:attribute name="evidence" type="xs:token"/>
382       <xs:attribute name="type" type="xs:token"/>
383    </xs:complexType>
384    <!-- Property:-->
385    <xs:complexType name="Property" mixed="true">
386       <xs:annotation>
387          <xs:documentation> Property allows for typed and referenced properties from external
388             resources to be attached to 'Phylogeny', 'Clade', and 'Annotation'. The value of a
389             property is its mixed (free text) content. Attribute 'datatype' indicates the type of a
390             property and is limited to xsd-datatypes (e.g. 'xsd:string', 'xsd:boolean',
391             'xsd:integer', 'xsd:decimal', 'xsd:float', 'xsd:double', 'xsd:date', 'xsd:anyURI').
392             Attribute 'applies_to' indicates the item to which a property applies to (e.g. 'node'
393             for the parent node of a clade, 'parent_branch' for the parent branch of a clade).
394             Attribute 'id_ref' allows to attached a property specifically to one element (on the
395             xml-level). Optional attribute 'unit' is used to indicate the unit of the property. An
396             example: &lt;property datatype="xsd:integer" ref="NOAA:depth" applies_to="clade"
397             unit="METRIC:m"> 200 &lt;/property> </xs:documentation>
398       </xs:annotation>
399       <xs:attribute name="ref" type="phy:ref" use="required"/>
400       <xs:attribute name="unit" type="phy:ref"/>
401       <xs:attribute name="datatype" type="phy:PropertyDataType" use="required"/>
402       <xs:attribute name="applies_to" type="phy:AppliesTo" use="required"/>
403       <xs:attribute name="id_ref" type="phy:id_ref"/>
404    </xs:complexType>
405    <xs:simpleType name="ref">
406       <xs:restriction base="xs:token">
407          <xs:pattern value="[a-zA-Z0-9_]+:\S+"/>
408       </xs:restriction>
409    </xs:simpleType>
410    <xs:simpleType name="AppliesTo">
411       <xs:restriction base="xs:token">
412          <xs:enumeration value="phylogeny"/>
413          <xs:enumeration value="clade"/>
414          <xs:enumeration value="node"/>
415          <xs:enumeration value="annotation"/>
416          <xs:enumeration value="parent_branch"/>
417          <xs:enumeration value="other"/>
418       </xs:restriction>
419    </xs:simpleType>
420    <xs:simpleType name="PropertyDataType">
421       <xs:restriction base="xs:token">
422          <xs:enumeration value="xsd:string"/>
423          <xs:enumeration value="xsd:boolean"/>
424          <xs:enumeration value="xsd:decimal"/>
425          <xs:enumeration value="xsd:float"/>
426          <xs:enumeration value="xsd:double"/>
427          <xs:enumeration value="xsd:duration"/>
428          <xs:enumeration value="xsd:dateTime"/>
429          <xs:enumeration value="xsd:time"/>
430          <xs:enumeration value="xsd:date"/>
431          <xs:enumeration value="xsd:gYearMonth"/>
432          <xs:enumeration value="xsd:gYear"/>
433          <xs:enumeration value="xsd:gMonthDay"/>
434          <xs:enumeration value="xsd:gDay"/>
435          <xs:enumeration value="xsd:gMonth"/>
436          <xs:enumeration value="xsd:hexBinary"/>
437          <xs:enumeration value="xsd:base64Binary"/>
438          <xs:enumeration value="xsd:anyURI"/>
439          <xs:enumeration value="xsd:normalizedString"/>
440          <xs:enumeration value="xsd:token"/>
441          <xs:enumeration value="xsd:integer"/>
442          <xs:enumeration value="xsd:nonPositiveInteger"/>
443          <xs:enumeration value="xsd:negativeInteger"/>
444          <xs:enumeration value="xsd:long"/>
445          <xs:enumeration value="xsd:int"/>
446          <xs:enumeration value="xsd:short"/>
447          <xs:enumeration value="xsd:byte"/>
448          <xs:enumeration value="xsd:nonNegativeInteger"/>
449          <xs:enumeration value="xsd:unsignedLong"/>
450          <xs:enumeration value="xsd:unsignedInt"/>
451          <xs:enumeration value="xsd:unsignedShort"/>
452          <xs:enumeration value="xsd:unsignedByte"/>
453          <xs:enumeration value="xsd:positiveInteger"/>
454       </xs:restriction>
455    </xs:simpleType>
456    <!--Uri-->
457    <xs:complexType name="Uri">
458       <xs:annotation>
459          <xs:documentation> A uniform resource identifier. In general, this is expected to be an URL
460             (for example, to link to an image on a website, in which case the 'type' attribute might
461             be 'image' and 'desc' might be 'image of a California sea hare'). </xs:documentation>
462       </xs:annotation>
463       <xs:simpleContent>
464          <xs:extension base="xs:anyURI">
465             <xs:attribute name="desc" type="xs:token"/>
466             <xs:attribute name="type" type="xs:token"/>
467          </xs:extension>
468       </xs:simpleContent>
469    </xs:complexType>
470    <!-- Confidence:-->
471    <xs:complexType name="Confidence">
472       <xs:annotation>
473          <xs:documentation> A general purpose confidence element. For example this can be used to
474             express the bootstrap support value of a clade (in which case the 'type' attribute is
475             'bootstrap').</xs:documentation>
476       </xs:annotation>
477       <xs:simpleContent>
478          <xs:extension base="xs:double">
479             <xs:attribute name="type" type="xs:token" use="required"/>
480             <xs:attribute name="stddev" type="xs:double"/>
481          </xs:extension>
482       </xs:simpleContent>
483    </xs:complexType>
484    <!-- Identifier:-->
485    <xs:complexType name="Id">
486       <xs:annotation>
487          <xs:documentation> A general purpose identifier element. Allows to indicate the provider
488             (or authority) of an identifier. </xs:documentation>
489       </xs:annotation>
490       <xs:simpleContent>
491          <xs:extension base="xs:token">
492             <xs:attribute name="provider" type="xs:token"/>
493          </xs:extension>
494       </xs:simpleContent>
495    </xs:complexType>
496    <!-- Distribution:-->
497    <xs:complexType name="Distribution">
498       <xs:annotation>
499          <xs:documentation> The geographic distribution of the items of a clade (species,
500             sequences), intended for phylogeographic applications. The location can be described
501             either by free text in the 'desc' element and/or by the coordinates of one or more
502             'Points' (similar to the 'Point' element in Google's KML format) or by 'Polygons'.
503          </xs:documentation>
504       </xs:annotation>
505       <xs:sequence>
506          <xs:element name="desc" type="xs:token" minOccurs="0"/>
507          <xs:element name="point" type="phy:Point" minOccurs="0" maxOccurs="unbounded"/>
508          <xs:element name="polygon" type="phy:Polygon" minOccurs="0" maxOccurs="unbounded"/>
509       </xs:sequence>
510    </xs:complexType>
511    <xs:complexType name="Point">
512       <xs:annotation>
513          <xs:documentation> The coordinates of a point with an optional altitude (used by element
514             'Distribution'). Required attributes are the 'geodetic_datum' used to indicate the
515             geodetic datum (also called 'map datum', for example Google's KML uses 'WGS84').
516             Attribute 'alt_unit' is the unit for the altitude (e.g. 'meter'). </xs:documentation>
517       </xs:annotation>
518       <xs:sequence>
519          <xs:element name="lat" type="xs:decimal"/>
520          <xs:element name="long" type="xs:decimal"/>
521          <xs:element name="alt" type="xs:decimal" minOccurs="0"/>
522       </xs:sequence>
523       <xs:attribute name="geodetic_datum" type="xs:token" use="required"/>
524       <xs:attribute name="alt_unit" type="xs:token"/>
525    </xs:complexType>
526    <xs:complexType name="Polygon">
527       <xs:annotation>
528          <xs:documentation> A polygon defined by a list of 'Points' (used by element
529             'Distribution'). </xs:documentation>
530       </xs:annotation>
531       <xs:sequence>
532          <xs:element name="point" type="phy:Point" minOccurs="3" maxOccurs="unbounded"/>
533       </xs:sequence>
534    </xs:complexType>
535    <!-- Date:-->
536    <xs:complexType name="Date">
537       <xs:annotation>
538          <xs:documentation> A date associated with a clade/node. Its value can be numerical by using
539             the 'value' element and/or free text with the 'desc' element' (e.g. 'Silurian'). If a
540             numerical value is used, it is recommended to employ the 'unit' attribute to indicate
541             the type of the numerical value (e.g. 'mya' for 'million years ago'). The elements
542             'minimum' and 'maximum' are used the indicate a range/confidence
543             interval</xs:documentation>
544       </xs:annotation>
545       <xs:sequence>
546          <xs:element name="desc" type="xs:token" minOccurs="0"/>
547          <xs:element name="value" type="xs:decimal" minOccurs="0"/>
548          <xs:element name="minimum" type="xs:decimal" minOccurs="0"/>
549          <xs:element name="maximum" type="xs:decimal" minOccurs="0"/>
550       </xs:sequence>
551       <xs:attribute name="unit" type="xs:token"/>
552    </xs:complexType>
553    <!-- BranchColor:-->
554    <xs:complexType name="BranchColor">
555       <xs:annotation>
556          <xs:documentation> This indicates the color of a clade when rendered (the color applies to
557             the whole clade unless overwritten by the color(s) of sub clades).</xs:documentation>
558       </xs:annotation>
559       <xs:sequence>
560          <xs:element name="red" type="xs:unsignedByte"/>
561          <xs:element name="green" type="xs:unsignedByte"/>
562          <xs:element name="blue" type="xs:unsignedByte"/>
563          <xs:element name="alpha" type="xs:unsignedByte" minOccurs="0"/>
564       </xs:sequence>
565    </xs:complexType>
566    <!-- SequenceRelation:-->
567    <xs:complexType name="SequenceRelation">
568       <xs:annotation>
569          <xs:documentation> This is used to express a typed relationship between two sequences. For
570             example it could be used to describe an orthology (in which case attribute 'type' is
571             'orthology'). </xs:documentation>
572       </xs:annotation>
573       <xs:sequence>
574          <xs:element name="confidence" type="phy:Confidence" minOccurs="0"/>
575       </xs:sequence>
576       <xs:attribute name="id_ref_0" type="phy:id_ref" use="required"/>
577       <xs:attribute name="id_ref_1" type="phy:id_ref" use="required"/>
578       <xs:attribute name="distance" type="xs:double"/>
579       <xs:attribute name="type" type="phy:SequenceRelationType" use="required"/>
580    </xs:complexType>
581    <xs:simpleType name="SequenceRelationType">
582       <xs:restriction base="xs:token">
583          <xs:enumeration value="orthology"/>
584          <xs:enumeration value="one_to_one_orthology"/>
585          <xs:enumeration value="super_orthology"/>
586          <xs:enumeration value="paralogy"/>
587          <xs:enumeration value="ultra_paralogy"/>
588          <xs:enumeration value="xenology"/>
589          <xs:enumeration value="unknown"/>
590          <xs:enumeration value="other"/>
591       </xs:restriction>
592    </xs:simpleType>
593    <!-- CladeRelation:-->
594    <xs:complexType name="CladeRelation">
595       <xs:annotation>
596          <xs:documentation> This is used to express a typed relationship between two clades. For
597             example it could be used to describe multiple parents of a clade.</xs:documentation>
598       </xs:annotation>
599       <xs:sequence>
600          <xs:element name="confidence" type="phy:Confidence" minOccurs="0"/>
601       </xs:sequence>
602       <xs:attribute name="id_ref_0" type="phy:id_ref" use="required"/>
603       <xs:attribute name="id_ref_1" type="phy:id_ref" use="required"/>
604       <xs:attribute name="distance" type="xs:double"/>
605       <xs:attribute name="type" type="xs:token" use="required"/>
606    </xs:complexType>
607    <!-- Used to link elements together on the xml level:-->
608    <xs:simpleType name="id_source">
609       <xs:restriction base="xs:ID"/>
610    </xs:simpleType>
611    <xs:simpleType name="id_ref">
612       <xs:restriction base="xs:IDREF"/>
613    </xs:simpleType>
614 </xs:schema>