domain + go output work begins
[jalview.git] / forester / resources / phyloxml_schema / 0.90 / phyloxml.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--                                                -->
3 <!-- phyloXML                                       -->
4 <!--                                                -->
5 <!-- schema in XMLSchema                            -->
6 <!-- Version: 0.90                                  -->
7 <!-- Last modifed: 2008.03.10 by Christian M Zmasek -->
8 <!--                                                -->
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"/>
18       </xs:sequence>
19    </xs:complexType>
20    <!-- Phylogeny:-->
21    <xs:complexType name="Phylogeny">
22       <xs:sequence>
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"/>
33       </xs:sequence>
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"/>
38    </xs:complexType>
39    <!-- Clade:-->
40    <xs:complexType name="Clade">
41       <xs:sequence>
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"/>
57       </xs:sequence>
58       <xs:attribute name="distance" type="xs:double"/>
59       <xs:attribute name="id_source" type="phy:id_source"/>
60    </xs:complexType>
61    <!-- Taxonomy:-->
62    <xs:complexType name="Taxonomy">
63       <xs:sequence>
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"/>
71       </xs:sequence>
72       <xs:attribute name="type" type="xs:token"/>
73    </xs:complexType>
74    <xs:simpleType name="TaxonomyCode">
75       <xs:restriction base="xs:token">
76          <xs:pattern value="[a-zA-Z0-9_]{2,20}"/>
77       </xs:restriction>
78    </xs:simpleType>
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"/>
105       </xs:restriction>
106    </xs:simpleType>
107    <!-- Sequence:-->
108    <xs:complexType name="Sequence">
109       <xs: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"/>
119       </xs:sequence>
120       <xs:attribute name="id_source" type="phy:id_source"/>
121       <xs:attribute name="type" type="xs:token"/>
122    </xs:complexType>
123    <xs:simpleType name="MolSeq">
124       <xs:restriction base="xs:token">
125          <xs:pattern value="[a-zA-Z\.\-\?\*_]+"/>
126       </xs:restriction>
127    </xs:simpleType>
128    <!-- DomainArchitecture: -->
129    <xs:complexType name="DomainArchitecture">
130       <xs:sequence>
131          <xs:element name="domain" type="phy:ProteinDomain" minOccurs="1" maxOccurs="unbounded"/>
132       </xs:sequence>
133       <xs:attribute name="length" type="xs:nonNegativeInteger"/>
134    </xs:complexType>
135    <xs:complexType name="ProteinDomain">
136       <xs:simpleContent>
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"/>
142          </xs:extension>
143       </xs:simpleContent>
144    </xs:complexType>
145    <!-- Event:-->
146    <xs:complexType name="Event">
147       <xs:sequence>
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"/>
153       </xs:sequence>
154    </xs:complexType>
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"/>
164       </xs:restriction>
165    </xs:simpleType>
166    <!--BinaryCharacters:-->
167    <xs:complexType name="BinaryCharacters">
168       <xs:sequence>
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"/>
173       </xs:sequence>
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"/>
179    </xs:complexType>
180    <xs:complexType name="BinaryCharacterList">
181       <xs:sequence>
182          <xs:element name="bc" type="xs:token" maxOccurs="unbounded"/>
183       </xs:sequence>
184    </xs:complexType>
185    <!-- Annotation:-->
186    <xs:complexType mixed="true" name="Annotation">
187       <xs:sequence>
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"/>
191       </xs:sequence>
192       <xs:attribute name="type" type="xs:token"/>
193    </xs:complexType>
194    <!-- Custom:-->
195    <xs:complexType name="Custom">
196       <xs:sequence>
197          <xs:element name="name" type="xs:token"/>
198          <xs:element name="value" type="xs:token"/>
199       </xs:sequence>
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"/>
204    </xs:complexType>
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"/>
215       </xs:restriction>
216    </xs:simpleType>
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"/>
225       </xs:restriction>
226    </xs:simpleType>
227    <!--Uri-->
228    <xs:complexType name="Uri">
229       <xs:simpleContent>
230          <xs:extension base="xs:anyURI">
231             <xs:attribute name="desc" type="xs:token"/>
232             <xs:attribute name="type" type="xs:token"/>
233          </xs:extension>
234       </xs:simpleContent>
235    </xs:complexType>
236    <!-- Confidence:-->
237    <xs:complexType name="Confidence">
238       <xs:simpleContent>
239          <xs:extension base="xs:double">
240             <xs:attribute name="type" type="xs:token" use="required"/>
241          </xs:extension>
242       </xs:simpleContent>
243    </xs:complexType>
244    <!-- Identifier:-->
245    <xs:complexType name="Id">
246       <xs:simpleContent>
247          <xs:extension base="xs:token">
248             <xs:attribute name="type" type="xs:token"/>
249          </xs:extension>
250       </xs:simpleContent>
251    </xs:complexType>
252    <!-- Distribution:-->
253    <xs:simpleType name="Distribution">
254       <xs:restriction base="xs:token"/>
255    </xs:simpleType>
256    <!-- BranchColor:-->
257    <xs:complexType name="BranchColor">
258       <xs:sequence>
259          <xs:element name="red" type="xs:unsignedByte"/>
260          <xs:element name="green" type="xs:unsignedByte"/>
261          <xs:element name="blue" type="xs:unsignedByte"/>
262       </xs:sequence>
263    </xs:complexType>
264    <!-- SequenceRelation:-->
265    <xs:complexType name="SequenceRelation">
266       <xs:sequence>
267          <xs:element name="confidence" type="phy:Confidence" minOccurs="0"/>
268       </xs:sequence>
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"/>
273    </xs:complexType>
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"/>
284       </xs:restriction>
285    </xs:simpleType>
286    <!-- CladeRelation:-->
287    <xs:complexType name="CladeRelation">
288       <xs:sequence>
289          <xs:element name="confidence" type="phy:Confidence" minOccurs="0"/>
290       </xs:sequence>
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"/>
295    </xs:complexType>
296    <!-- Used to link elements together on the xml level:-->
297    <xs:simpleType name="id_source">
298       <xs:restriction base="xs:ID"/>
299    </xs:simpleType>
300    <xs:simpleType name="id_ref">
301       <xs:restriction base="xs:IDREF"/>
302    </xs:simpleType>
303 </xs:schema>