1 <?xml version="1.0" encoding="UTF-8"?>
5 <!-- schema in XMLSchema -->
7 <!-- Last modifed: 2008.03.10 by Christian M Zmasek -->
9 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:phy="http://www.phyloxml.org"
10 targetNamespace="http://www.phyloxml.org" elementFormDefault="qualified" attributeFormDefault="unqualified">
11 <!-- phyloxml is the root element:-->
12 <xs:element name="phyloxml" type="phy:Phyloxml"/>
13 <!-- phyloXML definition:-->
14 <xs:complexType name="Phyloxml">
15 <xs:sequence maxOccurs="unbounded">
16 <xs:element name="phylogeny" type="phy:Phylogeny" minOccurs="0" maxOccurs="unbounded"/>
17 <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other"/>
21 <xs:complexType name="Phylogeny">
23 <xs:element name="name" type="xs:token" minOccurs="0"/>
24 <xs:element name="id" type="phy:Id" minOccurs="0"/>
25 <xs:element name="description" type="xs:token" minOccurs="0"/>
26 <xs:element name="date" type="xs:dateTime" minOccurs="0"/>
27 <xs:element name="confidence" type="phy:Confidence" minOccurs="0" maxOccurs="unbounded"/>
28 <xs:element name="clade" type="phy:Clade" minOccurs="0"/>
29 <xs:element name="clade_relation" type="phy:CladeRelation" minOccurs="0" maxOccurs="unbounded"/>
30 <xs:element name="sequence_relation" type="phy:SequenceRelation" minOccurs="0" maxOccurs="unbounded"/>
31 <xs:element name="custom" type="phy:Custom" minOccurs="0" maxOccurs="unbounded"/>
32 <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other"/>
34 <xs:attribute name="rooted" type="xs:boolean" use="required"/>
35 <xs:attribute name="rerootable" type="xs:boolean"/>
36 <xs:attribute name="distance_unit" type="xs:token"/>
37 <xs:attribute name="type" type="xs:token"/>
40 <xs:complexType name="Clade">
42 <xs:element name="name" type="xs:token" minOccurs="0"/>
43 <xs:element name="distance" type="xs:double" minOccurs="0"/>
44 <xs:element name="confidence" type="phy:Confidence" minOccurs="0" maxOccurs="unbounded"/>
45 <xs:element name="width" type="xs:double" minOccurs="0"/>
46 <xs:element name="color" type="phy:BranchColor" minOccurs="0"/>
47 <xs:element name="node_id" type="phy:Id" minOccurs="0"/>
48 <xs:element name="taxonomy" type="phy:Taxonomy" minOccurs="0" maxOccurs="unbounded"/>
49 <xs:element name="sequence" type="phy:Sequence" minOccurs="0" maxOccurs="unbounded"/>
50 <xs:element name="event" type="phy:Event" minOccurs="0"/>
51 <xs:element name="binary_characters" type="phy:BinaryCharacters" minOccurs="0"/>
52 <xs:element name="distribution" type="xs:token" minOccurs="0"/>
53 <xs:element name="date" type="xs:token" minOccurs="0"/>
54 <xs:element name="clade" type="phy:Clade" minOccurs="0" maxOccurs="unbounded"/>
55 <xs:element name="custom" type="phy:Custom" minOccurs="0"/>
56 <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other"/>
58 <xs:attribute name="distance" type="xs:double"/>
59 <xs:attribute name="id_source" type="phy:id_source"/>
62 <xs:complexType name="Taxonomy">
64 <xs:element name="id" type="phy:Id" minOccurs="0"/>
65 <xs:element name="code" type="phy:TaxonomyCode" minOccurs="0"/>
66 <xs:element name="scientific_name" type="xs:token" minOccurs="0"/>
67 <xs:element name="common_name" type="xs:token" minOccurs="0"/>
68 <xs:element name="rank" type="phy:Rank" minOccurs="0"/>
69 <xs:element name="uri" type="phy:Uri" minOccurs="0"/>
70 <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other"/>
72 <xs:attribute name="type" type="xs:token"/>
74 <xs:simpleType name="TaxonomyCode">
75 <xs:restriction base="xs:token">
76 <xs:pattern value="[a-zA-Z0-9_]{2,20}"/>
79 <xs:simpleType name="Rank">
80 <xs:restriction base="xs:token">
81 <xs:enumeration value="domain"/>
82 <xs:enumeration value="kingdom"/>
83 <xs:enumeration value="branch"/>
84 <xs:enumeration value="phylum"/>
85 <xs:enumeration value="subphylum"/>
86 <xs:enumeration value="division"/>
87 <xs:enumeration value="superclass"/>
88 <xs:enumeration value="class"/>
89 <xs:enumeration value="subclass"/>
90 <xs:enumeration value="superorder"/>
91 <xs:enumeration value="order"/>
92 <xs:enumeration value="suborder"/>
93 <xs:enumeration value="superfamily"/>
94 <xs:enumeration value="family"/>
95 <xs:enumeration value="subfamily"/>
96 <xs:enumeration value="genus"/>
97 <xs:enumeration value="subgenus"/>
98 <xs:enumeration value="species"/>
99 <xs:enumeration value="subspecies"/>
100 <xs:enumeration value="variety"/>
101 <xs:enumeration value="form"/>
102 <xs:enumeration value="cultivar"/>
103 <xs:enumeration value="unknown"/>
104 <xs:enumeration value="other"/>
108 <xs:complexType name="Sequence">
110 <xs:element name="id" type="phy:Id" minOccurs="0"/>
111 <xs:element name="accession" type="xs:token" minOccurs="0"/>
112 <xs:element name="gene_name" type="xs:token" minOccurs="0"/>
113 <xs:element name="location" type="xs:token" minOccurs="0"/>
114 <xs:element name="mol_seq" type="phy:MolSeq" minOccurs="0"/>
115 <xs:element name="uri" type="phy:Uri" minOccurs="0"/>
116 <xs:element name="annotation" type="phy:Annotation" minOccurs="0" maxOccurs="unbounded"/>
117 <xs:element name="domain_architecture" type="phy:DomainArchitecture" minOccurs="0"/>
118 <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other"/>
120 <xs:attribute name="id_source" type="phy:id_source"/>
121 <xs:attribute name="type" type="xs:token"/>
123 <xs:simpleType name="MolSeq">
124 <xs:restriction base="xs:token">
125 <xs:pattern value="[a-zA-Z\.\-\?\*_]+"/>
128 <!-- DomainArchitecture: -->
129 <xs:complexType name="DomainArchitecture">
131 <xs:element name="domain" type="phy:ProteinDomain" minOccurs="1" maxOccurs="unbounded"/>
133 <xs:attribute name="length" type="xs:nonNegativeInteger"/>
135 <xs:complexType name="ProteinDomain">
137 <xs:extension base="xs:token">
138 <xs:attribute name="from" type="xs:nonNegativeInteger" use="required"/>
139 <xs:attribute name="to" type="xs:nonNegativeInteger" use="required"/>
140 <xs:attribute name="confidence" type="xs:double"/>
141 <xs:attribute name="id" type="xs:token"/>
146 <xs:complexType name="Event">
148 <xs:element name="type" type="phy:EventType" minOccurs="0"/>
149 <xs:element name="duplications" type="xs:nonNegativeInteger" minOccurs="0"/>
150 <xs:element name="speciations" type="xs:nonNegativeInteger" minOccurs="0"/>
151 <xs:element name="losses" type="xs:nonNegativeInteger" minOccurs="0"/>
152 <xs:element name="confidence" type="phy:Confidence" minOccurs="0"/>
155 <xs:simpleType name="EventType">
156 <xs:restriction base="xs:token">
157 <xs:enumeration value="transfer"/>
158 <xs:enumeration value="fusion"/>
159 <xs:enumeration value="root"/>
160 <xs:enumeration value="speciation_or_duplication"/>
161 <xs:enumeration value="other"/>
162 <xs:enumeration value="mixed"/>
163 <xs:enumeration value="unassigned"/>
166 <!--BinaryCharacters:-->
167 <xs:complexType name="BinaryCharacters">
169 <xs:element name="gained" type="phy:BinaryCharacterList" minOccurs="0"/>
170 <xs:element name="lost" type="phy:BinaryCharacterList" minOccurs="0"/>
171 <xs:element name="present" type="phy:BinaryCharacterList" minOccurs="0"/>
172 <xs:element name="absent" type="phy:BinaryCharacterList" minOccurs="0"/>
174 <xs:attribute name="type" type="xs:token"/>
175 <xs:attribute name="gained_count" type="xs:nonNegativeInteger"/>
176 <xs:attribute name="lost_count" type="xs:nonNegativeInteger"/>
177 <xs:attribute name="present_count" type="xs:nonNegativeInteger"/>
178 <xs:attribute name="absent_count" type="xs:nonNegativeInteger"/>
180 <xs:complexType name="BinaryCharacterList">
182 <xs:element name="bc" type="xs:token" maxOccurs="unbounded"/>
186 <xs:complexType mixed="true" name="Annotation">
188 <xs:element name="id" type="phy:Id" minOccurs="0"/>
189 <xs:element name="confidence" type="phy:Confidence" minOccurs="0"/>
190 <xs:element name="uri" type="phy:Uri" minOccurs="0"/>
192 <xs:attribute name="type" type="xs:token"/>
195 <xs:complexType name="Custom">
197 <xs:element name="name" type="xs:token"/>
198 <xs:element name="value" type="xs:token"/>
200 <xs:attribute name="unit" type="xs:token"/>
201 <xs:attribute name="custom_type" type="phy:CustomType" use="required"/>
202 <xs:attribute name="custom_property" type="phy:CustomProperty" use="required"/>
203 <xs:attribute name="id_ref" type="phy:id_ref"/>
205 <xs:simpleType name="CustomType">
206 <xs:restriction base="xs:token">
207 <xs:enumeration value="string"/>
208 <xs:enumeration value="character"/>
209 <xs:enumeration value="decimal"/>
210 <xs:enumeration value="integer"/>
211 <xs:enumeration value="byte"/>
212 <xs:enumeration value="boolean"/>
213 <xs:enumeration value="uri"/>
214 <xs:enumeration value="other"/>
217 <xs:simpleType name="CustomProperty">
218 <xs:restriction base="xs:token">
219 <xs:enumeration value="phylogeny"/>
220 <xs:enumeration value="clade"/>
221 <xs:enumeration value="node"/>
222 <xs:enumeration value="sequence"/>
223 <xs:enumeration value="taxonomy"/>
224 <xs:enumeration value="other"/>
228 <xs:complexType name="Uri">
230 <xs:extension base="xs:anyURI">
231 <xs:attribute name="desc" type="xs:token"/>
232 <xs:attribute name="type" type="xs:token"/>
237 <xs:complexType name="Confidence">
239 <xs:extension base="xs:double">
240 <xs:attribute name="type" type="xs:token" use="required"/>
245 <xs:complexType name="Id">
247 <xs:extension base="xs:token">
248 <xs:attribute name="type" type="xs:token"/>
252 <!-- Distribution:-->
253 <xs:simpleType name="Distribution">
254 <xs:restriction base="xs:token"/>
257 <xs:complexType name="BranchColor">
259 <xs:element name="red" type="xs:unsignedByte"/>
260 <xs:element name="green" type="xs:unsignedByte"/>
261 <xs:element name="blue" type="xs:unsignedByte"/>
264 <!-- SequenceRelation:-->
265 <xs:complexType name="SequenceRelation">
267 <xs:element name="confidence" type="phy:Confidence" minOccurs="0"/>
269 <xs:attribute name="id_ref_0" type="phy:id_ref" use="required"/>
270 <xs:attribute name="id_ref_1" type="phy:id_ref" use="required"/>
271 <xs:attribute name="distance" type="xs:double"/>
272 <xs:attribute name="type" type="phy:SequenceRelationType" use="required"/>
274 <xs:simpleType name="SequenceRelationType">
275 <xs:restriction base="xs:token">
276 <xs:enumeration value="orthology"/>
277 <xs:enumeration value="one_to_one_orthology"/>
278 <xs:enumeration value="super_orthology"/>
279 <xs:enumeration value="paralogy"/>
280 <xs:enumeration value="ultra_paralogy"/>
281 <xs:enumeration value="xenology"/>
282 <xs:enumeration value="unknown"/>
283 <xs:enumeration value="other"/>
286 <!-- CladeRelation:-->
287 <xs:complexType name="CladeRelation">
289 <xs:element name="confidence" type="phy:Confidence" minOccurs="0"/>
291 <xs:attribute name="id_ref_0" type="phy:id_ref" use="required"/>
292 <xs:attribute name="id_ref_1" type="phy:id_ref" use="required"/>
293 <xs:attribute name="distance" type="xs:double"/>
294 <xs:attribute name="type" type="xs:token" use="required"/>
296 <!-- Used to link elements together on the xml level:-->
297 <xs:simpleType name="id_source">
298 <xs:restriction base="xs:ID"/>
300 <xs:simpleType name="id_ref">
301 <xs:restriction base="xs:IDREF"/>