bio-nexml 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +15 -0
- data/Gemfile.lock +24 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +47 -0
- data/Rakefile +55 -0
- data/TODO.txt +6 -0
- data/VERSION +1 -0
- data/bio-nexml.gemspec +126 -0
- data/extconf.rb +2 -0
- data/lib/bio-nexml.rb +0 -0
- data/lib/bio.rb +321 -0
- data/lib/bio/db/nexml.rb +109 -0
- data/lib/bio/db/nexml/mapper.rb +113 -0
- data/lib/bio/db/nexml/mapper/framework.rb +157 -0
- data/lib/bio/db/nexml/mapper/inflection.rb +99 -0
- data/lib/bio/db/nexml/mapper/repository.rb +59 -0
- data/lib/bio/db/nexml/matrix.rb +1046 -0
- data/lib/bio/db/nexml/parser.rb +622 -0
- data/lib/bio/db/nexml/schema/README.txt +21 -0
- data/lib/bio/db/nexml/schema/abstract.xsd +159 -0
- data/lib/bio/db/nexml/schema/characters/README.txt +1 -0
- data/lib/bio/db/nexml/schema/characters/abstractcharacters.xsd +361 -0
- data/lib/bio/db/nexml/schema/characters/characters.xsd +22 -0
- data/lib/bio/db/nexml/schema/characters/continuous.xsd +190 -0
- data/lib/bio/db/nexml/schema/characters/dna.xsd +282 -0
- data/lib/bio/db/nexml/schema/characters/protein.xsd +280 -0
- data/lib/bio/db/nexml/schema/characters/restriction.xsd +239 -0
- data/lib/bio/db/nexml/schema/characters/rna.xsd +283 -0
- data/lib/bio/db/nexml/schema/characters/standard.xsd +261 -0
- data/lib/bio/db/nexml/schema/external/sawsdl.xsd +21 -0
- data/lib/bio/db/nexml/schema/external/xhtml-datatypes-1.xsd +177 -0
- data/lib/bio/db/nexml/schema/external/xlink.xsd +75 -0
- data/lib/bio/db/nexml/schema/external/xml.xsd +145 -0
- data/lib/bio/db/nexml/schema/meta/README.txt +2 -0
- data/lib/bio/db/nexml/schema/meta/annotations.xsd +100 -0
- data/lib/bio/db/nexml/schema/meta/meta.xsd +294 -0
- data/lib/bio/db/nexml/schema/nexml.xsd +104 -0
- data/lib/bio/db/nexml/schema/taxa/README.txt +2 -0
- data/lib/bio/db/nexml/schema/taxa/taxa.xsd +39 -0
- data/lib/bio/db/nexml/schema/trees/README.txt +2 -0
- data/lib/bio/db/nexml/schema/trees/abstracttrees.xsd +135 -0
- data/lib/bio/db/nexml/schema/trees/network.xsd +113 -0
- data/lib/bio/db/nexml/schema/trees/tree.xsd +149 -0
- data/lib/bio/db/nexml/schema/trees/trees.xsd +36 -0
- data/lib/bio/db/nexml/taxa.rb +147 -0
- data/lib/bio/db/nexml/trees.rb +663 -0
- data/lib/bio/db/nexml/writer.rb +265 -0
- data/test/data/nexml/test.xml +69 -0
- data/test/test_bio-nexml.rb +17 -0
- data/test/unit/bio/db/nexml/tc_factory.rb +119 -0
- data/test/unit/bio/db/nexml/tc_mapper.rb +78 -0
- data/test/unit/bio/db/nexml/tc_matrix.rb +551 -0
- data/test/unit/bio/db/nexml/tc_parser.rb +21 -0
- data/test/unit/bio/db/nexml/tc_taxa.rb +118 -0
- data/test/unit/bio/db/nexml/tc_trees.rb +370 -0
- data/test/unit/bio/db/nexml/tc_writer.rb +633 -0
- metadata +253 -0
@@ -0,0 +1,294 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<xs:schema
|
3
|
+
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
4
|
+
targetNamespace="http://www.nexml.org/2009"
|
5
|
+
xmlns="http://www.nexml.org/2009"
|
6
|
+
elementFormDefault="qualified">
|
7
|
+
<xs:annotation>
|
8
|
+
<xs:documentation>
|
9
|
+
This module defines subclasses of the dictionaries
|
10
|
+
defined in the <a href="../annotations">annotations</a>
|
11
|
+
module. The subclasses are used to attach metadata about
|
12
|
+
revision control status of a file (the RCS* types),
|
13
|
+
<a href="http://dublincore.org/">dublin core</a> metadata
|
14
|
+
and common web formats (XHTML, RSS).
|
15
|
+
</xs:documentation>
|
16
|
+
</xs:annotation>
|
17
|
+
<xs:include schemaLocation="annotations.xsd"/>
|
18
|
+
|
19
|
+
<!-- a simple key/value pair, where key
|
20
|
+
*must* be <key>date</key>, and value
|
21
|
+
must be of the pattern
|
22
|
+
<string>$Date: [svn date here]$</string> -->
|
23
|
+
<xs:simpleType name="DateKey">
|
24
|
+
<xs:restriction base="xs:string">
|
25
|
+
<xs:pattern value="date"/>
|
26
|
+
</xs:restriction>
|
27
|
+
</xs:simpleType>
|
28
|
+
<xs:simpleType name="DateVal">
|
29
|
+
<xs:restriction base="xs:string">
|
30
|
+
<xs:pattern value="$Date: .*$"/>
|
31
|
+
</xs:restriction>
|
32
|
+
</xs:simpleType>
|
33
|
+
<!--xs:complexType name="RCSDate">
|
34
|
+
<xs:annotation>
|
35
|
+
<xs:documentation>
|
36
|
+
a simple key/value pair, where key
|
37
|
+
<em>must</em> be /^date$/, and value
|
38
|
+
must be of the pattern
|
39
|
+
/^$Date: .*\$$/
|
40
|
+
</xs:documentation>
|
41
|
+
</xs:annotation>
|
42
|
+
<xs:complexContent>
|
43
|
+
<xs:restriction base="Dict">
|
44
|
+
<xs:sequence minOccurs="1" maxOccurs="1">
|
45
|
+
<xs:element name="key" type="DateKey" minOccurs="1" maxOccurs="1"/>
|
46
|
+
<xs:element name="string" type="DateVal" minOccurs="1" maxOccurs="1"/>
|
47
|
+
</xs:sequence>
|
48
|
+
</xs:restriction>
|
49
|
+
</xs:complexContent>
|
50
|
+
</xs:complexType-->
|
51
|
+
|
52
|
+
<!-- same thing for svn $Rev: $ -->
|
53
|
+
<xs:simpleType name="RevKey">
|
54
|
+
<xs:restriction base="xs:string">
|
55
|
+
<xs:pattern value="rev"/>
|
56
|
+
</xs:restriction>
|
57
|
+
</xs:simpleType>
|
58
|
+
<xs:simpleType name="RevVal">
|
59
|
+
<xs:restriction base="xs:string">
|
60
|
+
<xs:pattern value="$Rev: .*$"/>
|
61
|
+
</xs:restriction>
|
62
|
+
</xs:simpleType>
|
63
|
+
<!--xs:complexType name="RCSRev">
|
64
|
+
<xs:annotation>
|
65
|
+
<xs:documentation>
|
66
|
+
a simple key/value pair, where key
|
67
|
+
<em>must</em> be /^rev$/, and value
|
68
|
+
must be of the pattern
|
69
|
+
/^$Rev: .*\$$/
|
70
|
+
</xs:documentation>
|
71
|
+
</xs:annotation>
|
72
|
+
<xs:complexContent>
|
73
|
+
<xs:restriction base="Dict">
|
74
|
+
<xs:sequence minOccurs="1" maxOccurs="1">
|
75
|
+
<xs:element name="key" type="RevKey" minOccurs="1" maxOccurs="1"/>
|
76
|
+
<xs:element name="string" type="RevVal" minOccurs="1" maxOccurs="1"/>
|
77
|
+
</xs:sequence>
|
78
|
+
</xs:restriction>
|
79
|
+
</xs:complexContent>
|
80
|
+
</xs:complexType-->
|
81
|
+
|
82
|
+
<!-- same thing for svn $Author: $ -->
|
83
|
+
<xs:simpleType name="AuthorKey">
|
84
|
+
<xs:restriction base="xs:string">
|
85
|
+
<xs:pattern value="author"/>
|
86
|
+
</xs:restriction>
|
87
|
+
</xs:simpleType>
|
88
|
+
<xs:simpleType name="AuthorVal">
|
89
|
+
<xs:restriction base="xs:string">
|
90
|
+
<xs:pattern value="$Author: .*$"/>
|
91
|
+
</xs:restriction>
|
92
|
+
</xs:simpleType>
|
93
|
+
<!--xs:complexType name="RCSAuthor">
|
94
|
+
<xs:annotation>
|
95
|
+
<xs:documentation>
|
96
|
+
a simple key/value pair, where key
|
97
|
+
<em>must</em> be /^author$/, and value
|
98
|
+
must be of the pattern
|
99
|
+
/^$Author: .*\$$/
|
100
|
+
</xs:documentation>
|
101
|
+
</xs:annotation>
|
102
|
+
<xs:complexContent>
|
103
|
+
<xs:restriction base="Dict">
|
104
|
+
<xs:sequence minOccurs="1" maxOccurs="1">
|
105
|
+
<xs:element name="key" type="AuthorKey" minOccurs="1" maxOccurs="1"/>
|
106
|
+
<xs:element name="string" type="AuthorVal" minOccurs="1" maxOccurs="1"/>
|
107
|
+
</xs:sequence>
|
108
|
+
</xs:restriction>
|
109
|
+
</xs:complexContent>
|
110
|
+
</xs:complexType-->
|
111
|
+
|
112
|
+
<!-- same thing for svn $URL: $ -->
|
113
|
+
<xs:simpleType name="URLKey">
|
114
|
+
<xs:restriction base="xs:string">
|
115
|
+
<xs:pattern value="url"/>
|
116
|
+
</xs:restriction>
|
117
|
+
</xs:simpleType>
|
118
|
+
<xs:simpleType name="URLVal">
|
119
|
+
<xs:restriction base="xs:string">
|
120
|
+
<xs:pattern value="$URL: .*$"/>
|
121
|
+
</xs:restriction>
|
122
|
+
</xs:simpleType>
|
123
|
+
<!--xs:complexType name="RCSURL">
|
124
|
+
<xs:annotation>
|
125
|
+
<xs:documentation>
|
126
|
+
a simple key/value pair, where key
|
127
|
+
<em>must</em> be /^url$/, and value
|
128
|
+
must be of the pattern
|
129
|
+
/^$URL: .*\$$/
|
130
|
+
</xs:documentation>
|
131
|
+
</xs:annotation>
|
132
|
+
<xs:complexContent>
|
133
|
+
<xs:restriction base="Dict">
|
134
|
+
<xs:sequence minOccurs="1" maxOccurs="1">
|
135
|
+
<xs:element name="key" type="URLKey" minOccurs="1" maxOccurs="1"/>
|
136
|
+
<xs:element name="string" type="URLVal" minOccurs="1" maxOccurs="1"/>
|
137
|
+
</xs:sequence>
|
138
|
+
</xs:restriction>
|
139
|
+
</xs:complexContent>
|
140
|
+
</xs:complexType-->
|
141
|
+
|
142
|
+
<!-- same thing for svn $Id: $ -->
|
143
|
+
<xs:simpleType name="IdKey">
|
144
|
+
<xs:restriction base="xs:string">
|
145
|
+
<xs:pattern value="id"/>
|
146
|
+
</xs:restriction>
|
147
|
+
</xs:simpleType>
|
148
|
+
<xs:simpleType name="IdVal">
|
149
|
+
<xs:restriction base="xs:string">
|
150
|
+
<xs:pattern value="$Id: .*$"/>
|
151
|
+
</xs:restriction>
|
152
|
+
</xs:simpleType>
|
153
|
+
<!--xs:complexType name="RCSId">
|
154
|
+
<xs:annotation>
|
155
|
+
<xs:documentation>
|
156
|
+
a simple key/value pair, where key
|
157
|
+
<em>must</em> be /^id$/, and value
|
158
|
+
must be of the pattern
|
159
|
+
/^$Id: .*\$$/
|
160
|
+
</xs:documentation>
|
161
|
+
</xs:annotation>
|
162
|
+
<xs:complexContent>
|
163
|
+
<xs:restriction base="Dict">
|
164
|
+
<xs:sequence minOccurs="1" maxOccurs="1">
|
165
|
+
<xs:element name="key" type="IdKey" minOccurs="1" maxOccurs="1"/>
|
166
|
+
<xs:element name="string" type="IdVal" minOccurs="1" maxOccurs="1"/>
|
167
|
+
</xs:sequence>
|
168
|
+
</xs:restriction>
|
169
|
+
</xs:complexContent>
|
170
|
+
</xs:complexType-->
|
171
|
+
|
172
|
+
<!-- same thing for svn $Header: $ -->
|
173
|
+
<xs:simpleType name="HeaderKey">
|
174
|
+
<xs:restriction base="xs:string">
|
175
|
+
<xs:pattern value="header"/>
|
176
|
+
</xs:restriction>
|
177
|
+
</xs:simpleType>
|
178
|
+
<xs:simpleType name="HeaderVal">
|
179
|
+
<xs:restriction base="xs:string">
|
180
|
+
<xs:pattern value="$Header: .*$"/>
|
181
|
+
</xs:restriction>
|
182
|
+
</xs:simpleType>
|
183
|
+
<!--xs:complexType name="RCSHeader">
|
184
|
+
<xs:annotation>
|
185
|
+
<xs:documentation>
|
186
|
+
a simple key/value pair, where key
|
187
|
+
<em>must</em> be /^header$/, and value
|
188
|
+
must be of the pattern
|
189
|
+
/^$Header: .*\$$/
|
190
|
+
</xs:documentation>
|
191
|
+
</xs:annotation>
|
192
|
+
<xs:complexContent>
|
193
|
+
<xs:restriction base="Dict">
|
194
|
+
<xs:sequence minOccurs="1" maxOccurs="1">
|
195
|
+
<xs:element name="key" type="HeaderKey" minOccurs="1" maxOccurs="1"/>
|
196
|
+
<xs:element name="string" type="HeaderVal" minOccurs="1" maxOccurs="1"/>
|
197
|
+
</xs:sequence>
|
198
|
+
</xs:restriction>
|
199
|
+
</xs:complexContent>
|
200
|
+
</xs:complexType-->
|
201
|
+
|
202
|
+
<!-- this is just syntax sugar to indicate that
|
203
|
+
the elements within the <any> tag are
|
204
|
+
Dublin Core metadata -->
|
205
|
+
<xs:simpleType name="DCKey">
|
206
|
+
<xs:restriction base="xs:string">
|
207
|
+
<xs:pattern value="dublincore"/>
|
208
|
+
</xs:restriction>
|
209
|
+
</xs:simpleType>
|
210
|
+
<xs:complexType name="DCAny">
|
211
|
+
<xs:complexContent>
|
212
|
+
<xs:extension base="Base">
|
213
|
+
<xs:sequence>
|
214
|
+
<xs:any
|
215
|
+
namespace="http://purl.org/dc/elements/1.1/ http://purl.org/dc/terms/ http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
216
|
+
processContents="lax"
|
217
|
+
minOccurs="0"
|
218
|
+
maxOccurs="unbounded"/>
|
219
|
+
</xs:sequence>
|
220
|
+
</xs:extension>
|
221
|
+
</xs:complexContent>
|
222
|
+
</xs:complexType>
|
223
|
+
<!--xs:complexType name="DC">
|
224
|
+
<xs:complexContent>
|
225
|
+
<xs:restriction base="Dict">
|
226
|
+
<xs:sequence minOccurs="1" maxOccurs="1">
|
227
|
+
<xs:element name="key" type="DCKey" minOccurs="1" maxOccurs="1"/>
|
228
|
+
<xs:element name="any" type="DCAny" minOccurs="1" maxOccurs="1"/>
|
229
|
+
</xs:sequence>
|
230
|
+
</xs:restriction>
|
231
|
+
</xs:complexContent>
|
232
|
+
</xs:complexType-->
|
233
|
+
|
234
|
+
<!-- this is a wrapper around XHTML -->
|
235
|
+
<xs:simpleType name="XHTMLKey">
|
236
|
+
<xs:restriction base="xs:string">
|
237
|
+
<xs:pattern value="xhtml"/>
|
238
|
+
</xs:restriction>
|
239
|
+
</xs:simpleType>
|
240
|
+
<xs:complexType name="XHTMLAny">
|
241
|
+
<xs:complexContent>
|
242
|
+
<xs:extension base="Base">
|
243
|
+
<xs:sequence>
|
244
|
+
<xs:any
|
245
|
+
namespace="http://www.w3.org/1999/xhtml"
|
246
|
+
processContents="lax"
|
247
|
+
minOccurs="0"
|
248
|
+
maxOccurs="unbounded"/>
|
249
|
+
</xs:sequence>
|
250
|
+
</xs:extension>
|
251
|
+
</xs:complexContent>
|
252
|
+
</xs:complexType>
|
253
|
+
<!--xs:complexType name="XHTML">
|
254
|
+
<xs:complexContent>
|
255
|
+
<xs:restriction base="Dict">
|
256
|
+
<xs:sequence minOccurs="1" maxOccurs="1">
|
257
|
+
<xs:element name="key" type="XHTMLKey" minOccurs="1" maxOccurs="1"/>
|
258
|
+
<xs:element name="any" type="XHTMLAny"/>
|
259
|
+
</xs:sequence>
|
260
|
+
</xs:restriction>
|
261
|
+
</xs:complexContent>
|
262
|
+
</xs:complexType-->
|
263
|
+
|
264
|
+
<!-- this is a wrapper around RSS -->
|
265
|
+
<xs:simpleType name="RSSKey">
|
266
|
+
<xs:restriction base="xs:string">
|
267
|
+
<xs:pattern value="rss"/>
|
268
|
+
</xs:restriction>
|
269
|
+
</xs:simpleType>
|
270
|
+
<xs:complexType name="RSSAny">
|
271
|
+
<xs:complexContent>
|
272
|
+
<xs:extension base="Base">
|
273
|
+
<xs:sequence>
|
274
|
+
<xs:any
|
275
|
+
namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
276
|
+
processContents="lax"
|
277
|
+
minOccurs="0"
|
278
|
+
maxOccurs="unbounded"/>
|
279
|
+
</xs:sequence>
|
280
|
+
</xs:extension>
|
281
|
+
</xs:complexContent>
|
282
|
+
</xs:complexType>
|
283
|
+
<!--xs:complexType name="RSS">
|
284
|
+
<xs:complexContent>
|
285
|
+
<xs:restriction base="Dict">
|
286
|
+
<xs:sequence minOccurs="1" maxOccurs="1">
|
287
|
+
<xs:element name="key" type="RSSKey" minOccurs="1" maxOccurs="1"/>
|
288
|
+
<xs:element name="any" type="RSSAny" form="unqualified"/>
|
289
|
+
</xs:sequence>
|
290
|
+
</xs:restriction>
|
291
|
+
</xs:complexContent>
|
292
|
+
</xs:complexType-->
|
293
|
+
|
294
|
+
</xs:schema>
|
@@ -0,0 +1,104 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<xs:schema xmlns="http://www.nexml.org/2009" xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
3
|
+
targetNamespace="http://www.nexml.org/2009" elementFormDefault="qualified">
|
4
|
+
<xs:annotation>
|
5
|
+
<xs:documentation>
|
6
|
+
This module constitutes in effect the 'main' class of the nexml schema.
|
7
|
+
It defines the complex type for the root <<a href="#Nexml">nex:nexml</a>>
|
8
|
+
element and a simple type for the schema <a href="#Nexml1_0">"version" attribute</a>
|
9
|
+
of the root element. In addition, this module includes the main schema modules for
|
10
|
+
<a href="../taxa/taxa">OTUs</a>, <a href="../characters/characters">characters</a>,
|
11
|
+
<a href="../trees/trees">trees</a> and <a href="../meta/meta">metadata</a>. The data
|
12
|
+
type definitions in these included schema modules are then used to define element
|
13
|
+
instances in the child substructures of the <nex:nexml> root element.
|
14
|
+
|
15
|
+
$Id: $
|
16
|
+
</xs:documentation>
|
17
|
+
</xs:annotation>
|
18
|
+
|
19
|
+
<xs:include schemaLocation="taxa/taxa.xsd"/>
|
20
|
+
<xs:include schemaLocation="characters/characters.xsd"/>
|
21
|
+
<xs:include schemaLocation="trees/trees.xsd"/>
|
22
|
+
<xs:include schemaLocation="meta/annotations.xsd"/>
|
23
|
+
<!-- xs:include schemaLocation="meta/meta.xsd"/-->
|
24
|
+
<!--<xs:include schemaLocation="models/models.xsd"/>-->
|
25
|
+
|
26
|
+
<xs:simpleType name="Nexml1_0">
|
27
|
+
<xs:annotation>
|
28
|
+
<xs:documentation>
|
29
|
+
This simple type is the fixed version value, which in this
|
30
|
+
iteration must be constrained to 0.9 (and will be incremented
|
31
|
+
in future versions).
|
32
|
+
</xs:documentation>
|
33
|
+
</xs:annotation>
|
34
|
+
<xs:restriction base="xs:decimal">
|
35
|
+
<xs:pattern value="0\.9"/>
|
36
|
+
</xs:restriction>
|
37
|
+
</xs:simpleType>
|
38
|
+
|
39
|
+
<xs:complexType name="Nexml" mixed="true">
|
40
|
+
<xs:annotation>
|
41
|
+
<xs:documentation>
|
42
|
+
The root element for nexml.
|
43
|
+
</xs:documentation>
|
44
|
+
</xs:annotation>
|
45
|
+
<xs:complexContent mixed="true">
|
46
|
+
<xs:extension base="Annotated">
|
47
|
+
<xs:sequence maxOccurs="unbounded" minOccurs="0">
|
48
|
+
<xs:element maxOccurs="unbounded" minOccurs="1" name="otus" type="Taxa"/>
|
49
|
+
<xs:sequence maxOccurs="unbounded" minOccurs="0">
|
50
|
+
<xs:choice>
|
51
|
+
<xs:element maxOccurs="unbounded" minOccurs="0" name="characters" type="AbstractBlock"/>
|
52
|
+
<xs:element maxOccurs="unbounded" minOccurs="0" name="trees" type="Trees">
|
53
|
+
<xs:key name="tree">
|
54
|
+
<xs:selector xpath="./tree"/>
|
55
|
+
<xs:field xpath="@id"/>
|
56
|
+
</xs:key>
|
57
|
+
</xs:element>
|
58
|
+
</xs:choice>
|
59
|
+
</xs:sequence>
|
60
|
+
</xs:sequence>
|
61
|
+
<xs:attribute name="version" type="Nexml1_0" use="required"/>
|
62
|
+
<xs:attribute name="generator" type="xs:string" use="optional"/>
|
63
|
+
</xs:extension>
|
64
|
+
</xs:complexContent>
|
65
|
+
</xs:complexType>
|
66
|
+
|
67
|
+
<!-- the root of the document -->
|
68
|
+
<xs:element name="nexml" type="Nexml">
|
69
|
+
|
70
|
+
<!-- keys for child-of-root biodata containers: taxa, characters trees -->
|
71
|
+
<xs:key name="taxa">
|
72
|
+
<xs:selector xpath="./taxa"/>
|
73
|
+
<xs:field xpath="@id"/>
|
74
|
+
</xs:key>
|
75
|
+
<xs:key name="characters">
|
76
|
+
<xs:selector xpath="./characters"/>
|
77
|
+
<xs:field xpath="@id"/>
|
78
|
+
</xs:key>
|
79
|
+
<xs:key name="trees">
|
80
|
+
<xs:selector xpath="./trees"/>
|
81
|
+
<xs:field xpath="@id"/>
|
82
|
+
</xs:key>
|
83
|
+
|
84
|
+
<xs:key name="taxon">
|
85
|
+
<xs:selector xpath="./taxa/taxon"/>
|
86
|
+
<xs:field xpath="@id"/>
|
87
|
+
</xs:key>
|
88
|
+
|
89
|
+
<!-- links to taxon objects: from row to taxon, from node to taxon -->
|
90
|
+
<xs:keyref name="rowTaxonRef" refer="taxon">
|
91
|
+
<xs:selector xpath="./characters/matrix/row"/>
|
92
|
+
<xs:field xpath="@taxon"/>
|
93
|
+
</xs:keyref>
|
94
|
+
<xs:keyref name="listNodeTaxonRef" refer="taxon">
|
95
|
+
<xs:selector xpath="./trees/tree/terminal"/>
|
96
|
+
<xs:field xpath="@taxon"/>
|
97
|
+
</xs:keyref>
|
98
|
+
<xs:keyref name="nestedNodeTaxonRef" refer="taxon">
|
99
|
+
<xs:selector xpath="./trees/tree/root/internal/*/terminal"/>
|
100
|
+
<xs:field xpath="@taxon"/>
|
101
|
+
</xs:keyref>
|
102
|
+
|
103
|
+
</xs:element>
|
104
|
+
</xs:schema>
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.nexml.org/2009"
|
3
|
+
xmlns:sawsdl="http://www.w3.org/ns/sawsdl" xmlns="http://www.nexml.org/2009"
|
4
|
+
elementFormDefault="qualified">
|
5
|
+
<xs:annotation>
|
6
|
+
<xs:documentation>
|
7
|
+
This module defines complex types for <a href="#Taxon">OTU</a>
|
8
|
+
objects and their <a href="#Taxa">container objects</a>. These
|
9
|
+
types are analogous to the "taxa" block in NEXUS files. They
|
10
|
+
are used in the nexml schema, and in instance documents, to
|
11
|
+
normalize the cardinality between nodes in trees and rows in
|
12
|
+
matrices.
|
13
|
+
</xs:documentation>
|
14
|
+
</xs:annotation>
|
15
|
+
<xs:include schemaLocation="../abstract.xsd"/>
|
16
|
+
<!--
|
17
|
+
The following type definitions build up a taxa block
|
18
|
+
-->
|
19
|
+
|
20
|
+
<!-- Otu data type -->
|
21
|
+
<xs:complexType name="Taxon"
|
22
|
+
sawsdl:modelReference="http://evolutionaryontology-dev.nescent.org/cdao.owl#TU">
|
23
|
+
<xs:complexContent>
|
24
|
+
<xs:extension base="IDTagged"/>
|
25
|
+
</xs:complexContent>
|
26
|
+
</xs:complexType>
|
27
|
+
|
28
|
+
<!-- Otus data type -->
|
29
|
+
<xs:complexType name="Taxa">
|
30
|
+
<xs:complexContent mixed="true">
|
31
|
+
<xs:extension base="IDTagged">
|
32
|
+
<xs:sequence>
|
33
|
+
<xs:element name="otu" type="Taxon" minOccurs="0" maxOccurs="unbounded"/>
|
34
|
+
</xs:sequence>
|
35
|
+
</xs:extension>
|
36
|
+
</xs:complexContent>
|
37
|
+
</xs:complexType>
|
38
|
+
|
39
|
+
</xs:schema>
|
@@ -0,0 +1,135 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sawsdl="http://www.w3.org/ns/sawsdl"
|
3
|
+
targetNamespace="http://www.nexml.org/2009" xmlns="http://www.nexml.org/2009"
|
4
|
+
elementFormDefault="qualified">
|
5
|
+
<xs:annotation>
|
6
|
+
<xs:documentation>
|
7
|
+
This module defines abstract superclasses for tree components.
|
8
|
+
Nexml defines trees as a sequence of nodes, zero or one root edge
|
9
|
+
and a sequence of edges. There are different concrete instances
|
10
|
+
of edges, namely those with lengths formatted as integers, and
|
11
|
+
lengths formatted as floating point numbers.
|
12
|
+
<br/><br/>
|
13
|
+
In addition, there are different types of trees: those where nodes
|
14
|
+
have an in-degree of 1 - true trees - and those with in-degree that
|
15
|
+
can exceed 1 - networks.
|
16
|
+
</xs:documentation>
|
17
|
+
</xs:annotation>
|
18
|
+
|
19
|
+
<xs:include schemaLocation="../abstract.xsd"/>
|
20
|
+
|
21
|
+
<xs:complexType name="AbstractNode" abstract="true"
|
22
|
+
sawsdl:modelReference="http://evolutionaryontology-dev.nescent.org/cdao.owl#Node">
|
23
|
+
<xs:annotation>
|
24
|
+
<xs:documentation>
|
25
|
+
The AbstractNode superclass is what concrete nodes inherit
|
26
|
+
from by restriction. It represents a node element much like
|
27
|
+
that of GraphML, i.e. an element that is connected into a
|
28
|
+
tree by edge elements.
|
29
|
+
</xs:documentation>
|
30
|
+
</xs:annotation>
|
31
|
+
<xs:complexContent>
|
32
|
+
<xs:extension base="OptionalTaxonLinked">
|
33
|
+
<xs:attribute name="root" type="xs:boolean" default="false" use="optional"/>
|
34
|
+
</xs:extension>
|
35
|
+
</xs:complexContent>
|
36
|
+
</xs:complexType>
|
37
|
+
|
38
|
+
<xs:complexType name="AbstractEdge" abstract="true"
|
39
|
+
sawsdl:modelReference="http://evolutionaryontology-dev.nescent.org/cdao.owl#Edge">
|
40
|
+
<xs:annotation>
|
41
|
+
<xs:documentation>
|
42
|
+
The AbstractEdge superclass is what concrete edges inherit
|
43
|
+
from by restriction. It represents an edge element much like
|
44
|
+
that of GraphML, i.e. an element that connects node elements.
|
45
|
+
</xs:documentation>
|
46
|
+
<xs:appinfo>Edge</xs:appinfo>
|
47
|
+
</xs:annotation>
|
48
|
+
<xs:complexContent>
|
49
|
+
<xs:extension base="IDTagged">
|
50
|
+
<xs:attribute name="source" type="xs:IDREF" use="required"/>
|
51
|
+
<xs:attribute name="target" type="xs:IDREF" use="required"/>
|
52
|
+
<xs:attribute name="length" type="xs:anySimpleType" use="optional"/>
|
53
|
+
</xs:extension>
|
54
|
+
</xs:complexContent>
|
55
|
+
</xs:complexType>
|
56
|
+
|
57
|
+
<xs:complexType name="AbstractRootEdge" abstract="true">
|
58
|
+
<xs:annotation>
|
59
|
+
<xs:documentation>
|
60
|
+
The AbstractRootEdge complex type is a superclass for the
|
61
|
+
edge that leads into a root, i.e. an edge with only a target
|
62
|
+
attribute, but no source attribute. This type of edge is
|
63
|
+
used for coalescent trees, where the initial lineage has
|
64
|
+
a certain length before things start splitting up.
|
65
|
+
</xs:documentation>
|
66
|
+
</xs:annotation>
|
67
|
+
<xs:complexContent>
|
68
|
+
<xs:extension base="IDTagged">
|
69
|
+
<xs:attribute name="target" type="xs:IDREF" use="required"/>
|
70
|
+
<xs:attribute name="length" type="xs:anySimpleType" use="optional"/>
|
71
|
+
</xs:extension>
|
72
|
+
</xs:complexContent>
|
73
|
+
</xs:complexType>
|
74
|
+
|
75
|
+
<xs:complexType name="AbstractTree" abstract="true"
|
76
|
+
sawsdl:modelReference="http://evolutionaryontology-dev.nescent.org/cdao.owl#Tree">
|
77
|
+
<xs:annotation>
|
78
|
+
<xs:documentation>
|
79
|
+
The AbstractTree superclass is what a concrete tree inherits
|
80
|
+
from.
|
81
|
+
</xs:documentation>
|
82
|
+
</xs:annotation>
|
83
|
+
<xs:complexContent mixed="true">
|
84
|
+
<xs:extension base="IDTagged">
|
85
|
+
<xs:sequence minOccurs="1" maxOccurs="1">
|
86
|
+
<xs:element name="node" type="AbstractNode" minOccurs="1" maxOccurs="unbounded"/>
|
87
|
+
<xs:element name="rootedge" type="AbstractRootEdge" minOccurs="0" maxOccurs="1"/>
|
88
|
+
<xs:element name="edge" type="AbstractEdge" minOccurs="1" maxOccurs="unbounded"
|
89
|
+
/>
|
90
|
+
</xs:sequence>
|
91
|
+
</xs:extension>
|
92
|
+
</xs:complexContent>
|
93
|
+
</xs:complexType>
|
94
|
+
|
95
|
+
<xs:complexType name="AbstractNetwork" abstract="true"
|
96
|
+
sawsdl:modelReference="http://evolutionaryontology-dev.nescent.org/cdao.owl#Network">
|
97
|
+
<xs:annotation>
|
98
|
+
<xs:documentation>
|
99
|
+
The AbstractNetwork superclass is what a concrete network inherits
|
100
|
+
from.
|
101
|
+
</xs:documentation>
|
102
|
+
</xs:annotation>
|
103
|
+
<xs:complexContent mixed="true">
|
104
|
+
<xs:extension base="IDTagged">
|
105
|
+
<xs:sequence minOccurs="1" maxOccurs="1">
|
106
|
+
<xs:element name="node" type="AbstractNode" minOccurs="1" maxOccurs="unbounded"/>
|
107
|
+
<xs:element name="edge" type="AbstractEdge" minOccurs="1" maxOccurs="unbounded"
|
108
|
+
/>
|
109
|
+
</xs:sequence>
|
110
|
+
</xs:extension>
|
111
|
+
</xs:complexContent>
|
112
|
+
</xs:complexType>
|
113
|
+
|
114
|
+
<xs:complexType name="AbstractTrees" abstract="true">
|
115
|
+
<xs:annotation>
|
116
|
+
<xs:documentation>
|
117
|
+
The AbstractTrees superclass is what concrete trees inherit
|
118
|
+
from.
|
119
|
+
</xs:documentation>
|
120
|
+
</xs:annotation>
|
121
|
+
<xs:complexContent mixed="true">
|
122
|
+
<xs:extension base="IDTagged">
|
123
|
+
<xs:sequence minOccurs="1" maxOccurs="1">
|
124
|
+
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
125
|
+
<xs:element name="network" type="AbstractNetwork" minOccurs="1"
|
126
|
+
maxOccurs="unbounded"/>
|
127
|
+
<xs:element name="tree" type="AbstractTree" minOccurs="1"
|
128
|
+
maxOccurs="unbounded"/>
|
129
|
+
</xs:choice>
|
130
|
+
</xs:sequence>
|
131
|
+
</xs:extension>
|
132
|
+
</xs:complexContent>
|
133
|
+
</xs:complexType>
|
134
|
+
|
135
|
+
</xs:schema>
|