bio-nexml 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/Gemfile +15 -0
  2. data/Gemfile.lock +24 -0
  3. data/LICENSE.txt +20 -0
  4. data/README.rdoc +47 -0
  5. data/Rakefile +55 -0
  6. data/TODO.txt +6 -0
  7. data/VERSION +1 -0
  8. data/bio-nexml.gemspec +126 -0
  9. data/extconf.rb +2 -0
  10. data/lib/bio-nexml.rb +0 -0
  11. data/lib/bio.rb +321 -0
  12. data/lib/bio/db/nexml.rb +109 -0
  13. data/lib/bio/db/nexml/mapper.rb +113 -0
  14. data/lib/bio/db/nexml/mapper/framework.rb +157 -0
  15. data/lib/bio/db/nexml/mapper/inflection.rb +99 -0
  16. data/lib/bio/db/nexml/mapper/repository.rb +59 -0
  17. data/lib/bio/db/nexml/matrix.rb +1046 -0
  18. data/lib/bio/db/nexml/parser.rb +622 -0
  19. data/lib/bio/db/nexml/schema/README.txt +21 -0
  20. data/lib/bio/db/nexml/schema/abstract.xsd +159 -0
  21. data/lib/bio/db/nexml/schema/characters/README.txt +1 -0
  22. data/lib/bio/db/nexml/schema/characters/abstractcharacters.xsd +361 -0
  23. data/lib/bio/db/nexml/schema/characters/characters.xsd +22 -0
  24. data/lib/bio/db/nexml/schema/characters/continuous.xsd +190 -0
  25. data/lib/bio/db/nexml/schema/characters/dna.xsd +282 -0
  26. data/lib/bio/db/nexml/schema/characters/protein.xsd +280 -0
  27. data/lib/bio/db/nexml/schema/characters/restriction.xsd +239 -0
  28. data/lib/bio/db/nexml/schema/characters/rna.xsd +283 -0
  29. data/lib/bio/db/nexml/schema/characters/standard.xsd +261 -0
  30. data/lib/bio/db/nexml/schema/external/sawsdl.xsd +21 -0
  31. data/lib/bio/db/nexml/schema/external/xhtml-datatypes-1.xsd +177 -0
  32. data/lib/bio/db/nexml/schema/external/xlink.xsd +75 -0
  33. data/lib/bio/db/nexml/schema/external/xml.xsd +145 -0
  34. data/lib/bio/db/nexml/schema/meta/README.txt +2 -0
  35. data/lib/bio/db/nexml/schema/meta/annotations.xsd +100 -0
  36. data/lib/bio/db/nexml/schema/meta/meta.xsd +294 -0
  37. data/lib/bio/db/nexml/schema/nexml.xsd +104 -0
  38. data/lib/bio/db/nexml/schema/taxa/README.txt +2 -0
  39. data/lib/bio/db/nexml/schema/taxa/taxa.xsd +39 -0
  40. data/lib/bio/db/nexml/schema/trees/README.txt +2 -0
  41. data/lib/bio/db/nexml/schema/trees/abstracttrees.xsd +135 -0
  42. data/lib/bio/db/nexml/schema/trees/network.xsd +113 -0
  43. data/lib/bio/db/nexml/schema/trees/tree.xsd +149 -0
  44. data/lib/bio/db/nexml/schema/trees/trees.xsd +36 -0
  45. data/lib/bio/db/nexml/taxa.rb +147 -0
  46. data/lib/bio/db/nexml/trees.rb +663 -0
  47. data/lib/bio/db/nexml/writer.rb +265 -0
  48. data/test/data/nexml/test.xml +69 -0
  49. data/test/test_bio-nexml.rb +17 -0
  50. data/test/unit/bio/db/nexml/tc_factory.rb +119 -0
  51. data/test/unit/bio/db/nexml/tc_mapper.rb +78 -0
  52. data/test/unit/bio/db/nexml/tc_matrix.rb +551 -0
  53. data/test/unit/bio/db/nexml/tc_parser.rb +21 -0
  54. data/test/unit/bio/db/nexml/tc_taxa.rb +118 -0
  55. data/test/unit/bio/db/nexml/tc_trees.rb +370 -0
  56. data/test/unit/bio/db/nexml/tc_writer.rb +633 -0
  57. metadata +253 -0
@@ -0,0 +1,21 @@
1
+ This directory and its subfolders contains the latest version of the nexml schema
2
+ from the subversion repository. The schema is designed following the 'Venetian
3
+ Blinds' design pattern. With this design approach we disassemble the problem
4
+ into individual components. Instead of creating element declarations, we create type
5
+ definitions.
6
+
7
+ This design has:
8
+
9
+ * maximized reuse
10
+ * maximized the potential to hide (localize) namespaces.
11
+
12
+ The Venetian Blind design espouses these guidelines:
13
+
14
+ * Design your schema to maximize the potential for hiding (localizing) namespace complexities.
15
+ * Use elementFormDefault to act as a switch for controlling namespace exposure - if you want element namespaces exposed in instance documents, simply turn the elementFormDefault switch to "on" (i.e, set elementFormDefault= "qualified"); if you don't want element namespaces exposed in instance documents, simply turn the elementFormDefault switch to "off" (i.e., set elementFormDefault="unqualified").
16
+ * Design your schema to maximize reuse.
17
+ * Use type definitions as the main form of component reuse.
18
+ * Nest element declarations within type definitions.
19
+
20
+ For more about this (and other) schema design patterns and best practices, visit
21
+ http://www.xfront.com/GlobalVersusLocal.html#ThirdDesign
@@ -0,0 +1,159 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
3
+ xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xlink="http://www.w3.org/1999/xlink"
4
+ targetNamespace="http://www.nexml.org/2009" xmlns="http://www.nexml.org/2009"
5
+ xmlns:xhtml="http://www.w3.org/1999/xhtml/datatypes/" elementFormDefault="qualified">
6
+
7
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
8
+ schemaLocation="external/xhtml-datatypes-1.xsd"/>
9
+
10
+ <xs:include schemaLocation="meta/annotations.xsd"/>
11
+ <xs:annotation>
12
+ <xs:documentation>
13
+ This module defines abstract superclasses. In xml schema, inheritance of complex types
14
+ is either through extension or through restriction. Extensions in this context means that
15
+ the child class can have more types of elements appended to the end of its children, and/or
16
+ more attributes. Restriction means that the child class is more limited than the base class,
17
+ in that it might have fewer child elements, fewer attributes, or more restricted child
18
+ element types.<br/><br/>
19
+ The nexml schema uses inheritance such that abstract superclasses - i.e. those defined in
20
+ this module - extend each other to form a useful tree of superclasses, from which child
21
+ classes then derive by restriction. This is done so that for any type there is always an
22
+ exhaustive abstract superclass, to which parsers should be adapted, so that derived
23
+ instances won't have surprising substructures.
24
+ </xs:documentation>
25
+ </xs:annotation>
26
+
27
+ <!-- an element that can be annotated with RDFa-compliant metadata -->
28
+ <xs:complexType name="Annotated" abstract="true">
29
+ <xs:annotation>
30
+ <xs:documentation>
31
+ The Annotated complexType is a super class for objects that
32
+ optionally have metadata annotations of type Meta.
33
+ </xs:documentation>
34
+ </xs:annotation>
35
+ <xs:complexContent mixed="true">
36
+ <xs:extension base="Base">
37
+ <xs:sequence>
38
+ <xs:element name="meta" type="Meta" minOccurs="0" maxOccurs="unbounded"/>
39
+ </xs:sequence>
40
+ <xs:attribute name="about" type="xhtml:URIorSafeCURIE" use="optional"/>
41
+ </xs:extension>
42
+ </xs:complexContent>
43
+ </xs:complexType>
44
+
45
+ <!-- an element with a human readable label -->
46
+ <xs:complexType name="Labelled" abstract="true">
47
+ <xs:annotation>
48
+ <xs:documentation>
49
+ The Labelled complexType is a super class for objects that
50
+ optionally have label attributes to use as a (non-unique)
51
+ name of type xs:string.
52
+ </xs:documentation>
53
+ </xs:annotation>
54
+ <xs:complexContent mixed="true">
55
+ <xs:extension base="Annotated">
56
+ <xs:attribute name="label" type="xs:string" use="optional"/>
57
+ </xs:extension>
58
+ </xs:complexContent>
59
+ </xs:complexType>
60
+
61
+ <!-- any element that requires an ID -->
62
+ <xs:complexType name="IDTagged" abstract="true">
63
+ <xs:annotation>
64
+ <xs:documentation>
65
+ The IDTagged complexType is a super class for objects that require
66
+ unique id attributes of type xs:ID. The id must be unique within the XML document.
67
+ </xs:documentation>
68
+ </xs:annotation>
69
+ <xs:complexContent mixed="true">
70
+ <xs:extension base="Labelled">
71
+ <xs:sequence/>
72
+ </xs:extension>
73
+ </xs:complexContent>
74
+ </xs:complexType>
75
+
76
+ <!-- elements that enclose "class" elements -->
77
+ <xs:complexType name="Segmented" abstract="true" mixed="true">
78
+ <xs:annotation>
79
+ <xs:documentation>
80
+ The Segmented complexType is for elements that contain multiple child
81
+ elements of the same type, e.g. multiple cells in a row, multiple nodes
82
+ in a tree, etc. Segmented elements can hold one or more elements of type
83
+ Class, such that the segments can refer to the ID of the class they belong
84
+ to.
85
+ </xs:documentation>
86
+ </xs:annotation>
87
+ <xs:complexContent mixed="true">
88
+ <xs:extension base="IDTagged">
89
+ <xs:sequence>
90
+ <xs:element name="class" type="Class" minOccurs="0" maxOccurs="unbounded"/>
91
+ </xs:sequence>
92
+ </xs:extension>
93
+ </xs:complexContent>
94
+ </xs:complexType>
95
+
96
+ <!-- an annotated element with a required link to an otu -->
97
+ <xs:complexType name="TaxonLinked" abstract="true">
98
+ <xs:annotation>
99
+ <xs:documentation>
100
+ The TaxonLinked complexType is a super class for objects that
101
+ require a taxon id reference.
102
+ </xs:documentation>
103
+ </xs:annotation>
104
+ <xs:complexContent mixed="true">
105
+ <xs:extension base="IDTagged">
106
+ <xs:attribute name="otu" type="xs:IDREF" use="required"/>
107
+ </xs:extension>
108
+ </xs:complexContent>
109
+ </xs:complexType>
110
+
111
+ <!-- an annotated element with an optional link to an otu -->
112
+ <xs:complexType name="OptionalTaxonLinked" abstract="true">
113
+ <xs:annotation>
114
+ <xs:documentation>
115
+ The OptionalOTULinked complexType is a super class for objects that
116
+ that optionally have an otu id reference.
117
+ </xs:documentation>
118
+ </xs:annotation>
119
+ <xs:complexContent>
120
+ <xs:extension base="IDTagged">
121
+ <xs:attribute name="otu" type="xs:IDREF" use="optional"/>
122
+ </xs:extension>
123
+ </xs:complexContent>
124
+ </xs:complexType>
125
+
126
+ <!-- an annotated element with a required link to an otu container -->
127
+ <xs:complexType name="TaxaLinked" abstract="true">
128
+ <xs:annotation>
129
+ <xs:documentation>
130
+ The TaxaLinked complexType is a super class for objects that
131
+ that require an otus id reference.
132
+ </xs:documentation>
133
+ </xs:annotation>
134
+ <xs:complexContent>
135
+ <xs:extension base="IDTagged">
136
+ <xs:attribute name="otus" type="xs:IDREF" use="required"/>
137
+ </xs:extension>
138
+ </xs:complexContent>
139
+ </xs:complexType>
140
+
141
+ <!-- class element -->
142
+ <xs:complexType name="Class" abstract="false">
143
+ <xs:annotation>
144
+ <xs:documentation>
145
+ Elements of the Class complexType are elements with an ID to which
146
+ other elements refer using the "class" attribute. The purpose of this
147
+ to allow creation of sets, but rather than having a set specify its
148
+ members (such as character sets in nexus), in nexml the members specify
149
+ which class(es) they belong to. This is more idiomatic for xml, consider
150
+ for example the "class" attribute in (X)HTML which works the same way,
151
+ and is used for example for cascading style sheets.
152
+ </xs:documentation>
153
+ </xs:annotation>
154
+ <xs:complexContent>
155
+ <xs:extension base="IDTagged"/>
156
+ </xs:complexContent>
157
+ </xs:complexType>
158
+
159
+ </xs:schema>
@@ -0,0 +1 @@
1
+ This directory contains schema fragments for character data of various types.
@@ -0,0 +1,361 @@
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 the abstract superclasses for the components
8
+ that go into character matrices. In nexml instance documents, the
9
+ &lt;characters&gt; element structure forms the concrete instance of
10
+ the complex types defined here. The concrete structure consists of
11
+ zero or one &lt;format&gt; structures that define allowed states,
12
+ their symbols and ambiguity mappings, and the matrix columns they
13
+ apply to. This is then followed by a &lt;matrix&gt; element that
14
+ contains rows that either consist of granular cells with individual
15
+ states, or of compact sequences.
16
+ </xs:documentation>
17
+ </xs:annotation>
18
+
19
+ <xs:include schemaLocation="../abstract.xsd"/>
20
+
21
+ <xs:complexType name="AbstractMapping" abstract="true">
22
+ <xs:annotation>
23
+ <xs:documentation>
24
+ The AbstractMapping type is the superclass for an ambiguity mapping. In an instance
25
+ document, a subclass of this type will look like &lt;member state="st1"/&gt;, i.e.
26
+ an element called "member" with an attribute called "state" whose value is an
27
+ id reference that refers to an element that subclasses AbstractState. The purpose
28
+ of AbstractMapping is to specify which other states may be implied, e.g. a nucleotide
29
+ symbol "N" would have mappings to "A", "C", "G" and "T".
30
+ </xs:documentation>
31
+ </xs:annotation>
32
+ <xs:complexContent>
33
+ <xs:extension base="Base">
34
+ <xs:attribute name="state" use="required" type="xs:IDREF"/>
35
+ </xs:extension>
36
+ </xs:complexContent>
37
+ </xs:complexType>
38
+
39
+ <xs:simpleType name="AbstractSymbol">
40
+ <xs:annotation>
41
+ <xs:documentation>
42
+ AbstractSymbol is a simple type, i.e. a string token. Concrete subclasses of character
43
+ blocks will restrict AbstractSymbol to something sensible such as a regular expression
44
+ of IUPAC symbols, a range of integer values, and so on.
45
+ </xs:documentation>
46
+ </xs:annotation>
47
+ <xs:restriction base="xs:string">
48
+ <xs:whiteSpace value="preserve"/>
49
+ </xs:restriction>
50
+ </xs:simpleType>
51
+
52
+ <xs:complexType name="AbstractState" abstract="true">
53
+ <xs:annotation>
54
+ <xs:documentation>
55
+ The AbstractState type is the superclass for a state definition.
56
+ The element encloses a required AbstractSymbol element that in restricted concrete
57
+ subclasses must be of a sensible type such as a single IUPAC character. It may
58
+ enclose zero or more AbstractMapping elements to resolve ambiguities.
59
+ </xs:documentation>
60
+ </xs:annotation>
61
+ <xs:complexContent mixed="true">
62
+ <xs:extension base="IDTagged">
63
+ <xs:sequence minOccurs="1" maxOccurs="1"> </xs:sequence>
64
+ <xs:attribute name="symbol" type="xs:anySimpleType" use="required"/>
65
+ </xs:extension>
66
+ </xs:complexContent>
67
+ </xs:complexType>
68
+
69
+ <xs:complexType name="AbstractUncertainStateSet" abstract="true" mixed="true">
70
+ <xs:annotation>
71
+ <xs:documentation>
72
+ The AbstractState type is the superclass for a state definition.
73
+ The element encloses a required AbstractSymbol element that in restricted concrete
74
+ subclasses must be of a sensible type such as a single IUPAC character. It may
75
+ enclose zero or more AbstractMapping elements to resolve ambiguities.
76
+ </xs:documentation>
77
+ </xs:annotation>
78
+ <xs:complexContent mixed="true">
79
+ <xs:extension base="AbstractState">
80
+ <xs:sequence minOccurs="1" maxOccurs="1">
81
+ <xs:element name="member" type="AbstractMapping" minOccurs="0"
82
+ maxOccurs="unbounded"/>
83
+ </xs:sequence>
84
+ </xs:extension>
85
+ </xs:complexContent>
86
+ </xs:complexType>
87
+
88
+ <xs:complexType name="AbstractPolymorphicStateSet" abstract="true" mixed="true">
89
+ <xs:annotation>
90
+ <xs:documentation>
91
+ The AbstractState type is the superclass for a state definition.
92
+ The element encloses a required AbstractSymbol element that in restricted concrete
93
+ subclasses must be of a sensible type such as a single IUPAC character. It may
94
+ enclose zero or more AbstractMapping elements to resolve ambiguities.
95
+ </xs:documentation>
96
+ </xs:annotation>
97
+ <xs:complexContent mixed="true">
98
+ <xs:extension base="AbstractUncertainStateSet">
99
+ <xs:sequence minOccurs="1" maxOccurs="1">
100
+ <xs:element name="uncertain_state_set" type="AbstractUncertainStateSet"
101
+ minOccurs="0" maxOccurs="unbounded"/>
102
+ </xs:sequence>
103
+ </xs:extension>
104
+ </xs:complexContent>
105
+ </xs:complexType>
106
+
107
+ <!-- TODO place constraint on symbol unicity -->
108
+ <xs:complexType name="AbstractStates" abstract="true">
109
+ <xs:annotation>
110
+ <xs:documentation>
111
+ A container for a set of AbstractState elements.
112
+ </xs:documentation>
113
+ </xs:annotation>
114
+ <xs:complexContent mixed="true">
115
+ <xs:extension base="IDTagged">
116
+ <xs:sequence minOccurs="1" maxOccurs="1">
117
+ <xs:element name="state" type="AbstractState" minOccurs="0"
118
+ maxOccurs="unbounded"/>
119
+ <xs:element name="polymorphic_state_set" type="AbstractPolymorphicStateSet"
120
+ minOccurs="0" maxOccurs="unbounded"/>
121
+ <xs:element name="uncertain_state_set" type="AbstractUncertainStateSet"
122
+ minOccurs="0" maxOccurs="unbounded"/>
123
+ </xs:sequence>
124
+ </xs:extension>
125
+ </xs:complexContent>
126
+ </xs:complexType>
127
+
128
+ <xs:simpleType name="CodonPosition">
129
+ <xs:annotation>
130
+ <xs:documentation>
131
+ The CodonPosition type is an integer with value 1, 2 or 3, used in DNA and RNA.
132
+ </xs:documentation>
133
+ </xs:annotation>
134
+ <xs:restriction base="xs:nonNegativeInteger">
135
+ <xs:minInclusive value="1"/>
136
+ <xs:maxInclusive value="3"/>
137
+ </xs:restriction>
138
+ </xs:simpleType>
139
+
140
+ <xs:simpleType name="MSTokenLength">
141
+ <xs:annotation>
142
+ <xs:documentation>
143
+ The MSTokenLength simple type is used to specify, per column, how many
144
+ tokens may occur in a multistate single observation matrix. For example,
145
+ in a matrix where every cell holds a vector of two continuous values
146
+ (say, mean and standard deviation of a measurement), the column definition
147
+ provides a hint to this effect, by setting the attribute tokens="2"
148
+ </xs:documentation>
149
+ </xs:annotation>
150
+ <xs:restriction base="xs:positiveInteger"/>
151
+ </xs:simpleType>
152
+
153
+ <xs:complexType name="AbstractChar" abstract="true"
154
+ sawsdl:modelReference="http://evolutionaryontology-dev.nescent.org/cdao.owl#Character">
155
+ <xs:annotation>
156
+ <xs:documentation>
157
+ The AbstractChar type is the superclass for a column definition, which may
158
+ have a "states" attribute that refers to an AbstractStates element, a codon attribute
159
+ of type CodonPosition and an id attribute that may be an actual id (e.g. for categorical
160
+ matrices where observations explicitly refer to a column definition) or an integer for
161
+ sequence matrices.
162
+ </xs:documentation>
163
+ <xs:appinfo>Character</xs:appinfo>
164
+ </xs:annotation>
165
+ <xs:complexContent mixed="true">
166
+ <xs:extension base="IDTagged">
167
+ <xs:sequence minOccurs="1" maxOccurs="1"/>
168
+ <xs:attribute name="tokens" type="MSTokenLength" use="optional"/>
169
+ <xs:attribute name="states" type="xs:IDREF" use="optional"/>
170
+ <xs:attribute name="codon" type="CodonPosition" use="optional"/>
171
+ </xs:extension>
172
+ </xs:complexContent>
173
+ </xs:complexType>
174
+
175
+ <xs:complexType name="AbstractFormat" abstract="true" mixed="true">
176
+ <xs:annotation>
177
+ <xs:documentation>
178
+ The AbstractFormat type is the superclass for the element
179
+ that defines the allowed characters and states in a matrix, and their ambiguity mapping.
180
+ It may enclose AbstractStates elements that define states and their mappings, and
181
+ AbstractChar elements that specify which AbstractStates apply to which matrix columns.
182
+ </xs:documentation>
183
+ </xs:annotation>
184
+ <xs:complexContent mixed="true">
185
+ <xs:extension base="Annotated">
186
+ <xs:sequence minOccurs="1" maxOccurs="1">
187
+ <xs:element name="states" minOccurs="0" maxOccurs="unbounded"
188
+ type="AbstractStates"/>
189
+ <xs:element name="char" minOccurs="0" maxOccurs="unbounded" type="AbstractChar"
190
+ />
191
+ </xs:sequence>
192
+ </xs:extension>
193
+ </xs:complexContent>
194
+ </xs:complexType>
195
+
196
+ <xs:complexType name="AbstractObs" abstract="true">
197
+ <xs:annotation>
198
+ <xs:documentation>
199
+ The AbstractObs type is the superclass for single observations, i.e. cells
200
+ in a matrix. A concrete instance of AbstractObs has a "char" attribute that
201
+ either refers to an explicitly defined character (e.g. in categorical matrices)
202
+ or to a column number, and a "state" attribute that either holds a reference to
203
+ an explicitly defined state, or a raw state value (e.g. a nucleotide, a continuous
204
+ value).
205
+ </xs:documentation>
206
+ <xs:appinfo>Character_State_Datum</xs:appinfo>
207
+ </xs:annotation>
208
+ <xs:complexContent>
209
+ <xs:extension base="Labelled">
210
+ <xs:attribute name="char" use="required" type="xs:anySimpleType"/>
211
+ <xs:attribute name="state" use="required" type="xs:anySimpleType"/>
212
+ </xs:extension>
213
+ </xs:complexContent>
214
+ </xs:complexType>
215
+
216
+ <xs:simpleType name="AbstractSeq">
217
+ <xs:annotation>
218
+ <xs:documentation>
219
+ AbstractSeq is a simple type based on xs:string. Concrete subclasses
220
+ must restrict this type to something more sensible, such as a regular expression for
221
+ IUPAC single character symbols, or whitespace separated integers.
222
+ </xs:documentation>
223
+ </xs:annotation>
224
+ <xs:restriction base="xs:string"/>
225
+ </xs:simpleType>
226
+
227
+ <xs:simpleType name="AbstractTokenList">
228
+ <xs:annotation>
229
+ <xs:documentation>
230
+ AbstractTokenList is a simple type superclass for a compact character
231
+ data representations that consist of space-separated lists of tokens.
232
+ Examples of this are continuous character data (where the compact
233
+ representation is a list of space-separated floating point numbers) and
234
+ standard categorical data (which is represented as integers, which can be
235
+ &gt; 9, and hence need to be space-separated).
236
+ </xs:documentation>
237
+ </xs:annotation>
238
+ <xs:list itemType="xs:double"/>
239
+ </xs:simpleType>
240
+
241
+ <xs:complexType name="AbstractSeqRow" abstract="true">
242
+ <xs:annotation>
243
+ <xs:documentation>
244
+ The AbstractSeqRow represents a single row in a matrix. The row
245
+ must refer to a previously declared taxon element by its id attribute (and must have
246
+ an id itself, may have a label, and may have dictionary attachments). The row
247
+ contains a single seq element with raw character data.
248
+ </xs:documentation>
249
+ </xs:annotation>
250
+ <xs:complexContent mixed="true">
251
+ <xs:extension base="TaxonLinked">
252
+ <xs:sequence minOccurs="1" maxOccurs="1">
253
+ <xs:element name="seq" minOccurs="1" maxOccurs="1" type="xs:anySimpleType"/>
254
+ </xs:sequence>
255
+ </xs:extension>
256
+ </xs:complexContent>
257
+ </xs:complexType>
258
+
259
+ <xs:complexType name="AbstractObsRow" abstract="true" mixed="true">
260
+ <xs:annotation>
261
+ <xs:documentation>
262
+ The AbstractObsRow represents a single row in a matrix. The row
263
+ must refer to a previously declared taxon element by its id attribute (and must have
264
+ an id itself, may have a label, and may have dictionary attachments). The row
265
+ contains multiple obs elements.
266
+ </xs:documentation>
267
+ </xs:annotation>
268
+ <xs:complexContent mixed="true">
269
+ <xs:extension base="TaxonLinked">
270
+ <xs:sequence minOccurs="1" maxOccurs="1">
271
+ <xs:element name="cell" minOccurs="1" maxOccurs="unbounded" type="AbstractObs"/>
272
+ </xs:sequence>
273
+ </xs:extension>
274
+ </xs:complexContent>
275
+ </xs:complexType>
276
+
277
+ <xs:complexType name="AbstractSeqMatrix" abstract="true" mixed="true">
278
+ <xs:annotation>
279
+ <xs:documentation>
280
+ The AbstractSeqMatrix super class is the abstract type for a
281
+ &lt;matrix&gt; element that contains rows which hold raw character sequences.
282
+ </xs:documentation>
283
+ </xs:annotation>
284
+ <xs:complexContent mixed="true">
285
+ <xs:extension base="Annotated">
286
+ <xs:sequence minOccurs="1" maxOccurs="1">
287
+ <xs:element name="row" minOccurs="1" maxOccurs="unbounded" type="AbstractSeqRow"
288
+ />
289
+ </xs:sequence>
290
+ </xs:extension>
291
+ </xs:complexContent>
292
+ </xs:complexType>
293
+
294
+ <xs:complexType name="AbstractObsMatrix" abstract="true" mixed="true">
295
+ <xs:annotation>
296
+ <xs:documentation>
297
+ The AbstractObsMatrix super class is the abstract type for a
298
+ &lt;matrix&gt; element that contains rows which hold granular state observations.
299
+ </xs:documentation>
300
+ </xs:annotation>
301
+ <xs:complexContent mixed="true">
302
+ <xs:extension base="Annotated">
303
+ <xs:sequence minOccurs="1" maxOccurs="1">
304
+ <xs:element name="row" minOccurs="1" maxOccurs="unbounded" type="AbstractObsRow"
305
+ />
306
+ </xs:sequence>
307
+ </xs:extension>
308
+ </xs:complexContent>
309
+ </xs:complexType>
310
+
311
+ <xs:complexType name="AbstractBlock" abstract="true"
312
+ sawsdl:modelReference="http://evolutionaryontology-dev.nescent.org/cdao.owl#CharacterStateDataMatrix">
313
+ <xs:annotation>
314
+ <xs:documentation>
315
+ The AbstractBlock is the superclass for blocks that contain
316
+ an element structure of type AbstractFormat.
317
+ </xs:documentation>
318
+ <xs:appinfo>Character_State_Data_Matrix</xs:appinfo>
319
+ </xs:annotation>
320
+ <xs:complexContent mixed="true">
321
+ <xs:extension base="TaxaLinked">
322
+ <xs:sequence minOccurs="1" maxOccurs="1">
323
+ <xs:element name="format" minOccurs="0" maxOccurs="1" type="AbstractFormat"/>
324
+ </xs:sequence>
325
+ </xs:extension>
326
+ </xs:complexContent>
327
+ </xs:complexType>
328
+
329
+ <xs:complexType name="AbstractSeqs" abstract="true" mixed="true">
330
+ <xs:annotation>
331
+ <xs:documentation>
332
+ The AbstractSeqBlock type is the superclass for character blocks that
333
+ consist of raw character sequences.
334
+ </xs:documentation>
335
+ </xs:annotation>
336
+ <xs:complexContent mixed="true">
337
+ <xs:extension base="AbstractBlock">
338
+ <xs:sequence minOccurs="1" maxOccurs="1">
339
+ <xs:element name="matrix" minOccurs="1" maxOccurs="1" type="AbstractSeqMatrix"/>
340
+ </xs:sequence>
341
+ </xs:extension>
342
+ </xs:complexContent>
343
+ </xs:complexType>
344
+
345
+ <xs:complexType name="AbstractCells" abstract="true">
346
+ <xs:annotation>
347
+ <xs:documentation>
348
+ The AbstractSeqBlock type is the superclass for character blocks that
349
+ consist of granular character state observations.
350
+ </xs:documentation>
351
+ </xs:annotation>
352
+ <xs:complexContent mixed="true">
353
+ <xs:extension base="AbstractBlock">
354
+ <xs:sequence minOccurs="1" maxOccurs="1">
355
+ <xs:element name="matrix" minOccurs="1" maxOccurs="1" type="AbstractObsMatrix"/>
356
+ </xs:sequence>
357
+ </xs:extension>
358
+ </xs:complexContent>
359
+ </xs:complexType>
360
+
361
+ </xs:schema>