bioruby-phyloxml 1.0.0

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