<?xml version=“1.0” encoding=“UTF-8”?> <xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.nexml.org/2009" xmlns="http://www.nexml.org/2009" xmlns:sawsdl="http://www.w3.org/ns/sawsdl" xmlns:xml="http://www.w3.org/XML/1998/namespace" elementFormDefault="qualified"> <xs:include schemaLocation="abstractcharacters.xsd"/> <xs:annotation> <xs:documentation> This module defines concrete subclasses for the <a href="../abstract">abstract</a> character matrix components that all character matrices must implement. The subclasses defined here apply to DNA character data. In a verbose notation, this data is represented as the "state" attribute of the <cell> element, whose value-space is limited to the IUPAC single character nucleotide symbols (except U). In a compact notation, the same data is represented as a sequence of tokens (whitespace is allowed but has no meaning). </xs:documentation> </xs:annotation> <xs:simpleType name="DNAToken"> <xs:annotation> <xs:documentation> The DNAToken simple type is a restriction of AbstractSymbol that defines a token of a IUPAC single character nucleotide token. </xs:documentation> </xs:annotation> <xs:restriction base="AbstractSymbol"> <xs:pattern value="[ABCDGHKMNRSTVWXY\-\?]"/> <xs:length value="1"/> </xs:restriction> </xs:simpleType> <!-- The following types would be used if we explicitly defined ambiguity mappings, allowed states, etc. But we don't, because we use the IUPAC symbols anyway. --> <xs:complexType name="DNAMapping"> <xs:annotation> <xs:documentation>An IUPAC ambiguity mapping.</xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="AbstractMapping"/> </xs:complexContent> </xs:complexType> <xs:complexType name="DNAState"> <xs:annotation> <xs:documentation> This is a concrete implementation of the state element, which requires a symbol element, in this case restricted to DNAToken, i.e. a single IUPAC nucleotide symbol, and optional mapping elements to refer to other states. </xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="AbstractState"> <xs:sequence minOccurs="1" maxOccurs="1"/> <xs:attribute name="symbol" type="DNAToken" use="required"></xs:attribute> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="DNAUncertainStateSet"> <xs:annotation> <xs:documentation> The AbstractState type is the superclass for a state definition. The element encloses a required AbstractSymbol element that in restricted concrete subclasses must be of a sensible type such as a single IUPAC character. It may enclose zero or more AbstractMapping elements to resolve ambiguities. </xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="AbstractUncertainStateSet"> <xs:sequence minOccurs="1" maxOccurs="1"> <xs:element name="member" type="DNAMapping" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="symbol" type="DNAToken" use="required"></xs:attribute> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="DNAPolymorphicStateSet"> <xs:annotation> <xs:documentation> The AbstractState type is the superclass for a state definition. The element encloses a required AbstractSymbol element that in restricted concrete subclasses must be of a sensible type such as a single IUPAC character. It may enclose zero or more AbstractMapping elements to resolve ambiguities. </xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="AbstractPolymorphicStateSet"> <xs:sequence minOccurs="1" maxOccurs="1"> <xs:element name="member" type="DNAMapping" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="uncertain_state_set" type="DNAUncertainStateSet" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="symbol" type="DNAToken" use="required"></xs:attribute> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="DNAStates"> <xs:annotation> <xs:documentation> A container for a set of states. </xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="AbstractStates"> <xs:sequence minOccurs="1" maxOccurs="1"> <xs:element name="meta" minOccurs="0" maxOccurs="unbounded" type="Meta"/> <xs:element name="state" type="DNAState" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="polymorphic_state_set" type="DNAPolymorphicStateSet" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="uncertain_state_set" type="DNAUncertainStateSet" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="DNAChar" sawsdl:modelReference="http://evolutionaryontology-dev.nescent.org/cdao.owl#NucleotideResidueCharacter"> <xs:annotation> <xs:documentation> A concrete implementation of the AbstractChar element. In this implementation there is no reference to explicitly defined states, as we use the IUPAC standard. There may be a CodonPosition ("codon") attribute, and there must be an identifier ("id") that is of type xs:nonNegativeInteger to define the column number. </xs:documentation> <xs:appinfo>Nucleotide_Character</xs:appinfo> </xs:annotation> <xs:complexContent> <xs:restriction base="AbstractChar"> <xs:sequence minOccurs="1" maxOccurs="1"> <xs:element name="meta" minOccurs="0" maxOccurs="unbounded" type="Meta"/> </xs:sequence> <xs:attribute name="tokens" type="MSTokenLength" use="prohibited"/> <xs:attribute name="states" type="xs:IDREF" use="required"/> <xs:attribute name="codon" type="CodonPosition" use="optional"/> <xs:attribute name="id" type="xs:ID" use="required"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="DNAFormat" abstract="false"> <xs:annotation> <xs:documentation> The DNAFormat class is the container of DNA column definitions. </xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="AbstractFormat"> <xs:sequence minOccurs="1" maxOccurs="1"> <xs:element name="states" type="DNAStates" minOccurs="1" maxOccurs="unbounded"/> <xs:element name="char" type="DNAChar" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="DNAObs" abstract="false" sawsdl:modelReference="http://evolutionaryontology-dev.nescent.org/cdao.owl#NucleotideStateDatum"> <xs:annotation> <xs:documentation> This is a single cell in a matrix containing a nucleotide observation. </xs:documentation> <xs:appinfo>Nucleotide_State_Datum</xs:appinfo> </xs:annotation> <xs:complexContent> <xs:restriction base="AbstractObs"> <xs:sequence minOccurs="1" maxOccurs="1"> <xs:element name="meta" minOccurs="0" maxOccurs="unbounded" type="Meta"/> </xs:sequence> <xs:attribute name="char" use="required" type="xs:IDREF"/> <xs:attribute name="state" use="required" type="xs:IDREF"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:simpleType name="DNASeq"> <xs:annotation> <xs:documentation> This is a simple type that specifies a sequence of DNA characters, following IUPAC single character symbols for nucleotides (and ambiguities). </xs:documentation> </xs:annotation> <xs:restriction base="AbstractSeq"> <xs:pattern value="[\-\?ABCDGHKMNRSTVWXY\s]*"/> </xs:restriction> </xs:simpleType> <xs:complexType name="DNAMatrixSeqRow" abstract="false"> <xs:annotation> <xs:documentation> This is a row in a matrix of DNA data containing raw sequence data. </xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="AbstractSeqRow"> <xs:sequence minOccurs="1" maxOccurs="1"> <xs:element name="meta" minOccurs="0" maxOccurs="unbounded" type="Meta"/> <xs:element name="seq" minOccurs="1" maxOccurs="1" type="DNASeq"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="DNAMatrixObsRow" abstract="false"> <xs:annotation> <xs:documentation> This is a row in a matrix of DNA data containing granular observations. </xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="AbstractObsRow"> <xs:sequence minOccurs="1" maxOccurs="1"> <xs:element name="meta" minOccurs="0" maxOccurs="unbounded" type="Meta"/> <xs:element name="cell" minOccurs="1" maxOccurs="unbounded" type="DNAObs"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="DNASeqMatrix" abstract="false"> <xs:annotation> <xs:documentation> A matrix of rows with seq strings of type DNA. </xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="AbstractSeqMatrix"> <xs:sequence minOccurs="1" maxOccurs="1"> <xs:element name="row" minOccurs="1" maxOccurs="unbounded" type="DNAMatrixSeqRow"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="DNAObsMatrix" abstract="false"> <xs:annotation> <xs:documentation> A matrix of rows with single character observations. </xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="AbstractObsMatrix"> <xs:sequence minOccurs="1" maxOccurs="1"> <xs:element name="row" minOccurs="1" maxOccurs="unbounded" type="DNAMatrixObsRow"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="DnaSeqs" abstract="false"> <xs:annotation> <xs:documentation> A DNA characters block consisting of sequences preceded by metadata. </xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="AbstractSeqs"> <xs:sequence minOccurs="1" maxOccurs="1"> <xs:element name="meta" minOccurs="0" maxOccurs="unbounded" type="Meta"/> <xs:element name="format" minOccurs="1" maxOccurs="1" type="DNAFormat"/> <xs:element name="matrix" minOccurs="1" maxOccurs="1" type="DNASeqMatrix"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="DnaCells" abstract="false"> <xs:annotation> <xs:documentation> A DNA characters block consisting of granular cells preceded by metadata. </xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="AbstractCells"> <xs:sequence minOccurs="1" maxOccurs="1"> <xs:element name="meta" minOccurs="0" maxOccurs="unbounded" type="Meta"/> <xs:element name="format" minOccurs="1" maxOccurs="1" type="DNAFormat"/> <xs:element name="matrix" minOccurs="1" maxOccurs="1" type="DNAObsMatrix"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType>
</xs:schema>