<?xml version="1.0" encoding="UTF-8"?>
<schema>
   <datatypes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <dtype notation="@varchar" mysql="VARCHAR" oracle="VARCHAR2"
             description="@varchar(nnn): a varying-length string of length &lt;= nnn"/>
        <dtype notation="@datetime" mysql="DATETIME" oracle="DATE"
             description="a date and/or a time"/>
        <dtype notation="@real32" mysql="FLOAT" oracle="NUMBER"
             description="signed floating point types using 32 bits"/>
        <dtype notation="@real64" mysql="DOUBLE" oracle="NUMBER"
             description="signed floating point types using 64 bits"/>
        <dtype notation="@int16" mysql="SMALLINT" oracle="NUMBER"
             description="signed integral types using 16 bits"/>
        <dtype notation="@int32" mysql="INT" oracle="NUMBER"
             description="signed integral types using 32 bits"/>
        <dtype notation="@int64" mysql="BIGINT" oracle="NUMBER"
             description="signed integral types using 64 bits"/>
        <dtype notation="@byte32" mysql="LONGBLOB" oracle="BLOB"
             description="binary data of length &lt;= 4294967295 bytes"/>
        <dtype notation="@string10" mysql="TEXT" oracle="VARCHAR2(4000)"
             description="a varying-length string of length &lt;= 2047"/>
        <dtype notation="@string16" mysql="TEXT" oracle="CLOB"
             description="a varying-length string of length &lt;= 65535"/>
        <dtype notation="@string32" mysql="LONGTEXT" oracle="CLOB"
             description="a varying-length string of length &lt;= 4294967295"/>
        <dtype notation="@wid" mysql="BIGINT" oracle="NUMBER"
             description="a Warehouse Identifier (a number that is unique throughout the Warehouse)"/>
        <dtype notation="@number" mysql="DECIMAL" oracle="NUMBER"
             description="@number(precision,scale): any number for which exact precision is preserved."/>
        <dtype notation="@boolean" mysql="CHAR(1)" oracle="CHAR(1)"
             description="a boolean value: 'T' for true and 'F' for false"/>
        <dtype notation="@char" mysql="CHAR(1)" oracle="CHAR(1)"
             description="a single character value"/>
    </datatypes>
   <tabletypes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <ttype name="state">
            <comment>Tables that are used to define the Warehouse contents and its current state.</comment>
        </ttype>
        <ttype name="independent">
            <comment>Tables that contain universally- or widely-accepted scientific data. These tables are independent
                of any dataset.
            </comment>
        </ttype>
        <ttype name="object">
            <comment>Tables that represent the principal objects in the Warehouse.
                All object tables have a WID column that is globally unique identifier,
                and a DataSetWID column that refers to the DataSet row of the dataset that
                loaded the object.
            </comment>
        </ttype>
        <ttype name="arbitrary-relation">
            <comment>Tables that implement arbitrary relations among Warehouse objects.
                Naming convention is to use /table/WID as a column name for any WID
                referencing an object from /table/.
            </comment>
        </ttype>
        <ttype name="object-descriptor">
            <comment>Tables that reference an untyped WID (one that could be from one of several object tables).
                Naming convention is to use OtherWID as a column name for the untyped WID.
            </comment>
        </ttype>
        <ttype name="associative">
            <comment>Tables that (only) link WIDs from two object tables.
                These tables implement many-many relations between Warehouse objects.
                Naming convention is /table1/WID/table2/WID.
            </comment>
        </ttype>
    </tabletypes>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Warehouse"
          type="state">
        <comment>Describes this version of the BioSPICE Warehouse.</comment>
        <comment>This table contains exactly one row.</comment>
        <column name="Version" type="@number" precision="6" scale="3" required="true">
            <comment>Numbered version of the warehouse schema that is loaded</comment>
        </column>
        <column name="LoadDate" type="@datetime" required="true">
            <comment>Date that this schema was loaded</comment>
        </column>
        <column name="MaxSpecialWID" type="@wid" required="true">
            <comment>Maximum value allowed for SpecialWIDTable.PreviousWID / specialWID sequence</comment>
        </column>
        <column name="MaxReservedWID" type="@wid" required="true">
            <comment>Maximum value allowed for reserved WIDs (regulard WIDs start above this WID number)</comment>
        </column>
        <column name="Description" type="@string10" required="false">
            <comment>Free-form text as desired by the warehouse maintainers</comment>
        </column>
    </table>
   <command xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" dialect="mysql">INSERT INTO Warehouse (Version, LoadDate, MaxSpecialWID, MaxReservedWID)
        VALUES (4.5, now(), 999, 999999);
    </command>
   <command xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" dialect="oracle">INSERT INTO Warehouse (Version, LoadDate, MaxSpecialWID, MaxReservedWID)
        VALUES (4.5, sysdate, 999, 999999);
    </command>
   <sequence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="WID_sequence"
             increment="1"
             start="1000000"
             minValue="1000000">
        <comment>Warehouse ID (WID) allocation --</comment>
        <comment>Generate a unlimited sequence of unique numbers to do the bookkeeping for</comment>
        <comment>Warehouse ID (WID) numbers, which serve as keys for all Warehouse entities.</comment>
        <comment>WIDs 0 and 1 are reserved and not allocated.</comment>
        <comment>Oracle dataset loaders use the following SQL for WID assignment:</comment>
        <comment>SELECT WID_sequence.nextval FROM DUAL;</comment>
        <comment>using an INTO clause in some APIs to store the result in a variable.</comment>
    </sequence>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="WIDTable"
          type="state">
        <comment>To allow for compatibility with RDBMS systems that do not support</comment>
        <comment>sequences, this table may be used to store the last used WID.</comment>
        <comment>MySQL dataset loaders use the following SQL for WID assignment:</comment>
        <comment>DELETE FROM WIDTable;</comment>
        <comment>INSERT INTO WIDTable VALUES ();</comment>
        <comment>SELECT last_insert_id();</comment>
        <comment>It may also be used in RDBMS systems that do not support auto-increment</comment>
        <comment>of a counter; however additional protocol like table locking may be</comment>
        <comment>needed to assure the integrity of WIDs during concurrent assignment.</comment>
        <comment>This table contains exactly one row at any given time.</comment>
        <column name="PreviousWID" type="@wid" required="true" auto-increment="true">
            <comment>Last-used Warehouse identifier.</comment>
        </column>
        <primaryKey name="PK_WIDTable" column="PreviousWID"/>
    </table>
   <command xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">INSERT INTO WIDTable (PreviousWID) values (999999);</command>
   <sequence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="SpecialWID_sequence"
             increment="1"
             start="2"
             minValue="2">
        <comment>Generate a finite sequence of WIDs for use as special Warehouse entities,</comment>
        <comment>including DataSet WIDs. These are small integers.</comment>
    </sequence>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="SpecialWIDTable"
          type="state">
        <comment>Special WIDs are low-valued WIDs, assigned to globally and frequently used</comment>
        <comment>WIDs within a dataset, such as its DataSetWID. They are both more</comment>
        <comment>mnemonic, and potentially more efficient to store. Warehouse.MaxSpecialWID</comment>
        <comment>delimits special and regular WIDs.</comment>
        <comment>Analogous to WIDTable, this table is used to allocate special WIDs.</comment>
        <comment>MySQL dataset loaders use the following protocol for WID assignment:</comment>
        <comment>DELETE FROM SpecialWIDTable;</comment>
        <comment>INSERT INTO SpecialWIDTable VALUES ();</comment>
        <comment>SELECT last_insert_id();</comment>
        <comment>This table contains exactly one row at any given time.</comment>
        <column name="PreviousWID" type="@wid" required="true" auto-increment="true">
            <comment>Last-used special WID</comment>
        </column>
        <primaryKey name="PK_SpecialWIDTable" column="PreviousWID"/>
    </table>
   <command xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">INSERT INTO SpecialWIDTable (PreviousWID) values (1);</command>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Enumeration"
          type="state">
        <comment>This table defines enumerated types used within the warehouse. Essentially,</comment>
        <comment>enumerated types correspond to small controlled vocabularies used within</comment>
        <comment>one or more warehouse tables. For example, the warehouse table Feature has</comment>
        <comment>a column called Type that defines the type of a feature within an amino-acid</comment>
        <comment>sequence. Examples types might be PHOS-RESIDUE and GLY-RESIDUE, corresponding</comment>
        <comment>to residues in a protein that are phosphorylated and glycosylated, respectively.</comment>
        <comment>Those two enumerated types would be entered into two rows of this Enumeration</comment>
        <comment>table. Note that in some cases the values actually stored in the warehouse</comment>
        <comment>table are numbers, which are stored in the Value field of the Enumeration table</comment>
        <comment>as the string form of that number.</comment>
        <column length="50" name="TableName" type="@varchar" required="true">
            <comment>Table this enumeration is used in</comment>
        </column>
        <column length="50" name="ColumnName" type="@varchar" required="true">
            <comment>Column this enumeration is used in</comment>
        </column>
        <column length="50" name="Value" type="@varchar" required="true">
            <comment>The enumeration value</comment>
        </column>
        <column name="Meaning" type="@string10" required="false">
            <comment>A comment describing its meaning</comment>
        </column>
        <index name="ENUM_TBNAME" columns="TABLENAME"/>
        <index name="ENUM_COLNAME" columns="COLUMNNAME"/>
        <index name="ENUM_VALUE" columns="VALUE"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="DataSet" type="state">
        <comment>Table whose rows define each dataset currently loaded into the warehouse.</comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse identifier for this entry.</comment>
        </column>
        <column length="255" name="Name" type="@varchar" required="true">
            <comment>Name of the database.</comment>
        </column>
        <column length="50" name="Version" type="@varchar" required="false">
            <comment>Version of the database described by this warehouse dataset; in practice, this can be
                populated
            </comment>
            <comment>with whatever the user chooses to put in it from the command line arguments</comment>
        </column>
        <column name="ReleaseDate" type="@datetime" required="false">
            <comment>Date that the original database was first released.</comment>
        </column>
        <column name="LoadDate" type="@datetime" required="true">
            <comment>Date that the load of this data set into the warehouse began.</comment>
        </column>
        <column name="ChangeDate" type="@datetime" required="false">
            <comment>Date of the last change to this dataset, or the date the load</comment>
            <comment>completed if no changes have occurred. NULL means that the</comment>
            <comment>is currently loading, or a fatal error occurred on the load.</comment>
            <comment>NOTE: This feature is not supported by most loaders until version 4.0.</comment>
        </column>
        <column length="255" name="HomeURL" type="@varchar" required="false">
            <comment>Web address of the home page of the original database.</comment>
        </column>
        <column length="255" name="QueryURL" type="@varchar" required="false">
            <comment>A URL at which we can retrieve objects in this database via the WWW</comment>
            <comment>by substituting the unique ID of the object we wish to retrieve for the</comment>
            <comment>string "%s" in the query URL. An example URL is:</comment>
            <comment>http://database.university.edu/get-object/5050%s</comment>
        </column>
        <column length="255" name="LoadedBy" type="@varchar" required="false">
            <comment>The name (or username) of the person who loaded this dataset.</comment>
            <comment>NOTE: This feature is not supported by most loaders until</comment>
            <comment>version 4.0. At that time, this column should be required.</comment>
        </column>
        <column length="255" name="Application" type="@varchar" required="false">
            <comment>The name of the application that created this dataset.</comment>
            <comment>NOTE: This feature is not supported by most loaders until</comment>
            <comment>version 4.0. At that time, this column should be required.</comment>
        </column>
        <column length="255" name="ApplicationVersion" type="@varchar" required="false">
            <comment>The version of the application that created this dataset.</comment>
            <comment>NOTE: This feature is not supported by most loaders until</comment>
            <comment>version 4.0. At that time, this column should be required.</comment>
        </column>
        <primaryKey name="PK_DataSet1" column="WID"/>
        <index name="DATASET_NAME_Version" columns="Name,Version"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="DataSetHierarchy"
          type="arbitrary-relation">
        <comment>Defines a dataset containment hierarchy.
	If a dataset contains another, either directly or indirectly,
	a row exists for that dataset pair in this table.
	A dataset always contains itself; therefore each dataset is included in at least one row in this table.
	A dataset may contain any number of datasets, and be contained in any number of datasets.
	To query for an object in a containing dataset whose datasetwid is NN,
	regardless of which contained dataset it is in, use a query like the following: </comment>
	     <comment>select wid from DataSetHierarchy h, Protein p
	    where h.superwid=NN and h.subwid=p.datasetwid
	    and p.name='some name'</comment>
        <column name="SuperWID" type="@wid" required="true">
            <comment>Reference to the containing DataSet.</comment>
            <foreignKey name="FK_DataSetHierarchy1" toTable="DataSet" toColumn="WID"/>
        </column>
        <column name="SubWID" type="@wid" required="true">
            <comment>Reference to the contained DataSet.</comment>
            <foreignKey name="FK_DataSetHierarchy2" toTable="DataSet" toColumn="WID"/>
        </column>
        <index name="DATASETHIERARCHY_SuperWID" columns="SuperWID"/>
        <index name="DATASETHIERARCHY_SubWID" columns="SubWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Entry"
          type="object-descriptor">
        <comment>Defines metadata describing a warehouse object.</comment>
        <comment>Every warehouse object (that is, anything with a WID column) must have an associated Entry
            row.
        </comment>
        <column name="OtherWID" type="@wid" required="true">
            <comment>Warehouse ID of the entity</comment>
            <sdKey name="FK_ENTRY1" toTable="Chemical" toColumn="WID"/>
            <sdKey name="FK_ENTRY2" toTable="Element" toColumn="WID"/>
            <sdKey name="FK_ENTRY3" toTable="Reaction" toColumn="WID"/>
            <sdKey name="FK_ENTRY4" toTable="Protein" toColumn="WID"/>
            <sdKey name="FK_ENTRY5" toTable="Feature" toColumn="WID"/>
            <sdKey name="FK_ENTRY6" toTable="Function" toColumn="WID"/>
            <sdKey name="FK_ENTRY7" toTable="EnzymaticReaction" toColumn="WID"/>
            <sdKey name="FK_ENTRY8" toTable="Gene" toColumn="WID"/>
            <sdKey name="FK_ENTRY9" toTable="BioSource" toColumn="WID"/>
            <sdKey name="FK_ENTRY10" toTable="Pathway" toColumn="WID"/>
            <sdKey name="FK_ENTRY11" toTable="NucleicAcid" toColumn="WID"/>
            <sdKey name="FK_ENTRY12" toTable="Term" toColumn="WID"/>
            <sdKey name="FK_ENTRY13" toTable="Support" toColumn="WID"/>
            <sdKey name="FK_ENTRY14" toTable="Citation" toColumn="WID"/>
            <sdKey name="FK_ENTRY15" toTable="Division" toColumn="WID"/>
            <sdKey name="FK_ENTRY16" toTable="GeneticCode" toColumn="WID"/>
            <sdKey name="FK_ENTRY17" toTable="Taxon" toColumn="WID"/>
        </column>
        <column name="InsertDate" type="@datetime" required="true">
            <comment>Date entity was stored in the warehouse</comment>
        </column>
        <column name="CreationDate" type="@datetime" required="false">
            <comment>Date entity was created in its source dataset</comment>
        </column>
        <column name="ModifiedDate" type="@datetime" required="false">
            <comment>Date that the entry was last modified, either</comment>
            <comment>in the warehouse or in the source dataset</comment>
        </column>
        <column name="LoadError" type="@boolean" required="true">
            <comment>'T' if an error (eg. parse error on some field of the entry)</comment>
            <comment>occured during loading of this entry into the warehouse, else 'F'.</comment>
        </column>
        <column name="LineNumber" type="@int32" required="false">
            <comment>Either line number or entry number from dataset source file</comment>
        </column>
        <column name="ErrorMessage" type="@string10" required="false">
            <comment>Message describing error, if any</comment>
        </column>
        <column name="DatasetWID" type="@wid" required="true">
            <comment>The dataset the entity is from</comment>
            <foreignKey name="FK_Entry" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_Entry" column="OtherWID"/>
        <index name="ENTRY_INSERTDATE" columns="InsertDate"/>
        <index name="ENTRY_CREATEDATE" columns="CreationDate"/>
        <index name="ENTRY_MODDATE" columns="ModifiedDate"/>
        <index name="ENTRY_DATASETWID" columns="DatasetWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="GeneExpressionData"
          type="indepdendent">
        <comment>MAGE gene expression data (BioDataCube)</comment>
        <comment>This table definition may evolve as the requirements for gene expression data
        are better understood.  The MAGE OM currently allows 'any' type for the Value component
        of the BioDataCube.  We are investigating ways to make this table better accomodate
        the variety of allowed datatypes.  Please send suggestions to support@biowarehouse.org</comment>
        <column name="B" type="@int16" required="true">
            <comment>BioAssay index</comment>
        </column>
        <column name="D" type="@int16" required="true">
            <comment>DesignElement index</comment>
        </column>
        <column name="Q" type="@int16" required="true">
            <comment>Quantitation Type index</comment>
        </column>
        <column name="Value" type="@varchar" length="100" required="true">
            <comment>Data value. See associated QuantiatitationType obect for type information.</comment>
        </column>
        <column name="BioAssayValuesWID" type="@wid" required="true">
            <comment>The BioAssayValues object the entity is from</comment>
            <foreignKey name="FK_GEDBAV" toTable="BioDataValues" toColumn="WID"/>
        </column>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Element"
          type="independent">
        <comment>The periodic table of elements</comment>
        <column name="WID" type="@wid" required="true">
            <comment>WID of this element</comment>
        </column>
        <column length="15" name="Name" type="@varchar" required="true">
            <comment>Long name (e.g. 'Oxygen')</comment>
        </column>
        <column length="2" name="ElementSymbol" type="@varchar" required="true">
            <comment>Symbol (e.g. 'O')</comment>
        </column>
        <column name="AtomicWeight" type="@real32" required="true">
            <comment>Weighted average weight (e.g. 16.x)</comment>
        </column>
        <column name="AtomicNumber" type="@int16" required="true">
            <comment>Number of protons</comment>
        </column>
        <primaryKey name="PK_Element" column="WID"/>
        <index name="ELEMENT_NAME" columns="Name"/>
        <index name="ELEMENT_ELEMENTSYMBOL" columns="ElementSymbol"/>
        <index name="ELEMENT_ATOMICWEIGHT" columns="AtomicWeight"/>
        <index name="ELEMENT_ATOMICNUMBER" columns="AtomicNumber"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Valence"
          type="independent">
        <comment>Defines one or more valences for each element.</comment>
        <column name="OtherWID" type="@wid" required="true">
            <comment>WID of the element</comment>
            <foreignKey name="FK_Valence" toTable="Element" toColumn="WID"/>
        </column>
        <column name="Valence" type="@int16" required="true">
            <comment>Number of valence electrons</comment>
        </column>

        <index name="VALENCE_WID" columns="OtherWID"/>
        <index name="VALENCE_VALENCE" columns="Valence"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="LightSource"
          type="object">
        <comment>Defines a light source, e.g., as produced by a scientific instrument.
	         Used by flow cytometry in describing the cytometry instrument. 
        </comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse idetification number for this light source</comment>
        </column>
        <column name="Wavelength" type="@real32" required="false">
            <comment>Wavelength of the light emitted, in nanometers</comment>
        </column>
        <column name="Type" type="@varchar" length="100" required="false">
            <comment>Enumeration. Specifies the type of light source (arc lamp, a particular laser, etc.).
            </comment>
            <enumeration>
                <restriction value="arc-lamp" description="A type of light source"/>
                <restriction value="argon-laser"
                         description="An ion laser that uses argon gas to produce light"/>
                <restriction value="krypton-laser"
                         description="An ion laser that uses krypton gas to produce light"/>
                <restriction value="argon-krypton-laser"
                         description="An ion laser that uses a combination of krypton and argon gases to produce light"/>
                <restriction value="helium-neon-laser"
                         description="A laser that uses helium and neon gases to produce light"/>
            </enumeration>
        </column>
        <column name="InstrumentWID" type="@wid" required="false">
            <comment>WID of the object representing the instrument producing the light.
	    For a flow cytometry experiment, this is typically
	    a reference to a Parameterizable row defining the cytometry instrument used.
	    This instrument is instantiated as a ParameterizableApplication row, and has
	    an associated ExperimentData row that defines the compensation parameter.</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>References the data set the entity came from</comment>
            <foreignKey name="FK_LightSource1" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_LightSource1" column="WID"/>
        <index name="LightSource_DWID" columns="DataSetWID" initial="true"/>
        <index name="LightSource_Instrument" columns="InstrumentWID"/>
        <index name="LightSource_Wavelength" columns="Wavelength"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="FlowCytometrySample"
          type="object">
        <comment>Defines an experimental sample prepared for use in a flow cytometry experiment.
	A typical experiment consists of multiple samples X multiple readings
	(forward/side scatter and using filters of various wavelengths),
	with a vector of observations (one per cell of the BioSource)
	for each sample/reading combination.</comment>
	     <comment> An ExperimentData row is defined for each observation; see that table for representation details.</comment>
	     <comment> An Experiment row is defined to associate each ExperimentData row with the experiment. </comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse idetification number for this flow cytometry sample</comment>
        </column>
        <column name="BioSourceWID" type="@wid" required="false">
            <comment>References the biological source of this sample.</comment>
            <foreignKey name="FK_FlowCytometrySample1" toTable="BioSource" toColumn="WID"/>
        </column>
        <column name="FlowCytometryProbeWID" type="@wid" required="false">
            <comment>References the probe used with this sample.</comment>
            <foreignKey name="FK_FlowCytometrySample2" toTable="FlowCytometryProbe" toColumn="WID"/>
        </column>
        <column name="MeasurementWID" type="@wid" required="false">
            <comment>References a specification of the amount of the probe used.</comment>
            <foreignKey name="FK_FlowCytometrySample3" toTable="Measurement" toColumn="WID"/>
        </column>
        <column name="ManufacturerWID" type="@wid" required="false">
            <comment>References the Contact that describes the manufacturer of this sample.</comment>
            <foreignKey name="FK_FlowCytometrySample4" toTable="Contact" toColumn="WID"/>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>References the data set the entity came from</comment>
            <foreignKey name="FK_FlowCytometrySampleDS" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_FlowCytometrySample1" column="WID"/>
        <index name="FlowCytometrySample_DWID" columns="DataSetWID" initial="true"/>
        <index name="FlowCytometrySample_BioSource" columns="BioSourceWID"/>
        <index name="FlowCytometrySample_Manufac" columns="ManufacturerWID"/>
        <index name="FlowCytometrySample_Meas" columns="MeasurementWID"/>
        <index name="FlowCytometrySample_Probe" columns="FlowCytometryProbeWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="FlowCytometryProbe"
          type="object">
        <comment>Defines a material used to measure characteristics of a cell using flow cytometry.
	         If probe is a protein, a CrossReference may be defined to specify the protein;
		 in that case CrossReference.OtherWID refers to this FlowCytometryProbe.
        </comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse idetification number for this probe</comment>
        </column>
        <column name="Type" type="@varchar" length="100" required="true">
            <comment>Enumeration. Specifies the type of probe
            </comment>
            <enumeration>
                <restriction value="acid-dye" description="An acid dye probe"/>
                <restriction value="antibody" description="An antibody probe"/>
                <restriction value="reporter" description="A protein probe"/>
            </enumeration>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey name="FK_Probe1" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_FlowCytometryProbe1" column="WID"/>
        <index name="FlowCytometryProbe_DWID" columns="DataSetWID" initial="true"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="TranscriptionUnit"
          type="object">
        <comment>Defines a transcription unit, similar to an operon.  There is a one-to-one
                 relationship between a promoter and a transcription unit.  The transcription
                 unit includes the promoter, nearby site that regulate its activity, and downstream
                 genes and the terminator.  Unlike operons, a transcription unit can contain a single
                 gene, and a transcription unit can contain only one promoter.  For operons containing
                 multiple promoters, a different transcription unit would be created for each operon.
                 See TranscriptionUnitComponent for the types of components represented.
        </comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse identifier for this TranscriptionUnit</comment>
        </column>
        <column length="255" name="Name" type="@varchar" required="true">
            <comment>Name of the transcription unit</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey name="FK_TranscriptionUnit1" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_TranscriptionUnit1" column="WID"/>
        <index name="TranscriptionUnit_DWID" columns="DataSetWID" initial="true"/>
        <index name="TranscriptionUnit_Name" columns="Name" initial="false"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          name="TranscriptionUnitComponent"
          type="associative">
        <comment>Associates a TranscriptionUnit with its components. Components consist of
          genes and/or features. A feature component may be either a promoter, a terminator or a DNA binding site
          (transcription-factor binding site).
        </comment>
        <column name="Type" type="@varchar" length="100" required="true">
            <comment>Enumeration. Specifies the type of component
            </comment>
            <enumeration>
                <restriction value="gene" description=""/>
                <restriction value="binding site" description=""/>
                <restriction value="promoter" description=""/>
                <restriction value="terminator" description=""/>
            </enumeration>
        </column>
        <column name="TranscriptionUnitWID" type="@wid" required="true">
            <comment>Links to the TranscriptionUnit associated with this object.</comment>
            <foreignKey name="FK_TranscriptionUnitComponent1" toTable="TranscriptionUnit"
                     toColumn="WID"/>
        </column>
        <column name="OtherWID" type="@wid" required="true">
            <comment>WID of the Gene or Feature associated with the TranscriptionUnit</comment>
            <sdKey name="FK_TUC_Gene" toTable="Gene" toColumn="WID"/>
            <sdKey name="FK_TUC_Feature" toTable="Feature" toColumn="WID"/>
        </column>
        <index name="TranscriptionUnitComponent_TU" columns="TranscriptionUnitWID"/>
        <index name="TranscriptionUnitComponent_OW" columns="OtherWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="Chemical">
        <comment>Defines small molecular weight chemical compounds.</comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse idetification number for this chemical</comment>
        </column>
        <column length="255" name="Name" type="@varchar" required="true">
            <comment>Common name of the chemical</comment>
        </column>
        <column name="Class" type="@boolean" required="false">
            <comment>'T' this is a class or family of related chemicals, else 'F'</comment>
        </column>
        <column length="50" name="BeilsteinName" type="@varchar" required="false">
            <comment>The Beilstein name of this chemical</comment>
        </column>
        <column length="255" name="SystematicName" type="@varchar" required="false">
            <comment>The systematic name for this chemical</comment>
        </column>
        <column length="50" name="CAS" type="@varchar" required="false">
            <comment>The Chemical Abstract Service number</comment>
        </column>
        <column name="Charge" type="@int16" required="false">
            <comment>Charge of the chemical</comment>
        </column>
        <column length="50" name="EmpiricalFormula" type="@varchar" required="false">
            <comment>The empirical formula of this chemical</comment>
            <comment>Format: { ElementSymbol Integer }+</comment>
            <comment>E.g. 'H2O1', 'C2H6O1', 'Na1Cl1'.</comment>
        </column>
        <column name="MolecularWeightCalc" type="@real32" required="false">
            <comment>Molecular weight calculated from chemical formula.</comment>
            <comment>Units: Daltons.</comment>
        </column>
        <column name="MolecularWeightExp" type="@real32" required="false">
            <comment>Molecular Weight determined through experimentation. Units: Daltons.</comment>
        </column>
        <column length="50" name="OctH2OPartitionCoeff" type="@varchar" required="false">
            <comment>Octanol-water-partition coefficient</comment>
        </column>
        <column name="PKA1" type="@real32" required="false">
            <comment>First ionization potential</comment>
        </column>
        <column name="PKA2" type="@real32" required="false">
            <comment>Second ionization potential</comment>
        </column>
        <column name="PKA3" type="@real32" required="false">
            <comment>Third ionization potential</comment>
        </column>
        <column name="WaterSolubility" type="@boolean" required="false">
            <comment>'T' if soluble in water, else 'F'</comment>
        </column>
        <column length="255" name="Smiles" type="@varchar" required="false">
            <comment>Ascii representation of the chemical structure</comment>
            <comment>Simplified Molecular Input Line Entry System</comment>
            <comment>http://www.epa.gov/medatwrk/databases/smiles.html</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey name="FK_Chemical1" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_Chemical1" column="WID"/>
        <index name="CHEMICAL_DWID_NAME" columns="DataSetWID, Name" initial="true"/>
        <index name="CHEMICAL_NAME" columns="Name" initial="true"/>
        <index name="CHEMICAL_BEILSTEINNAME" columns="BEILSTEINNAME"/>
        <index name="CHEMICAL_SYSTEMATICNAME" columns="SYSTEMATICNAME"/>
        <index name="CHEMICAL_CAS" columns="CAS"/>
        <index name="CHEMICAL_CHARGE" columns="CHARGE"/>
        <index name="CHEMICAL_EMPIRICALFORMULA" columns="EMPIRICALFORMULA"/>
        <index name="CHEMICAL_MOLEWEIGHTCALC" columns="MOLECULARWEIGHTCALC"/>
        <index name="CHEMICAL_MOLEWEIGHTEXP" columns="MOLECULARWEIGHTEXP"/>
        <index name="CHEMICAL_OCTH2OCOEFF" columns="OCTH2OPARTITIONCOEFF"/>
        <index name="CHEMICAL_PKA1" columns="PKA1"/>
        <index name="CHEMICAL_PKA2" columns="PKA2"/>
        <index name="CHEMICAL_PKA3" columns="PKA3"/>
        <index name="CHEMICAL_SMILES" columns="SMILES"/>
        <index name="CHEMICAL_DATASETWID" columns="DATASETWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="Reaction">
        <comment>Defines a chemical reaction. The reaction could be enzyme catalyzed</comment>
        <comment>or occur spontaneously. The reaction could involve small molecules, macromolecules,</comment>
        <comment>or a combination of the two. Every reaction will be stored in the warehouse in</comment>
        <comment>a given direction, for example, every reaction that has an assigned EC number is</comment>
        <comment>written in a direction assigned by the enzyme commission. In physiological settings,</comment>
        <comment>the reaction could occur in the direction the reaction is stored, the reverse direction,</comment>
        <comment>or both directions.</comment>
        <comment>Restrictions: Reaction only stores fully qualified EC numbers, e.g., NOT of the form
            "X.Y.Z.-"
        </comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse ID for this entiry</comment>
        </column>
        <column name="Name" type="@varchar" length="250" required="false">
            <comment>Name of reaction</comment>
        </column>
        <column length="50" name="DeltaG" type="@varchar" required="false">
            <comment>Delta G subzero prime value for this reaction</comment>
        </column>
        <column length="50" name="ECNumber" type="@varchar" required="false">
            <comment>Official enzyme-commission-number.</comment>
        </column>
        <column length="50" name="ECNumberProposed" type="@varchar" required="false">
            <comment>Proposed enzyme-commission-number</comment>
        </column>
        <column name="Spontaneous" type="@boolean" required="false">
            <comment>'T' if the reaction occurs spontaneously, else 'F'</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>WID of the dataset the reaction is from</comment>
            <foreignKey name="FK_Reaction" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_Reaction" column="WID"/>
        <index name="REACTION_DWID" columns="DataSetWID" initial="true"/>
        <index name="REACTION_DeltaG" columns="DeltaG"/>
        <index name="REACTION_ECNumber" columns="ECNumber"/>
        <index name="REACTION_ECNumberProposed" columns="ECNumberProposed"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Interaction"
          type="object">
        <comment>Defines a molecular interaction, such as two proteins observed to interact in a yeast-two-hybrid
            experiement. The interaction could involve macromolecules, small molecules or both.
        </comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse ID for this interaction</comment>
        </column>
        <column name="Type" type="@varchar" length="100" required="false">
            <comment>Interaction type. It is recommended to use external controled vacabulary terms, such as PSI-MI
                Interaction Type CV.
            </comment>
        </column>
        <column name="Name" type="@varchar" length="120" required="false">
            <comment>Name of the interaction.</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>WID of the dataset the interaction is from.</comment>
            <foreignKey name="FK_Interaction1" toTable="DataSet" toColumn="WID"/>
        </column>
        <primaryKey name="PK_Interaction" column="WID"/>
        <index name="INTERACTION_DWID" columns="DataSetWID" initial="true"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="Protein">
        <comment>Defines a specific protein, that is, a real-world protein which was either purified and
            isolated,
        </comment>
        <comment>OR is reasonably inferred by genomic analysis or other means, such as enzymological
            characterization.
        </comment>
        <comment>The protein could be a monomer or a multimer. In the latter case, a sequence would not be stored for
            such a record.
        </comment>
        <column name="WID" type="@wid" required="true">
            <comment>The warehouse ID of this protein</comment>
        </column>
        <column name="Name" type="@string10" required="false">
            <comment>Common name of the protein, if it exists</comment>
        </column>
        <column name="AASequence" type="@string32" required="false">
            <comment>Amino-acid sequence for this protein, if available</comment>
        </column>
        <column name="Length" type="@int32" required="false">
            <comment>Length of the amino-acid sequence for this protein, if available</comment>
            <comment>This value is not necessarily exact, as can be modified by LengthApproximate</comment>
        </column>
        <column length="10" name="LengthApproximate" type="@varchar" required="false">
            <comment>Indicates that the Length is an approximate. It could be 'gt' for</comment>
            <comment>greater than, 'lt' for less than and 'ne' to indicate that it is not</comment>
            <comment>equal. This is a controlled vocabulary.</comment>
        </column>
        <column name="Charge" type="@int16" required="false">
            <comment>Charge of the chemical</comment>
        </column>
        <column name="Fragment" type="@boolean" required="false">
            <comment>'T' if protein is a fragment, else 'F'</comment>
        </column>
        <column name="MolecularWeightCalc" type="@real32" required="false">
            <comment>Molecular weight calculated from sequence.</comment>
            <comment>Units: kiloDaltons.</comment>
        </column>
        <column name="MolecularWeightExp" type="@real32" required="false">
            <comment>Molecular Weight determined through experimentation.</comment>
            <comment>Units: kiloDaltons.</comment>
        </column>
        <column length="50" name="PICalc" type="@varchar" required="false">
            <comment>Isoelectric point (pI) calculated from its sequence.</comment>
        </column>
        <column length="50" name="PIExp" type="@varchar" required="false">
            <comment>Isoelectric point (pI) determined through experimentation.</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>WID of the dataset the protein is from</comment>
            <foreignKey name="FK_Protein" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_Protein" column="WID"/>
        <index name="PROTEIN_DWID" columns="DataSetWID" initial="true"/>
        <index name="PROTEIN_NAME">
            <variant dialect="mysql" columns="NAME(20)"/>
            <variant dialect="oracle" columns="NAME"/>
        </index>
        <index name="PROTEIN_CHARGE" columns="CHARGE"/>
        <index name="PROTEIN_MOLEWEIGHTCALC" columns="MOLECULARWEIGHTCALC"/>
        <index name="PROTEIN_MOLEWEIGHTEXP" columns="MOLECULARWEIGHTEXP"/>
        <index name="PROTEIN_PICALC" columns="PICALC"/>
        <index name="PROTEIN_PIEXP" columns="PIEXP"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="Feature">
        <comment>Features define regions or points of interest on the protein sequence or</comment>
        <comment>nucleic acid sequence specified by SequenceWID.</comment>
        <comment>Features are not used to describe objects such as Genes, BioSources, etc,</comment>
        <comment>because attributes of those objects are described in their own tables.</comment>
        <comment>Exceptions:</comment>
        <comment>1. Since pseudogenes are not entered in the Gene table, they are listed as sequence features in
            Feature
        </comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse identifier of this feature.</comment>
        </column>
        <column length="1300" name="Description" type="@varchar" required="false">
            <comment>Textual description of this feature.</comment>
        </column>
        <column length="50" name="Type" type="@varchar" required="false">
            <comment>Type of feature. These type values come from the source dataset and</comment>
            <comment>are not necessarily enumerated. Example: "Promoter CYZ".</comment>
        </column>
        <column length="50" name="Class" type="@varchar" required="false">
            <comment>Class of feature. Assigns our typology for types of features, or qualifiers</comment>
            <comment>associated with features. These are our own enumerated type values, to allow us</comment>
            <comment>to classify features without losing the original (author-provided) type values</comment>
            <comment>stored in Type. Example: Class=promoter.</comment>
            <enumeration>
                <restriction value="binding site"
                         description="Identifies the presence of a DNA binding site"/>
                <restriction value="promoter" description="Identifies the presence of a promoter"/>
                <restriction value="terminator" description="Identifies the presence of a terminator"/>
                <restriction value="pseudogene"
                         description="Identifies a pseudogene, whether non-transcribed or processed"/>
                <restriction value="ORF"
                         description="Identifies a truly unknown open reading frame according to warehouse definition (no strong evidence that a product is produced)"/>
                <restriction value="partial" description="Qualifier: States that feature is not complete"/>
                <restriction value="unknown product"
                         description="Identifies an unspecified product is produced from this genomic location, as stated in dataset"/>
                <restriction value="notable"
                         description="Qualifier: Characterizes the feature value as notable (same as 'Exceptional' in GB dataset)"/>
                <restriction value="by similarity"
                         description="Qualifier: states that feature was derived by similarity analysis"/>
                <restriction value="potential" description="Qualifier: states that feature may be incorrect"/>
                <restriction value="probably"
                         description="Qualifier: states that feature is probably correct"/>
            </enumeration>
        </column>
        <column name="SequenceType" type="@char" required="true">
            <comment>Enumeration (see also SequenceWID) that indicates whether the sequence</comment>
            <comment>is protein or nucleic and how the sequence (if available) is represented:</comment>
            <comment>If 'P', feature resides on a protein.</comment>
            <comment>If 'S' or 'N', feature resides on a nucleic acid.</comment>
            <enumeration>
                <restriction value="P"
                         description="Feature resides on a protein. Implies SequenceWID (if nonNULL) references a Protein"/>
                <restriction value="S"
                         description="Feature resides on a nucleic acid. Implies SequenceWID is nonNULL and references a Subsequence"/>
                <restriction value="N"
                         description="Feature resides on a nucleic acid. Implies SequenceWID (if nonNULL) references a NucleicAcid"/>
            </enumeration>
        </column>
        <column name="SequenceWID" type="@wid" required="false">
            <comment>References the Protein or Subsequence containing the sequence on which we</comment>
            <comment>are defining a feature:</comment>
            <comment>SequenceType of 'S' implies SequenceWID is nonNULL and references a Subsequence-</comment>
            <comment>sequence = Subsequence.Sequence (i.e., it is stored explicitly),</comment>
            <comment>SequenceType of 'N' implies SequenceWID (if nonNULL) references a NucleicAcid-</comment>
            <comment>sequence is the substring Subsequence.Sequence[StartPosition : EndPosition]</comment>
            <comment>where Subsequence is the full Subsequence of the nucleic acid.</comment>
            <comment>SequenceType of 'P' implies SequenceWID (if nonNULL) references a Protein-</comment>
            <comment>sequence is the substring Protein.AASequence[StartPosition : EndPosition].</comment>
            <sdKey name="FK_Feature1" toTable="Subsequence" toColumn="WID"/>
            <sdKey name="FK_Feature3" toTable="Protein" toColumn="WID"/>
        </column>
        <column name="Variant" type="@string32" required="false">
            <comment>Amino-acid sequence for this protein, if available</comment>
        </column>
        <column length="10" name="RegionOrPoint" type="@varchar" required="false">
            <comment>Specifies whether this feature is specified with starting and ending coordinates</comment>
            <comment>or with a single coordinate.</comment>
            <enumeration>
                <restriction value="region"
                         description="Feature is specified by a start point and an end point on the sequence"/>
                <restriction value="point"
                         description="Feature is specified by a single point on the sequence"/>
            </enumeration>
        </column>
        <column length="10" name="PointType" type="@varchar" required="false">
            <comment>Only defined if RegionOrPoint='point'. Specifies where the feature is relative </comment>
            <comment>to its location as encoded in StartPosition and EndPosition:</comment>
            <enumeration>
                <restriction value="center" description="Feature is centered at location."/>
                <restriction value="left"
                         description="Feature extends to the left (decreasing position) of location."/>
                <restriction value="right"
                         description="Feature extends to the right (increasing position) of location."/>
            </enumeration>
        </column>
        <column name="StartPosition" type="@int32" required="false">
            <comment>Start position of the feature within the NucleicAcid or Protein sequence.</comment>
            <comment>If Feature.RegionOrPoint is 'point', StartPosition and EndPosition will</comment>
            <comment>either be equal (location is exactly at a nucleotide or amino acid) or will differ by 1</comment>
            <comment>(location is centered between two adjacent nucleotides or amino acids).</comment>
            <comment> </comment>
        </column>
        <column name="EndPosition" type="@int32" required="false">
            <comment>End position of the feature within the NucleicAcid or Protein sequence.</comment>
            <comment>If Feature.RegionOrPoint is 'point', StartPosition and EndPosition will</comment>
            <comment>either be equal (location is exactly at a nucleotide or amino acid) or will differ by 1</comment>
            <comment>(location is between two adjacent nucleotides or amino acids).</comment>
        </column>
        <column length="10" name="StartPositionApproximate" type="@varchar" required="false">
            <comment>Indicates that the Start position of the coding region is an approximate value</comment>
            <comment>It could be 'gt' for greater than, 'lt' for less than and 'ne' to indicate that it is not</comment>
            <comment>equal. This is a controlled vocabulary.</comment>
            <enumeration>
                <restriction value="gt"
                         description="The start position of the feature is greater than the actual position specified."/>
                <restriction value="lt"
                         description="The start position of the feature is less than the actual position specified."/>
                <restriction value="ne"
                         description="The start position of the feature is less than or greater than the actual position. All we know is that its not the exact position."/>
            </enumeration>
        </column>
        <column length="10" name="EndPositionApproximate" type="@varchar" required="false">
            <comment>Indicates that the End position of the coding region is an approximate value.</comment>
            <comment>It could be 'gt' for greater than, 'lt' for less than and 'ne' to indicate that it is not</comment>
            <comment>equal. This is a controlled vocabulary.</comment>
            <enumeration>
                <restriction value="gt"
                         description="The end position of the feature is greater than the actual position specified."/>
                <restriction value="lt"
                         description="The end position of the feature is less than the actual position specified."/>
                <restriction value="ne"
                         description="The end position of the feature is less than or greater than the actual position. All we know is that its not the exact position."/>
            </enumeration>
        </column>
        <column name="ExperimentalSupport" type="@boolean" required="false">
            <comment>'T' if the feature is supported by experimental evidence, else 'F'</comment>
        </column>
        <column name="ComputationalSupport" type="@boolean" required="false">
            <comment>'T' if the feature is supported by computational evidence, else 'F'</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey name="FK_Feature" toTable="DataSet" toColumn="WID"/>
        </column>
        <primaryKey name="PK_Feature" column="WID"/>
        <index name="FEATURE_Description">
            <variant dialect="mysql" columns="Description(20)"/>
            <variant dialect="oracle" columns="Description"/>
        </index>
        <index name="FEATURE_TYPE" columns="Type"/>
        <index name="FEATURE_Class" columns="Class"/>
        <index name="FEATURE_SequenceWID" columns="SequenceWID"/>
        <index name="FEATURE_START_ENDPOS" columns="STARTPOSITION,ENDPOSITION"/>
        <index name="FEATURE_ENDPOSITION" columns="ENDPOSITION"/>
        <index name="FEATURE_DATASETWID" columns="DATASETWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="Function">
        <comment>Describes the non-enzymatic function(s) of proteins. That is,</comment>
        <comment>this table should not be used to describe the enzymatic function of a protein whose enzymatic</comment>
        <comment>function is described using the EnzymaticReaction table. Function names are stored as</comment>
        <comment>strings with no particular format or interpretation.</comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse identifier for this function.</comment>
        </column>
        <column length="255" name="Name" type="@varchar" required="false">
            <comment>Name of this function.</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>Data set the entity came from</comment>
            <foreignKey name="FK_Function" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_Function" column="WID"/>
        <index name="FUNCTION_NAME" columns="NAME"/>
        <index name="FUNCTION_DATASETWID" columns="DATASETWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="EnzymaticReaction">
        <comment>Defines an association between a reaction and an enzyme that catalyzes</comment>
        <comment>that reaction (ProteinWID). In the case where we are defining an</comment>
        <comment>association between a subunit of a larger enzyme complex, and a</comment>
        <comment>reaction catalyzed by that subunit only when the subunit is part of</comment>
        <comment>that larger complex, ComplexWID specifies that larger complex (assumes</comment>
        <comment>that complex is in the warehouse).</comment>
        <comment>This table requires a WID as it is referenced in multiple linking tables</comment>
        <comment>to associate alternate compounds, cofactors, etc., to allow for multiple</comment>
        <comment>valued attributes of the enzymatic reaction.</comment>
        <column name="WID" type="@wid" required="true">
            <comment>WID of this enzymatic reaction</comment>
        </column>
        <column name="ReactionWID" type="@wid" required="true">
            <comment>WID of the catalyzed reaction</comment>
            <foreignKey name="FK_EnzymaticReaction1" toTable="Reaction" toColumn="WID"/>
        </column>
        <column name="ProteinWID" type="@wid" required="true">
            <comment>WID of the enzyme</comment>
            <foreignKey name="FK_EnzymaticReaction2" toTable="Protein" toColumn="WID"/>
        </column>
        <column name="ComplexWID" type="@wid" required="false">
            <comment>WID of protein of which ProteinWID</comment>
            <comment>must be a subunit of for this reaction</comment>
            <foreignKey name="FK_EnzymaticReaction3" toTable="Protein" toColumn="WID"/>
        </column>
        <column length="30" name="ReactionDirection" type="@varchar" required="false">
            <comment>Reaction Direction Enumeration</comment>
            <enumeration>
                <restriction value="reversible"
                         description="Reaction occurs in both directions in physiological settings."/>
                <restriction value="physiol-left-to-right"
                         description="Reaction occurs in the left-to-right direction in physiological settings."/>
                <restriction value="physiol-right-to-left"
                         description="Reaction occurs in the right-to-left direction in physiological settings."/>
                <restriction value="irreversible-left-to-right"
                         description="For all practical purposes, the reaction occurs only in the left-to-right direction in physiological settings, because of chemical properties of the reaction."/>
                <restriction value="irreversible-right-to-left"
                         description="For all practical purposes, the reaction occurs only in the right-to-left direction in physiological settings, because of chemical properties of the reaction."/>
            </enumeration>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>WID of the dataset the reaction is from</comment>
            <foreignKey name="FK_EnzymaticReaction4" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_EnzymaticReaction" column="WID"/>
        <index name="ER_DATASETWID" columns="DataSetWID" initial="true"/>
        <index name="ER_REAWID" columns="REACTIONWID"/>
        <index name="ER_PROWID" columns="PROTEINWID"/>
        <index name="ER_COMWID" columns="COMPLEXWID"/>
        <index name="ER_DIRWID" columns="REACTIONDIRECTION"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="GeneticCode">
        <comment>Defines the genetic codes with a name, translation table and a start codon for each code.</comment>
        <comment>See http://embryology.med.unsw.edu.au/DNA/Genetic_Codes.htm for more information.</comment>
        <comment>Genbank ID is stored as DBID.XID, where DBID.OtherWID = GeneticCode.WID.</comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse ID for this GeneticCode.</comment>
        </column>
        <column length="2" name="NCBIID" type="@varchar" required="false">
            <comment>1- or 2-digit ID assigned to this code. See URL above.</comment>
        </column>
        <column length="100" name="Name" type="@varchar" required="false">
            <comment>Genetic code name.</comment>
        </column>
        <column length="64" name="TranslationTable" type="@varchar" required="false">
            <comment>Translation table for this genetic code. See URL above for format.</comment>
        </column>
        <column length="64" name="StartCodon" type="@varchar" required="false">
            <comment>Start Codon for this genetic code. See URL above for format</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>Reference to the data set from which the entity came from.</comment>
            <foreignKey name="FK_GeneticCode" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_GeneticCode" column="WID"/>
        <index name="GENCODE_NAME" columns="NAME"/>
        <index name="GENCODE_TRANSTABLE" columns="TRANSLATIONTABLE"/>
        <index name="GENCODE_STARTCODON" columns="STARTCODON"/>
        <index name="GENCODE_DATASETWID" columns="DATASETWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="Division">
        <comment>Stores the GenBank Division and the NCBI three letter code for records originating from GenBank.
            NCBI uses Divisions to organize GenBank records according to two definitions: some divisions are based on
            taxonomy (e.g., the "BCT" division), whereas other divisions exist purely for data organization reasons
            (e.g., the "CON" division, whose records store instructions for the construction of large contigs).
            Sequences from different GenBank divisions vary substantially in quality based upon the way they were
            generated, e.g., single-pass genomic sequencing, ESTs (low quality, single-pass sequencing), cDNAs
            (high coverage sequencing) and genomic sequencing (moderate coverage sequencing). All BioWarehouse
            records associated with a GenBank dataset also have a record in the Division table.
        </comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse ID for this Division.</comment>
        </column>
        <column length="10" name="Code" type="@varchar" required="false">
            <comment>Genbank Division code (3 characters) which is an abbreviation for the GenBank Name.</comment>
        </column>
        <column length="100" name="Name" type="@varchar" required="false">
            <comment>Division name.</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>Reference to the data set from which the entity came from.</comment>
            <foreignKey name="FK_Division" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_Division" column="WID"/>
        <index name="DIVISION_NAME" columns="NAME"/>
        <index name="DIVISION_DIVCODE" columns="CODE"/>
        <index name="DIVISION_DATASETWID" columns="DATASETWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object" name="Taxon">
        <comment>Defines a taxon, which could be a species, genus, family or some other rank.</comment>
        <comment>These ranks are controlled vocabulary and are stored in the Enumeration table.</comment>
        <comment>The taxon table associates a taxon with its parent, gives the name, division code and the</comment>
        <comment>genetic code information for the taxon.</comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse ID for this Taxon</comment>
        </column>
        <column name="ParentWID" type="@wid" required="false">
            <comment>Warehouse ID of the parent of this taxon</comment>
        </column>
        <column length="100" name="Name" type="@varchar" required="false">
            <comment>Taxonomic Name of this taxon</comment>
        </column>
        <column length="100" name="Rank" type="@varchar" required="false">
            <comment>Rank of this taxon (kingdom, superkingdom ..)</comment>
            <enumeration>
                <restriction value="no rank"
                         description="Origin:NCBI- Taxonomy databaseOrigin:NCBI- Taxonomy database. Parent: none"/>
                <restriction value="forma" description="Origin:NCBI- Taxonomy database."/>
                <restriction value="varietas" description="Origin:NCBI- Taxonomy database"/>
                <restriction value="subspecies" description="Origin:NCBI- Taxonomy database Parent: species"/>
                <restriction value="species"
                         description="Origin:NCBI- Taxonomy database. Parent: species subgroup"/>
                <restriction value="species subgroup"
                         description="Origin:NCBI- Taxonomy database. Parent: species group"/>
                <restriction value="species group"
                         description="Origin:NCBI- Taxonomy database. Parent: subgenus"/>
                <restriction value="subgenus" description="Origin:NCBI- Taxonomy database. Parent: genus"/>
                <restriction value="genus" description="Origin:NCBI- Taxonomy database. Parent: subtribe"/>
                <restriction value="subtribe" description="Origin:NCBI- Taxonomy database. Parent: tribe"/>
                <restriction value="tribe" description="Origin:NCBI- Taxonomy database. Parent: subfamily"/>
                <restriction value="subfamily" description="Origin:NCBI- Taxonomy database. Parent: family"/>
                <restriction value="family" description="Origin:NCBI- Taxonomy database Parent:superfamily"/>
                <restriction value="superfamily"
                         description="Origin:NCBI- Taxonomy database. Parent: infraorder"/>
                <restriction value="infraorder"
                         description="Origin:NCBI- Taxonomy database. Parent: parvorder"/>
                <restriction value="parvorder"
                         description="Origin:NCBI- Taxonomy database. Parent: suborder"/>
                <restriction value="suborder" description="Origin:NCBI- Taxonomy database. Parent:order"/>
                <restriction value="order" description="Origin:NCBI- Taxonomy database Parent:superorder"/>
                <restriction value="superorder"
                         description="Origin:NCBI- Taxonomy database. Parent: infraclass"/>
                <restriction value="infraclass"
                         description="Origin:NCBI- Taxonomy database. Parent: subclass"/>
                <restriction value="subclass" description="Origin:NCBI- Taxonomy database.Parent: class"/>
                <restriction value="class" description="Origin:NCBI- Taxonomy database. Parent:superclass"/>
                <restriction value="superclass"
                         description="Origin:NCBI- Taxonomy database. Parent: subphylum"/>
                <restriction value="subphylum" description="Origin:NCBI- Taxonomy database. Parent: phylum."/>
                <restriction value="phylum" description="Origin:NCBI- Taxonomy database.Parent:superphylum"/>
                <restriction value="superphylum"
                         description="Origin:NCBI- Taxonomy database. Parent:kingdom"/>
                <restriction value="subkingdom"
                         description="Origin:NCBI- Taxonomy database. Parent: kingdom"/>
                <restriction value="kingdom"
                         description="Origin:NCBI- Taxonomy database. Parent:superkingdom"/>
                <restriction value="superkingdom" description="Origin:NCBI- Taxonomy database. Parent: root"/>
                <restriction value="root" description="Origin:NCBI- Taxonomy database"/>
            </enumeration>
        </column>
        <column name="DivisionWID" type="@wid" required="false">
            <comment>Warehouse ID of the division this taxon belongs to.</comment>
            <foreignKey name="FK_Taxon_Division" toTable="Division" toColumn="WID"/>
        </column>
        <column name="InheritedDivision" type="@boolean" required="false">
            <comment>'T' if division is inherited from parent, else 'F'</comment>
        </column>
        <column name="GencodeWID" type="@wid" required="false">
            <comment>Warehouse ID of the genetic code for this taxon.</comment>
            <foreignKey name="FK_Taxon_GeneticCode" toTable="GeneticCode" toColumn="WID"/>
        </column>
        <column name="InheritedGencode" type="@boolean" required="false">
            <comment>'T' if gencode is inherited from parent, else 'F'</comment>
        </column>
        <column name="MCGencodeWID" type="@wid" required="false">
            <comment>Warehouse ID of the mitochondrial genetic code for this taxon.</comment>
        </column>
        <column name="InheritedMCGencode" type="@boolean" required="false">
            <comment>'T' if the mitochondrial gencode is inherited from parent, else 'F'</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey name="FK_Taxon" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_Taxon" column="WID"/>
        <index name="TAXON_PARENTWID" columns="PARENTWID"/>
        <index name="TAXON_NAME" columns="NAME"/>
        <index name="TAXON_RANK" columns="RANK"/>
        <index name="TAXON_DIVWID" columns="DIVISIONWID"/>
        <index name="TAXON_GENCODEWID" columns="GENCODEWID"/>
        <index name="TAXON_MCGENCODEWID" columns="MCGENCODEWID"/>
        <index name="TAXON_DATASETWID" columns="DATASETWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="BioSource">
        <comment>Defines the biological source of an entry in the Protein,
        NucleicAcid or Gene tables ("the object"), as well as other tables
        eventually storing experimental data related to e.g., microarray or
        proteomic experiments. For example, BioSource might be used to specify
        the organism, organ, and tissue in which gene expression experiments
        were performed. DEPENDENCIES: 1. As BioSource references Taxon.WID to
        specify the species, the NCBI taxonomy dataset must have ALREADY been
        loaded prior to populating BioSource. 2. BioSource stores subtype
        information in BioSubtype via the BioSourceWIDBioSubtypeWID linking
        table
        </comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse identifier for biological source.</comment>
        </column>
        <column required="false" name="MAGEClass" length="100" type="@varchar">
            <comment>Discriminator column specifies type of MAGE object this row represents (if needed)</comment>
        </column>
        <column name="TaxonWID" type="@wid" required="false">
            <comment>Warehouse GUID identifying WID of Taxon entry for the species. Always
            references species level or higher.</comment>
            <foreignKey name="FK_BioSource1" toTable="Taxon" toColumn="WID"/>
        </column>
        <column length="200" name="Name" type="@varchar" required="false">
            <comment>Informal name assigned to this source.</comment>
            <comment>Ex. (CMR): 'Escherichia coli K12-MG1655'</comment>
        </column>
        <column length="220" name="Strain" type="@varchar" required="false">
            <comment>Strain of organism from which object is derived, if applicable. This is a
            subspecies taxonomic classification not supported by Taxon because it is not
            a rigorous concept.
            Strain is defined as a population of homogeneous organisms possessing a set of
            defined characteristics. In bacteriology, the set of descendants that retains
            the characteristics of the ancestor. Members of a strain that subsequently
            differ from the original isolate are regarded as belonging either to a substrain
            of the original strain, or to a new strain.</comment>
        </column>
        <column length="50" name="Organ" type="@varchar" required="false">
            <comment>Organ of organism from which object is derived, if applicable.</comment>
            <comment>Organ is defined as any part of the body exercising a specific function, such as</comment>
            <comment>respiration, secretion, or digestion, if applicable.</comment>
        </column>
        <column length="50" name="Organelle" type="@varchar" required="false">
            <comment>Organelle of organism from which object is derived, if applicable.</comment>
        </column>
        <column length="100" name="Tissue" type="@varchar" required="false">
            <comment>Tissue of organism from which object is derived, if applicable. Can be used in</comment>
            <comment>conjunction with Organ.</comment>
            <comment>Tissue is defined as a collection of similar cells and the intercellular substances</comment>
            <comment>surrounding them. Multiple tissues can be part of an Organ.</comment>
        </column>
        <column length="50" name="CellType" type="@varchar" required="false">
            <comment>Cell type of organism from which object is derived, if applicable.</comment>
            <comment>Cell type is defined as the type of an individual cell, e.g., "myoblast". This is a</comment>
            <comment>cellular-level classification.</comment>
        </column>
        <column length="50" name="CellLine" type="@varchar" required="false">
            <comment>Cell line from which object is derived, if applicable</comment>
            <comment>Cell line usually pertains to an immortalized version of a given cell type</comment>
        </column>
        <column length="50" name="ATCCId" type="@varchar" required="false">
            <comment>Identifier assigned by ATCC.org to the cell.</comment>
        </column>
        <column name="Diseased" type="@boolean" required="false">
            <comment>'T' if source is diseased, else 'F'.</comment>
        </column>
        <column length="250" name="Disease" type="@varchar" required="false">
            <comment>If source was diseased, describes the disease borne by it.</comment>
        </column>
        <column length="50" name="DevelopmentStage" type="@varchar" required="false">
            <comment>Stage of development associated with the object, if applicable</comment>
        </column>
        <column length="15" name="Sex" type="@varchar" required="false">
            <comment>Sex of the organism from which object is derived, if
            applicable Enumerated. Values=Male/Female/Hermaphrodite/Asexual/NULL
            (NULL here means not provided by dataset)
            </comment>
            <enumeration>
                <restriction value="Male" description="Sex of organism is male"/>
                <restriction value="Female" description="Sex of organism is female"/>
                <restriction value="Hermaphrodite" description="Sex of organism is hermaphrodite"/>
                <restriction value="DoesNotApply"
                         description="The notion of a sex does not apply to this organism"/>
            </enumeration>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>The dataset this entity came from or is associated with</comment>
            <foreignKey name="FK_BioSource2" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_BioSource" column="WID"/>
        <index name="BIOSOURCE_NAME" columns="Name"/>
        <index name="BIOSOURCE_STRAIN" columns="Strain"/>
        <index name="BIOSOURCE_ATCC" columns="ATCCId"/>
        <index name="BIOSOURCE_TAXONWID" columns="TAXONWID"/>
        <index name="BIOSOURCE_DATASETWID" columns="DATASETWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="BioSubtype">
        <comment>Describes idiosyncratic sub-species descriptions such as "serotype", "variety", etc.</comment>
        <comment>These can be many to one (1 BioSource - many BioSubtypes) linked via
            BioSourceWIDBioSubtypeWID
        </comment>
        <!-- @- Created by YP 4/27/04 -->
        <!-- @- Added Version 3.0 -->
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse GUID for this BioSubtype</comment>
        </column>
        <column length="25" name="Type" type="@varchar" required="false">
            <comment>Type of subtype, e.g., "serotype"</comment>
        </column>
        <column length="50" name="Value" type="@varchar" required="true">
            <comment>Value of the subtype, e.g., "O157"</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>The dataset this entity came from or is associated with</comment>
            <foreignKey name="FK_BioSubtype2" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_BioSubtype" column="WID"/>
        <index name="BIOSUBTYPE_Type" columns="Type"/>
        <index name="BIOSUBTYPE_Value" columns="Value"/>
        <index name="BIOSUBTYPE_DATASETWID" columns="DATASETWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="NucleicAcid">
        <comment>Defines a specific nucleic acid molecule, such as DNA or of RNA.</comment>
        <comment>Entries in this table correspond to a real-world DNA or RNA molecules</comment>
        <comment>which at one point were purified and isolated ("something you can point at"). A row in this
            table
        </comment>
        <comment>can define a complete molecule, a fragment of a molecule, or a molecule that has been
            partially
        </comment>
        <comment>sequenced in different regions.</comment>
        <comment>This table will be used in several ways: (1) to associate a sequence with an entire</comment>
        <comment>replicon, or a region of a replicon, when the sequence of that replicon is known; (2) to
            associate
        </comment>
        <comment>a DNA sequence with a single gene; (3) to define a DNA or RNA molecule that has not been</comment>
        <comment>sequenced; (4) to define RNA molecules such as tRNAs.</comment>
        <comment>Features on a NucleicAcid molecule (such as promoters or binding sites) can be defined using</comment>
        <comment>the Feature table.</comment>
        <comment>The Subsequence table contains zero or more full or partial sequences contents of this
            molecule.
        </comment>
        <comment>If one represents the full sequence of this molecule, Subsequence.FullSequence = 'T' where</comment>
        <comment>Subsequence.NucleicAcidWID references this molecule. In this case, NucleicAcid.FullySequenced = 'T' as
            well.
        </comment>
        <!-- @- TODO: Could add Unsequenced flag -->
        <!-- @- Updated extensively Version 3.0 -->
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse identifier for this NucleicAcid.</comment>
        </column>
        <column length="200" name="Name" type="@varchar" required="false">
            <comment>Name or description of this molecule.</comment>
            <comment>Ex: (CMR) 'Chromosome II Brucella melitensis 16M'.</comment>
        </column>
        <column length="30" name="Type" type="@varchar" required="true">
            <comment>Enumeration: 'DNA' 'RNA' or 'na'</comment>
            <enumeration>
                <restriction value="DNA" description="The molecule is composed of DNA"/>
                <restriction value="RNA" description="The molecule is composed of RNA"/>
                <restriction value="NA"
                         description="The molecule is specified as a nucleic acid but whether of type DNA or RNA is not known"/>
            </enumeration>
        </column>
        <column length="30" name="Class" type="@varchar" required="false">
            <comment>Enumeration: describes the molecule as it exists in the organism; stores values such as RNA subtype
                ("pre-RNA", "mRNA"), replicon type (e.g., "chromosome", "plasmid")
            </comment>
            <enumeration>
                <restriction value="pre-RNA"
                         description="As it exists within the organism, the molecule is a pre-RNA molecule. NCBI: used when there is no evidence that mature RNA is produced"/>
                <restriction value="mRNA"
                         description="As it exists within the organism, the molecule is a mature mRNA. NCBI: used when there is evidence that mature mRNA is produced"/>
                <restriction value="rRNA"
                         description="As it exists within the organism, the molecule is an rRNA; NCBI used when there is evidence that mature rRNA is produced"/>
                <restriction value="tRNA"
                         description="As it exists within the organism, the molecule is a tRNA; NCBI: used when there is evidence that mature tRNA is produced"/>
                <restriction value="snRNA"
                         description="As it exists within the organism, the molecule is a small nuclear RNA. NCBI: used when there is evidence that snRNA is produced"/>
                <restriction value="scRNA"
                         description="As it exists within the organism, the molecule is an RNA which encodes small cytoplasmic ribonucleic proteins. NCBI: used when there is evidence that gene codes of small cytoplasmic (sc) ribonucleoproteins (RNP)s"/>
                <restriction value="snoRNA"
                         description="As it exists within the organism, the molecule is a small nucleolar RNA. NCBI: used when there is evidence that transcript is a small nucleolar RNA"/>
                <restriction value="other" description="Check notes as to how we map this..."/>
                <restriction value="chromosome"
                         description="As it exists within the organism, the molecule is a chromosome"/>
                <restriction value="plasmid"
                         description="As it exists within the organism, the molecule is a plasmid"/>
                <restriction value="organelle-chromosome"
                         description="As it exists within the organism, the molecule is the chromosome of an organelle"/>
                <restriction value="transposon"
                         description="As it exists within the organism, the molecule is a transposon"/>
                <restriction value="virus"
                         description="As it exists within the organism, the molecule is a virus"/>
                <restriction value="unknown" description="Used when the class is unknown"/>
            </enumeration>
        </column>
        <column length="30" name="Topology" type="@varchar" required="false">
            <comment>Enumeration: 'circular', 'linear' or 'other'.</comment>
            <enumeration>
                <restriction value="linear" description="The topology of the molecule is Linear"/>
                <restriction value="circular" description="The topology of the molecule is Circular"/>
                <restriction value="other"
                         description="The topology of the molecule is neither circular nor linear but is known"/>
            </enumeration>
        </column>
        <column length="30" name="Strandedness" type="@varchar" required="false">
            <comment>Enumeration indicating whether Nucleic Acid is single stranded, double stranded or mixed
                stranded.
            </comment>
            <enumeration>
                <restriction value="ss" description="The molecule is single stranded"/>
                <restriction value="ds" description="The molecule is double stranded"/>
                <restriction value="mixed"
                         description="The molecule is composed of single and double stranded regions"/>
            </enumeration>
        </column>
        <column length="30" name="SequenceDerivation" type="@varchar" required="false">
            <comment>Enumeration describing how the sequence was generated</comment>
            <comment>(e.g., from single clone, from assembly of sequences</comment>
            <comment>from other sequence entries, collection of different clones, etc).</comment>
            <enumeration>
                <restriction value="virtual"
                         description="NCBI: The sequence of the molecule is NOT known. NOTE: this should map to null."/>
                <restriction value="raw"
                         description="POORLY DEFINED; seems to be used to indicate that the sequence of the molecule was actually generated from one single continuous molecule, as opposed to assembled together from sequences from different molecules (e.g., different clones)"/>
                <restriction value="seg"
                         description="NCBI: The sequence of the molecule is made up of collection of segments arranged according to specified coordinates, e.g., sequence was derived from assembling sequences from different clones"/>
                <restriction value="reference"
                         description="NCBI: The sequence of the molecule is constructed from existing Bioseqs;It behaves exactly like a segmented Bioseq in taking it's data and character from the Bioseq to which it points."/>
                <restriction value="constructed"
                         description="NCBI: The sequence of the molecule is constructed by assembling other Bioseqs"/>
                <restriction value="consensus"
                         description="NCBI: The sequence of the molecule represents a pattern typical of a sequence region or family of sequences;' it summarizes attributes of an aligned collection of real sequences. Note that this is NOT A REAL OBJECT"/>
                <restriction value="map"
                         description="NCBI: The molecule does not have a sequence describing it, but rather a set of coordinates (restriction fragment order, genetic markers, physical map, etc)"/>
            </enumeration>
        </column>
        <column name="Fragment" type="@boolean" required="false">
            <comment>'T' if this is a fragment of a molecule,</comment>
            <comment>'F' if this NucleicAcid describes an entire molecule.</comment>
        </column>
        <column name="FullySequenced" type="@boolean" required="false">
            <comment>'T' if the molecule is completely</comment>
            <comment>sequenced within this dataset, else 'F'.</comment>
        </column>
        <column name="MoleculeLength" type="@int32" required="false">
            <comment>The length of the molecule, in nucleotides. This value is firm if FullySequenced is 'T';</comment>
            <comment>otherwise,MoleculeLength is an approximation and is not necessarily equal to
                CumulativeLength,
            </comment>
            <comment>as the the molecule may not have been sequenced to completion.</comment>
            <comment>This value is calculated if it is not explicitely stated in the source dataset</comment>
        </column>
        <column length="10" name="MoleculeLengthApproximate" type="@varchar" required="false">
            <comment>Enumeration; specifies whether MoleculeLength stores an approximate value:</comment>
            <comment>'gt' for greater than,</comment>
            <comment>'lt' for less than, or</comment>
            <comment>'ne' for not equal.</comment>
            <enumeration>
                <restriction value="gt"
                         description="The length of the molecule's sequence is greater than the actual length specified"/>
                <restriction value="lt"
                         description="The length of the molecule's sequence is less than the actual length specified"/>
                <restriction value="ne"
                         description="The length of the molecule's sequence is less than or greater than the actual length. All we know is that its not the exact length"/>
            </enumeration>
        </column>
        <column name="CumulativeLength" type="@int32" required="false">
            <comment>The cumulative number of nucleotides for all Subsequences referenced by this NucleicAcid
                entry,
            </comment>
            <comment>whether contiguous or not. This value is a summation of the number of nucleotides for these
                Subsequences.
            </comment>
            <comment>If the molecule is completely sequenced, this value should be identical</comment>
            <comment>to that of MoleculeLength, and both fields are populated.</comment>
        </column>
        <column length="10" name="CumulativeLengthApproximate" type="@varchar" required="false">
            <comment>Enumeration; specifies whether CumulativeLength how approximates actual total length:</comment>
            <comment>'gt' for greater than,</comment>
            <comment>'lt' for less than, or</comment>
            <comment>'ne' for not equal.</comment>
            <enumeration>
                <restriction value="gt"
                         description="The total length of the molecule's sequence is greater than the actual length"/>
                <restriction value="lt"
                         description="The total length of the molecule's sequence is less than the actual length"/>
                <restriction value="ne"
                         description="The total length of the molecule's sequence is less than or greater than the actual length. All we know is that its not the exact length"/>
            </enumeration>
        </column>
        <column name="GeneticCodeWID" type="@wid" required="false">
            <comment>References the genetic code of this molecule.</comment>
            <foreignKey name="FK_NucleicAcid1" toTable="GeneticCode" toColumn="WID"/>
        </column>
        <column name="BioSourceWID" type="@wid" required="false">
            <comment>References the biological source of this molecule.</comment>
            <foreignKey name="FK_NucleicAcid2" toTable="BioSource" toColumn="WID"/>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>References the data set from which the entity came from</comment>
            <foreignKey name="FK_NucleicAcid3" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_NucleicAcid" column="WID"/>
        <index name="NUCLEICACID_Name" columns="Name"/>
        <index name="NUCLEICACID_Type" columns="Type"/>
        <index name="NUCLEICACID_Class" columns="Class"/>
        <index name="NUCLEICACID_MoleculeLength" columns="MoleculeLength"/>
        <index name="NUCLEICACID_CumulativeLength" columns="CumulativeLength"/>
        <index name="NUCLEICACID_GCWID" columns="GeneticCodeWID"/>
        <index name="NUCLEICACID_BSWID" columns="BioSourceWID"/>
        <index name="NUCLEICACID_DATASETWID" columns="DATASETWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="Subsequence">
        <comment>Contains a contiguous sequence of a nucleic acid molecule. Multiple Subsequences can make up a given
            NucleicAcid entry.
        </comment>
        <comment>Contains either the full or partial nucleotide sequence of the nucleic acid molecule stored in
            NucleicAcid.
        </comment>
        <comment>Todo: Currently the schema has no way of indicating an approximate position</comment>
        <comment>of this Subsequence on the NucleicAcid as a whole.</comment>
        <!-- @- Ordering/map issues avoided for this release as too complex -->
        <!-- @- Added Version 3.0 -->
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse identifier for this Subsequence.</comment>
        </column>
        <column name="NucleicAcidWID" type="@wid" required="true">
            <comment>References the containing nucleic acid molecule.</comment>
            <foreignKey name="FK_Subsequence1" toTable="NucleicAcid" toColumn="WID"/>
        </column>
        <column name="FullSequence" type="@boolean" required="false">
            <comment>'T' if this is the complete sequence of the nucleic acid molecule</comment>
            <comment>referenced by NucleicAcidWID, else 'F'.</comment>
        </column>
        <column name="Sequence" type="@string32" required="false">
            <comment>Nucleotide sequence of this Subsequence.</comment>
        </column>
        <column name="Length" type="@int32" required="false">
            <comment>Number of nucleotides (and characters) in Sequence. This value</comment>
            <comment>is calculated if it is not explicitely stated in the source</comment>
            <comment>dataset</comment>
        </column>
        <column length="10" name="LengthApproximate" type="@varchar" required="false">
            <comment>Enumeration; indicates that Length approximates actual Sequence length:</comment>
            <comment>'gt' for greater than,</comment>
            <comment>'lt' for less than, or</comment>
            <comment>'ne' for not equal.</comment>
        </column>
        <column name="PercentGC" type="@real32" required="false">
            <comment>Percentage of Sequence nucleotides that are either guanine or cytosine.</comment>
            <comment>This value is calculated if it is not explicitely stated in the source</comment>
            <comment>dataset</comment>
        </column>
        <column length="30" name="Version" type="@varchar" required="false">
            <comment>Dataset-specific information to indicate the version of this Subsequence.</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey name="FK_Subsequence2" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_Subsequence" column="WID"/>
        <index name="Subsequence_NAWID" columns="NucleicAcidWID"/>
        <index name="Subsequence_Length" columns="Length"/>
        <index name="Subsequence_PercentGC" columns="PercentGC"/>
        <index name="Subsequence_DWID" columns="DATASETWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object" name="Gene">
        <comment>Defines a notion of gene that is limited to procaryotic aspects of</comment>
        <comment>genes. Later versions of the warehouse will expand this definition to include</comment>
        <comment>eukaryotic aspects of genes. Separate tables define associations between a gene and</comment>
        <comment>(1) its biological source(s),</comment>
        <comment>(2) its protein product(s), if any, and</comment>
        <comment>(3) its RNA product(s), if any.</comment>
        <!-- @- Modified for 3.0 -->
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse identifier this gene.</comment>
        </column>
        <column length="255" name="Name" type="@varchar" required="false">
            <comment>Name of the gene.</comment>
        </column>
        <column name="NucleicAcidWID" type="@wid" required="false">
            <comment>Reference to the NucleicAcid molecule (replicon) this gene resides upon.</comment>
            <foreignKey name="FK_Gene1" toTable="NucleicAcid" toColumn="WID"/>
        </column>
        <column name="SubsequenceWID" type="@wid" required="false">
            <comment>Reference to the Subsequence containing the nucleotide sequence of this Gene.</comment>
            <!-- @- Added 3.0 -->
        </column>
        <column length="100" name="Type" type="@varchar" required="false">
            <comment>Describes the type of molecule which is known to be *ultimately* produced by this gene</comment>
            <comment>enumerated values (polypeptide, pre-mRNA, rRNA, tRNA, etc)</comment>
            <enumeration>
                <restriction value="unknown"
                         description="used when transcriptional status of gene is unknown"/>
                <restriction value="pre-RNA"
                         description="used when there is no evidence that a mature RNA is ultimately produced by the gene"/>
                <restriction value="mRNA"
                         description="used when there is evidence that a mature mRNA is ultimately produced by the gene"/>
                <restriction value="rRNA"
                         description="used when there is evidence that a mature rRNA is ultimately produced by the gene"/>
                <restriction value="tRNA"
                         description="used when there is evidence that a mature tRNA is ultimately produced by the gene"/>
                <restriction value="snRNA"
                         description="used when there is evidence that an snRNA is ultimately produced by the gene"/>
                <restriction value="scRNA" description="????"/>
                <restriction value="polypeptide"
                         description="used when there is evidence that the ultimate product of this gene is proteinaceous"/>
                <restriction value="snoRNA" description="???"/>
                <restriction value="other" description="catchall ?"/>
            </enumeration>
        </column>
        <column length="35" name="GenomeID" type="@varchar" required="false">
            <comment>Unique ID assigned to this gene, such as by a genome project</comment>
        </column>
        <column name="CodingRegionStart" type="@int32" required="false">
            <comment>Base position of start of coding region. Start is always less than End,</comment>
            <comment>except for genes that wrap around the origin of a circular chromosome.</comment>
        </column>
        <column name="CodingRegionEnd" type="@int32" required="false">
            <comment>Base position of end of coding region.</comment>
            <comment>Indexes the stop codon that terminates the gene.</comment>
        </column>
        <column length="10" name="CodingRegionStartApproximate" type="@varchar"
              required="false">
            <comment>Indicates that the Start position of the coding region is an approximate value.</comment>
            <comment>It could be 'gt' for greater than, 'lt' for less than and 'ne' to indicate that it is not</comment>
            <comment>equal. This is a controlled vocabulary.</comment>
        </column>
        <column length="10" name="CodingRegionEndApproximate" type="@varchar" required="false">
            <comment>Indicates that the End position of the coding region is an approximate value.</comment>
            <comment>It could be 'gt' for greater than, 'lt' for less than and 'ne' to indicate that it is not</comment>
            <comment>equal. This is a controlled vocabulary.</comment>
        </column>
        <column length="25" name="Direction" type="@varchar" required="false">
            <comment>Direction of transcription as defined in the enumeration table</comment>
            <enumeration>
                <restriction value="unknown" description="unknown the strand being transcribed is unknown"/>
                <restriction value="forward" description="the plus strand is being transcribed"/>
                <restriction value="reverse" description="the minus strand is being transcribed"/>
                <restriction value="forward_and_reverse" description="both strands are being transcribed"/>
                <restriction value="undefined_value"
                         description="UNDEFINED; the NCBI documentation does not define this value"/>
            </enumeration>
        </column>
        <column name="Interrupted" type="@boolean" required="false">
            <comment>'T' if the gene is interrupted, else 'F'.</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey name="FK_Gene2" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_Gene" column="WID"/>
        <index name="GENE_DATASETWID" columns="DATASETWID" initial="true"/>
        <index name="GENE_Name" columns="Name"/>
        <index name="GENE_Type" columns="Type"/>
        <index name="GENE_GenomeID" columns="GenomeID"/>
        <index name="GENE_START_END_POSITION" columns="CODINGREGIONSTART, CODINGREGIONEND"/>
        <index name="GENE_ENDPOSITION" columns="CODINGREGIONEND"/>
        <index name="GENE_NAWID" columns="NucleicAcidWID"/>
        <index name="GENE_SubsequenceWID" columns="SubsequenceWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="Pathway">
        <comment>Pathways are graphs of reactions, grouped together according to a</comment>
        <comment>higher biological function they perform. Some pathways may be</comment>
        <comment>"template", "reference", "model" or "sum of organisms" pathways. Those</comment>
        <comment>pathways do not contain an BioSourceWID reference, and have the type</comment>
        <comment>field set to "R" (Reference/Model/Theoretical). For real organisms,</comment>
        <comment>the type is "O".</comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse ID for this pathway</comment>
        </column>
        <column length="255" name="Name" type="@varchar" required="true">
            <comment>Name of the pathway</comment>
            <enumeration>
                <restriction value="unknown" description="Name assigned when it is unknown or missing"/>
            </enumeration>
        </column>
        <column name="Type" type="@boolean" required="true">
            <comment>Type of pathway (see comment above)</comment>
        </column>
        <column name="BioSourceWID" type="@wid" required="false">
            <comment>BioSource this pathway occurs in</comment>
            <foreignKey name="FK_Pathway1" toTable="BioSource" toColumn="WID"/>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>WID of the dataset the pathway is from</comment>
            <foreignKey name="FK_Pathway2" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_Pathway" column="WID"/>
        <!-- @- Does KEGG loader use these indexes? -->
        <index name="PATHWAY_BSWID_WID_DWID" columns="BioSourceWID, WID, DataSetWID"
             initial="true"/>
        <index name="PATHWAY_TYPE_WID_DWID" columns="TYPE, WID, DataSetWID" initial="true"/>
        <index name="PATHWAY_DWID" columns="DataSetWID" initial="true"/>
        <index name="PATHWAY_Name" columns="Name"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object" name="Term">
        <comment>A term is a controlled vocabulary term used within a particular dataset.</comment>
        <comment>E.g. the keyword attached to proteins in SwissProt. Terms can be arranged</comment>
        <comment>in a hierarchy (see the TermRelationship table).</comment>
        <!-- @- Modified for 3.5 -->
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse identifier for this term</comment>
        </column>
        <column length="255" name="Name" type="@varchar" required="true">
            <comment>Name for the term</comment>
        </column>
        <column name="Definition" type="@string10" required="false">
            <comment>Definition of the term</comment>
        </column>
        <column name="Hierarchical" type="@boolean" required="false">
            <comment>'T' if term is part of a hierarchy of terms</comment>
        </column>
        <column name="Root" type="@boolean" required="false">
            <comment>'T' if this term is at the top of a hierarchy</comment>
        </column>
        <column name="Obsolete" type="@boolean" required="false">
            <comment>'T' if term is known to be obsolete</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>WID of the dataset the pathway is from</comment>
        </column>
        <primaryKey name="PK_Term" column="WID"/>
        <index name="TERM_NAME" columns="NAME"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="Computation">
        <comment>Defines a parameterized computation that has been performed on objects in the warehouse.</comment>
        <comment>TODO: Parameters are specified in the Parameter table.</comment>
        <column name="WID" type="@wid" required="true">
            <comment>WID of this computation</comment>
        </column>
        <column length="50" name="Name" type="@varchar" required="true">
            <comment>Name of the algorithm, procedure, or program, e.g. 'BLAST'</comment>
        </column>
        <column name="Description" type="@string16" required="false">
            <comment>Description of the computation performed</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>WID of the dataset the computation is from</comment>
            <foreignKey name="FK_Computation" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_Computation" column="WID"/>
        <index name="COMPUTATION_NAME" columns="NAME"/>
        <index name="COMPUTATION_DATASETWID" columns="DataSetWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="Citation">
        <comment>Defines a literature citation.</comment>
        <comment>Typically a citation is associated with one or more Warehouse objects via the CitationWIDOtherWID
            table.
        </comment>
        <column name="WID" type="@wid" required="true">
            <comment>WID of this citation</comment>
        </column>
        <column name="Citation" type="@string10" required="false">
            <comment>Line of text containing the citation</comment>
        </column>
        <column name="PMID" type="@number" required="false">
            <comment>Pubmed ID of the citation, if known</comment>
        </column>

        <column name="Title" type="@varchar" length="255" required="false">
            <comment>Title of the article</comment>
        </column>
        <column name="Authors" type="@varchar" length="255" required="false">
            <comment>Author name(s)</comment>
        </column>
        <column name="Publication" type="@varchar" length="255" required="false">
            <comment>Publication title</comment>
        </column>
        <column name="Publisher" type="@varchar" length="255" required="false">
            <comment>Publisher's name</comment>
        </column>
        <column name="Editor" type="@varchar" length="255" required="false">
            <comment>Editor's name</comment>
        </column>
        <column name="Year" type="@varchar" length="255" required="false">
            <comment>Year of publication</comment>
        </column>
        <column name="Volume" type="@varchar" length="255" required="false">
            <comment>Volume of publication</comment>
        </column>
        <column name="Issue" type="@varchar" length="255" required="false">
            <comment>Issue number</comment>
        </column>
        <column name="Pages" type="@varchar" length="255" required="false">
            <comment>Page number(s)</comment>
        </column>
        <column name="URI" type="@varchar" length="255" required="false">
            <comment>Publication URI</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>WID of the dataset the Citation is from</comment>
            <foreignKey name="FK_Citation" toTable="DataSet" toColumn="WID"/>
        </column>

        <primaryKey name="PK_Citation" column="WID"/>
        <index name="CITATION_PMID" columns="PMID" initial="true"/>
        <index name="CITATION_CITATION" initial="true">
            <variant dialect="mysql" columns="Citation(20)"/>
            <variant dialect="oracle" columns="Citation"/>
        </index>
        <index name="CITATION_DATASETWID" columns="DataSetWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="Archive">
        <comment>Defines an association between a warehouse entity and an external representation or depiction</comment>
        <comment>of that entity in a well-defined format.</comment>
        <comment>Can be used to store the contents itself, or to indicate that an archive is present at a URL.</comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column name="OtherWID" type="@wid" required="true">
            <comment>WID of entity archive is associated with</comment>
        </column>
        <column length="10" name="Format" type="@varchar" required="true">
            <comment>Storage/compression format used eg. 'zip' 'tar' 'tgz' 'jpeg'</comment>
        </column>
        <column name="Contents" type="@byte32" required="false">
            <comment>Archive contents</comment>
        </column>
        <column name="URL" type="@string10" required="false">
            <comment>Web address the archive is found at, ideally a specific file</comment>
        </column>
        <column length="50" name="ToolName" type="@varchar" required="false">
            <comment>The name of the tool or software kit the archive is used by</comment>
            <comment>eg. 'MIAMExpress'</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>DataSet.WID this entity is associated with</comment>
        </column>
        <primaryKey name="PK_ARCHIVE" column="WID"/>
        <!--<sd>SD CONSTRAINT FK_Archive1 FOREIGN KEY (ExperimentWID) REFERENCES Experiment(WID)</sd>-->
        <index name="ARCHIVE_OTHERWID" columns="OTHERWID"/>
        <index name="ARCHIVE_TOOL" columns="TOOLNAME"/>
        <index name="ARCHIVE_DATASETWID" columns="DataSetWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Experiment"
          type="object">
        <comment>Defines an experiment. Provides a context for associating experimental data with it.</comment>
        <comment>Allows tree-structured experiments consisting of heterogeneous subexperiments,</comment>
        <comment>subexperiments corresponding to time-series observations,</comment>
        <comment>and repeated trials of identical experiments.</comment>
        <comment>For a hierarchical experiment, data should be associated with the Experiment</comment>
        <comment>at the appropriate level. For example, if data reflects results from averaging</comment>
        <comment>numerous identically conducted trials, that data should be associated with the</comment>
        <comment>Experiment representing the group of these trials.</comment>
        <comment>A Comment table entry may be created to contain discussion of results, etc.</comment>
        <comment>A DBID table entry may be created if the (sub)experiment has a unique name within its
            DataSet.
        </comment>
        <comment>SynonymTable table entries may be created to associate names with the (sub)experiment.</comment>
        <comment>If published, a reference may be created in Citation table.</comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column length="50" name="Type" type="@varchar" required="true">
            <comment>Mnemonic for the general type of experiment, e.g. 'microarray'</comment>
        </column>
        <column name="ContactWID" type="@wid" required="false">
            <comment>Contact.WID for submitter/investigator</comment>
            <foreignKey name="FK_Experiment3" toTable="Contact" toColumn="WID"/>
        </column>
        <column name="ArchiveWID" type="@wid" required="false">
            <comment>Archive.WID of external rep'n of experiment and its data.</comment>
            <foreignKey name="FK_Experiment4" toTable="Archive" toColumn="WID"/>
        </column>
        <column name="StartDate" type="@datetime" required="false">
            <comment>Date+time experiment was started</comment>
        </column>
        <column name="EndDate" type="@datetime" required="false">
            <comment>Date+time experiment was completed</comment>
        </column>
        <column name="Description" type="@string16" required="false">
            <comment>Description of this experiment</comment>
        </column>
        <column name="GroupWID" type="@wid" required="false">
            <comment>Experiment.WID defining the parent group of this subexperiment</comment>
            <foreignKey name="FK_Experiment2" toTable="Experiment" toColumn="WID"/>
        </column>
        <column length="50" name="GroupType" type="@varchar" required="false">
            <comment>Enumeration indicating type of any and all direct subexperiments</comment>
            <comment>Exs: 'replicate' 'variant' 'step' 'time-series'</comment>
            <enumeration>
                <restriction value="replicate"
                         description="All subexperiments attempt to replicate identical experimental conditions and parameters"/>
                <restriction value="variant"
                         description="Subexperiments are variations upon an experimental procedure, technique, conditions, and/or parameters"/>
                <restriction value="time-series"
                         description="Subexperiments consist of observations according to a specific schedule"/>
                <restriction value="step"
                         description="Subexperiments comprise an experimental procedure and consist of an ordered sequence"/>
            </enumeration>
        </column>
        <column name="GroupSize" type="@int32" required="true">
            <comment>Number of child experiments loaded</comment>
        </column>
        <column name="GroupIndex" type="@int32" required="false">
            <comment>Counter value identifying this experiment in a sequence or set</comment>
            <comment>of subexperiments (eg. time-series). NULL if GroupWID is NULL.</comment>
        </column>
        <column name="TimePoint" type="@int32" required="false">
            <comment>Time offset indicating when associated observations in a</comment>
            <comment>time-series experiment were conducted</comment>
        </column>
        <column length="20" name="TimeUnit" type="@varchar" required="false">
            <comment>Enumeration for units of TimePoint</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>DataSet.WID this entity is associated with</comment>
            <foreignKey name="FK_Experiment5" toTable="DataSet" toColumn="WID"/>
        </column>
        <column name="BioSourceWID" type="@wid" required="false">
            <comment>References the biological source of this experiment, if applicable.</comment>
            <foreignKey name="FK_Experiment6" toTable="BioSource" toColumn="WID"/>
        </column>
        <primaryKey name="PK_Experiment" column="WID"/>
        <index name="EXP_TYPE" columns="TYPE"/>
        <index name="EXP_CON" columns="CONTACTWID"/>
        <index name="EXP_GROUP" columns="GROUPWID"/>
        <index name="EXP_DS" columns="DATASETWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="ExperimentData">
        <comment>Specifies a relationship between one data entity and an experiment in which it was
	recorded as an observation or used in some other fashion.</comment>
	     <comment/>
	     <comment> Used in flow cytometry to represent both observations and filter wavelengths.</comment>
	     <comment> For an observation: </comment>
	     <comment> ExperimentData.Data contains the vector of observations </comment>
	     <comment>   ExperimentData.MageData = NULL </comment>
	     <comment>   ExperimentData.OtherWID = the FlowCytometrySample.WID of the sample, </comment>
	     <comment>   ExperimentData.Role defines the reading ('forward scatter', 'side scatter', or 'filter'), </comment>
	     <comment>   ExperimentData.Type = 'flow cytometry', </comment>
	     <comment>   ExperimentData.Kind = 'O' (observation) </comment>
	     <comment> For a filter wavelength: </comment>
	     <comment>   ExperimentData.Data = NULL </comment>
	     <comment>   ExperimentData.MageData references a ParameterValue row for the wavelength </comment>
	     <comment>   ExperimentData.Role = 'filter wavelength' </comment>
	     <comment>   ExperimentData.Kind = 'P' (parameter) </comment>
	     <comment>   ExperimentData.OtherWID = the ExperimentData.WID of the observation, </comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column name="ExperimentWID" type="@wid" required="true">
            <comment>Experiment entity</comment>
            <foreignKey name="FK_ExpData1" toTable="Experiment" toColumn="WID"/>
        </column>
        <column name="Data" type="@string32" required="false">
            <comment>Data associated with experiment, in an unspecified format.
	             May be specified instead of or along with MageData.
            </comment>
        </column>
        <column name="MageData" type="@wid" required="false">
            <comment>Data associated with experiment using MAGE structure.
	             May be specified instead of or along with Data.
            </comment>
            <foreignKey name="FK_ExpDataMD" toTable="ParameterValue" toColumn="WID"/>
        </column>
        <column length="50" name="Role" type="@varchar" required="true">
            <comment>Describes how data is used in experiment</comment>
            <comment>ex: 'green intensity', 'forward scatter', 'filter wavelength'</comment>
        </column>
        <column name="Kind" type="@char" required="true">
            <comment>Characterizes relationship of data to experiment</comment>
            <enumeration>
                <restriction value="O" description="Data is an observation"/>
                <restriction value="C" description="Data is computed from an observation"/>
                <restriction value="P" description="Data is a parameter to a procedure or compuatation"/>
                <restriction value="M" description="Data is metadata describing other data"/>
            </enumeration>
        </column>
        <column name="DateProduced" type="@datetime" required="false">
            <comment>When the observation was taken, the computation was performed, etc.</comment>
        </column>
        <column name="OtherWID" type="@wid" required="false">
            <comment>WID of entity this experiment data is associated with.
	             If Kind='O', it is typically the sample or specimen being observed.
		     If Kind='P', it is typically another ExperimentData or ParameterizableApplication
		     that is parameterized by this entity.</comment>
        </column>
         <column name="DataSetWID" type="@wid" required="true">
            <comment>The data set this entity came from or is associated with</comment>
            <foreignKey name="FK_ExpData2" toTable="DataSet" toColumn="WID"/>
        </column>
       <primaryKey name="PK_ExpData" column="WID"/>
        <index name="EXPDATA_ExperimentWID" columns="ExperimentWID"/>
        <index name="EXPDATA_Kind" columns="Kind"/>
        <index name="EXPDATA_MageData" columns="MageData"/>
        <index name="EXPDATA_OtherWID" columns="OtherWID"/>
        <index name="EXPDATA_DS" columns="DATASETWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="object"
          name="Support">
        <comment>Describes the source and strength of evidence for individual facts in the warehouse.</comment>
        <comment>This table is designed to allow different types of evidential support to be asserted for</comment>
        <comment>different types of database assertions, such as using one set of evidence types for supporting</comment>
        <comment>assertions about protein function, and another, possibly overlapping set of evidence types</comment>
        <comment>for supporting assertions about protein existence.</comment>
        <comment>Example use: Record that there are two sources of support for the function of a given</comment>
        <comment>protein, one computational and one experimental. This table has a WID for use in the</comment>
        <comment>CitationWIDOtherWID table.</comment>
        <column name="WID" type="@wid" required="true">
            <comment>WID of this support</comment>
        </column>
        <column name="OtherWID" type="@wid" required="true">
            <comment>WID of supported entity, e.g. Protein Function</comment>
            <sdKey name="FK_Support1" toTable="Chemical" toColumn="WID"/>
            <sdKey name="FK_Support2" toTable="Element" toColumn="WID"/>
            <sdKey name="FK_Support3" toTable="Reaction" toColumn="WID"/>
            <sdKey name="FK_Support4" toTable="Protein" toColumn="WID"/>
            <sdKey name="FK_Support5" toTable="Feature" toColumn="WID"/>
            <sdKey name="FK_Support6" toTable="Function" toColumn="WID"/>
            <sdKey name="FK_Support7" toTable="EnzymaticReaction" toColumn="WID"/>
            <sdKey name="FK_Support8" toTable="Gene" toColumn="WID"/>
            <sdKey name="FK_Support9" toTable="BioSource" toColumn="WID"/>
            <sdKey name="FK_Support10" toTable="Pathway" toColumn="WID"/>
            <sdKey name="FK_Support11" toTable="NucleicAcid" toColumn="WID"/>
            <sdKey name="FK_Support14" toTable="Citation" toColumn="WID"/>
        </column>
        <column length="100" name="Type" type="@varchar" required="false">
            <comment>Type: Identifies the type of assertion that this row pertains to.</comment>
            <enumeration>
                <restriction value="protein function" description="The evidence supports protein function"/>
                <restriction value="protein existence" description="The evidence supports protein existence"/>
            </enumeration>
        </column>
        <column length="100" name="EvidenceType" type="@varchar" required="false">
            <comment>EvidenceType: Defines the type of evidential support that this row pertains to.</comment>
            <enumeration>
                <restriction value="computational"
                         description="Valid when type is 'protein function'. Protein function is supported by a computational prediction (example: existence of a gene could be supported by a gene-finding program)."/>
                <restriction value="experimental"
                         description="Valid when type is 'protein function'. Protein function is supported by data from a wet-lab experiment (example: existence of a gene could be supported observation of the gene's mRNA product in a microarray experiment)."/>
                <restriction value="Evidence at protein level"
                         description="Valid when type is 'protein existence'. Protein existence is supported by the evidences at protein level (e.g. clear identification by mass spectrometry)."/>
                <restriction value="Evidence at transcript level"
                         description="Valid when type is 'protein existence'. Protein existence is supported by evidences at transcript level (e.g. Northern blot)."/>
                <restriction value="Inferred from homology"
                         description="Valid when type is 'protein existence'. Protein existence is inferred by homology (strong sequence similarity to known proteins in related species)."/>
                <restriction value="Predicted"
                         description="Valid when type is 'protein existence'. Protein existence is predicted"/>
                <restriction value="Uncertain"
                         description="Valid when type is 'protein existence'. Protein existence is uncertain (e.g. dubious sequences that could be the erroneous translation of a pseudogene)."/>
            </enumeration>
        </column>
        <column name="Confidence" type="@real32" required="false">
            <comment>0 &lt; confidence &lt;= 1.</comment>
        </column>
        <column name="DataSetWID" type="@wid" required="true">
            <comment>The data set this entity came from or is associated with</comment>
        </column>
        <!--Other table constraint: CONSTRAINT CK_Support CHECK (Confidence &gt; 0 AND Confidence &lt;= 1),-->
        <constraint>CONSTRAINT CK_Support CHECK (Confidence &gt; 0 AND Confidence &lt;= 1)</constraint>
        <primaryKey name="PK_Support" column="WID"/>

        <index name="SUPPORT_OTHERWID" columns="OTHERWID"/>
        <index name="SUPPORT_TYPE" columns="TYPE"/>
        <index name="SUPPORT_CONFIDENCE" columns="CONFIDENCE"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ChemicalAtom"
          type="arbitrary-relation">
        <comment>The tables ChemicalAtom and ChemicalBond define the chemical bond structure of a chemical,
            the
        </comment>
        <comment>charge on the constituent atoms, and encodes a two or three dimensional representation of the</comment>
        <comment>structure. It is implicit that ChemicalBonds are symmetric.</comment>
        <comment>Atoms that are chiral centers are have a non-zero StereoParity field. Values for this field
            are
        </comment>
        <comment>defined in the Enumeration table, and are taken from MDL Molfile format defined in</comment>
        <comment>http://www.mdli.com/downloads/ctfile/ctfile_subs.html . That specification is confusing
            because
        </comment>
        <comment>it appears to define two redundant ways (marking atoms and marking bonds) of defining stereo</comment>
        <comment>configurations. Our theory is that the redundancy exists to allow different drawings of
            stereo
        </comment>
        <comment>configurations, and that for simply capturing a configuration, setting the StereoParity field</comment>
        <comment>of an atom is sufficient. Also, setting the BondStereo field of a bond could simplify drawing</comment>
        <comment>of chemical structures, and can allow different drawings of the same stereo configurations,</comment>
        <comment>which can be desirable. But these two fields can be interpreted independently of one another.</comment>
        <comment>See the appendix of the MDL specification for details on interpreting stereo configurations.</comment>
        <comment>E.g. H2O could be encoded as:</comment>
        <comment>ChemicalAtom (wid, 1, 'H', 0)</comment>
        <comment>ChemicalAtom (wid, 2, 'O', 0)</comment>
        <comment>ChemicalAtom (wid, 3, 'H', 0)</comment>
        <comment>ChemicalBond (wid, 1, 2, 1)</comment>
        <comment>ChemicalBond (wid, 2, 3, 1)</comment>
        <column name="ChemicalWID" type="@wid" required="true">
            <comment>WID of the chemical</comment>
            <foreignKey name="FK_ChemicalAtom" toTable="Chemical" toColumn="WID"/>
        </column>
        <column name="AtomIndex" type="@int16" required="true">
            <comment>Order of the atoms within the structure,</comment>
            <comment>starting from 1</comment>
        </column>
        <column length="2" name="Atom" type="@varchar" required="true">
            <comment>Element symbol of the atom</comment>
        </column>
        <column name="Charge" type="@int16" required="true">
            <comment>Charge on the atom</comment>
        </column>
        <column name="X" type="@number" required="false">
            <comment>X display coordinates for a drawing of the chemical structure</comment>
        </column>
        <column name="Y" type="@number" required="false">
            <comment>Y display coordinates for a drawing of the chemical structure</comment>
        </column>
        <column name="Z" type="@number" required="false">
            <comment>Z display coordinates for a drawing of the chemical structure</comment>
        </column>
        <column name="StereoParity" type="@number" required="false">
            <comment>Defines parity of an atom that is a chiral center.</comment>
            <enumeration>
                <restriction value="0" description="Not stereo."/>
                <restriction value="1" description="Odd parity."/>
                <restriction value="2" description="Even parity."/>
                <restriction value="3" description="Either or unmarked stereo center."/>
            </enumeration>
        </column>

        <!--Other table constraint: CONSTRAINT UN_ChemicalAtom UNIQUE (ChemicalWID, AtomIndex) @using-index-->
        <constraint>CONSTRAINT UN_ChemicalAtom UNIQUE (ChemicalWID, AtomIndex)</constraint>
        <index name="CA_WID" columns="CHEMICALWID"/>
        <index name="CA_ATOMINDEX" columns="ATOMINDEX"/>
        <index name="CA_ATOM" columns="ATOM"/>
        <index name="CA_CHARGE" columns="CHARGE"/>
        <index name="CA_X" columns="X"/>
        <index name="CA_Y" columns="Y"/>
        <index name="CA_Z" columns="Z"/>
        <index name="CA_SPARITY" columns="STEREOPARITY"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ChemicalBond"
          type="arbitrary-relation">
        <comment>The tables ChemicalAtom and ChemicalBond define the chemical bond structure of a chemical, the charge
            on
        </comment>
        <comment>the constituent atoms, and encodes a two or three dimensional representation of the
            structure.
        </comment>
        <comment>It is implicit that ChemicalBonds are symmetric. BondTypes and BondStereo are defined in the</comment>
        <comment>Enumeration table, and are taken from MDL Molfile format defined in</comment>
        <comment>http://www.mdli.com/downloads/ctfile/ctfile_subs.html . That specification is confusing. See</comment>
        <comment>documentation of ChemicalAtom table for more information.</comment>
        <comment>E.g. H2O could be encoded as:</comment>
        <comment>ChemicalAtom (wid, 1, 'H', 0)</comment>
        <comment>ChemicalAtom (wid, 2, 'O', 0)</comment>
        <comment>ChemicalAtom (wid, 3, 'H', 0)</comment>
        <comment>ChemicalBond (wid, 1, 2, 1)</comment>
        <comment>ChemicalBond (wid, 2, 3, 1)</comment>
        <column name="ChemicalWID" type="@wid" required="true">
            <comment>WID of the chemical</comment>
            <foreignKey name="FK_ChemicalBond" toTable="Chemical" toColumn="WID"/>
        </column>
        <column name="Atom1Index" type="@int16" required="true">
            <comment>Index of first atom bonded (from ChemicalAtom)</comment>
        </column>
        <column name="Atom2Index" type="@int16" required="true">
            <comment>Index of second atom bonded</comment>
        </column>
        <column name="BondType" type="@int16" required="true">
            <comment>Type of bond enumeration, e.g., 1=Single, 2=Double, 3=Triple, 4=Aromatic.</comment>
            <enumeration>
                <restriction value="1" description="Single bond."/>
                <restriction value="2" description="Double bond."/>
                <restriction value="3" description="Triple bond."/>
                <restriction value="4" description="Aromatic bond."/>
                <restriction value="5" description="Single or double bond."/>
                <restriction value="6" description="Single or aromatic bond."/>
                <restriction value="7" description="Double or aromatic bond."/>
                <restriction value="8" description="Any bond."/>
            </enumeration>
        </column>
        <column name="BondStereo" type="@number" required="false">
            <comment>Stereo information about bond, e.g., 0 = Not stereo.</comment>
            <enumeration>
                <restriction value="0"
                         description="For single bonds, 0 = not stereo.   Four double bonds, 0 = use X,Y,Z coords to determine cis or trans."/>
                <restriction value="1" description="For single bonds, 1 = up."/>
                <restriction value="3"
                         description="For double bonds, 3 = cis or trans (either) (presumably meaning unspecified or a mixture)."/>
                <restriction value="4" description="For single bonds, 4 = either."/>
                <restriction value="6" description="For single bonds, 6 = down."/>
            </enumeration>
        </column>
        <!-- todo: rename fk 'column' to 'columns' and 'tocolumns'? -->
        <foreignKey name="FK_ChemicalBond2" column="ChemicalWID, Atom1Index" toTable="ChemicalAtom"
                  toColumn="ChemicalWID, AtomIndex"/>
        <foreignKey name="FK_ChemicalBond3" column="ChemicalWID, Atom2Index" toTable="ChemicalAtom"
                  toColumn="ChemicalWID, AtomIndex"/>

        <index name="CB_WID" columns="ChemicalWID"/>
        <index name="CB_INDEX1" columns="ATOM1INDEX"/>
        <index name="CB_INDEX2" columns="ATOM2INDEX"/>
        <index name="CB_BONDTYPE" columns="BONDTYPE"/>
        <index name="CB_BONDSTEREO" columns="BONDSTEREO"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="EnzReactionCofactor"
          type="arbitrary-relation">
        <comment>Cofactors are chemicals that are required for the enzyme to catalyze</comment>
        <comment>the reaction, but are left unchanged by the reaction. If multiple</comment>
        <comment>cofactors are listed for a reaction, this is interpreted as a disjunction.</comment>
        <comment>This table also encodes prosthetic groups.</comment>
        <column name="EnzymaticReactionWID" type="@wid" required="true">
            <comment>EnzymaticReaction.WID of the Enzymatic Reaction</comment>
            <foreignKey name="FK_EnzReactionCofactor1" toTable="EnzymaticReaction" toColumn="WID"/>
        </column>
        <column name="ChemicalWID" type="@wid" required="true">
            <comment>Chemical.WID of the compound</comment>
            <foreignKey name="FK_EnzReactionCofactor2" toTable="Chemical" toColumn="WID"/>
        </column>
        <column name="Prosthetic" type="@boolean" required="false">
            <comment>'T' if covalently/tightly bound to enzyme, else 'F'</comment>
        </column>

        <index name="ERCOFACTOR_ERWID" columns="ENZYMATICREACTIONWID"/>
        <index name="ERCOFACTOR_CHEMWID" columns="CHEMICALWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          name="EnzReactionAltCompound"
          type="arbitrary-relation">
        <comment>Identifies a compound that is either an alternate substrate or an alternate cofactor</comment>
        <comment>to a primary compound present in an enzymatic reaction.</comment>
        <column name="EnzymaticReactionWID" type="@wid" required="true">
            <comment>EnzymaticReaction.WID of the Enzymatic Reaction</comment>
            <foreignKey name="FK_ERAC1" toTable="EnzymaticReaction" toColumn="WID"/>
        </column>
        <column name="PrimaryWID" type="@wid" required="true">
            <comment>Chemical.WID of primary compound</comment>
            <foreignKey name="FK_ERAC2" toTable="Chemical" toColumn="WID"/>
        </column>
        <column name="AlternativeWID" type="@wid" required="true">
            <comment>Chemical.WID of alternate compound</comment>
            <foreignKey name="FK_ERAC3" toTable="Chemical" toColumn="WID"/>
        </column>
        <column name="Cofactor" type="@boolean" required="false">
            <comment>'T' if this alternative is a cofactor, 'F' if it is a substrate</comment>
        </column>

        <index name="ERALT_ERWID" columns="ENZYMATICREACTIONWID"/>
        <index name="ERALT_PRIMWID" columns="PRIMARYWID"/>
        <index name="ERALT_ALTWID" columns="ALTERNATIVEWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          name="EnzReactionInhibitorActivator"
          type="arbitrary-relation">
        <comment>Associates an enzymatic reaction to the compounds that act as</comment>
        <comment>inhibitors and activators for the reaction.</comment>
        <comment>The mechanism of action is encoded in the Mechanism column.</comment>
        <column name="EnzymaticReactionWID" type="@wid" required="true">
            <comment>EnzymaticReaction.WID of the Enzymatic Reaction</comment>
            <foreignKey name="FK_EnzReactionIA1" toTable="EnzymaticReaction" toColumn="WID"/>
        </column>
        <column name="CompoundWID" type="@wid" required="true">
            <comment>Chemical.WID or Protein.WID of the compound</comment>
            <sdKey name="FK_EnzReactionIA2" toTable="Chemical" toColumn="WID"/>
            <sdKey name="FK_EnzReactionIA3" toTable="Protein" toColumn="WID"/>
        </column>
        <column name="InhibitOrActivate" type="@char" required="false">
            <comment>Specifies whether the compound is an inhibitor or an activator.</comment>
            <enumeration>
                <restriction value="I" description="Specifies a compound that inhibits an enzyme."/>
                <restriction value="A" description="Specifies a compound that activates an enzyme."/>
            </enumeration>
        </column>
        <column name="Mechanism" type="@char" required="false">
            <comment>Mechanism of inhibition or activation.</comment>
            <enumeration>
                <restriction value="A"
                         description="The mechanism of inhibition or activation is allosteric."/>
                <restriction value="I"
                         description="The mechanism of inhibition or activation is irreversible."/>
                <restriction value="C"
                         description="The mechanism of inhibition or activation is competitive."/>
                <restriction value="N"
                         description="The mechanism of inhibition or activation is neither allosteric nor competitive."/>
                <restriction value="O"
                         description="The mechanism of inhibition or activation is known but not in this controlled vocabulary."/>
                <restriction value="U" description="The mechanism of inhibition or activation is unknown."/>
            </enumeration>
        </column>
        <column name="PhysioRelevant" type="@boolean" required="false">
            <comment>'T' if physiologically relevant, else 'F'</comment>
        </column>

        <index name="ERIA_ERWID" columns="ENZYMATICREACTIONWID"/>
        <index name="ERIA_COMPOUNDWID" columns="CompoundWID"/>
        <index name="ERIA_MECH" columns="Mechanism"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Location"
          type="arbitrary-relation">
        <comment>Defines one or more locations of a protein.</comment>
        <column name="ProteinWID" type="@wid" required="true">
            <comment>WID of the protein</comment>
            <foreignKey name="FK_Location" toTable="Protein" toColumn="WID"/>
        </column>
        <column name="Location" type="@varchar" length="100" required="true">
            <comment>Subcellular location of a protein.</comment>
        </column>
        <index name="LOCATION_ProteinWID" columns="ProteinWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="PathwayLink"
          type="arbitrary-relation">
        <comment>This table allows us to state that two pathways are neighbors in</comment>
        <comment>a biologically significant sense, because they share a substrate</comment>
        <comment>in common. This link between two pathways is represented by the WIDs of the</comment>
        <comment>interacting pathways, and of the chemical compound that they share.</comment>
        <column name="Pathway1WID" type="@wid" required="true">
            <comment>WID of one of the linked pathways</comment>
            <foreignKey name="FK_PathwayLink1" toTable="Pathway" toColumn="WID"/>
        </column>
        <column name="Pathway2WID" type="@wid" required="true">
            <comment>WID of the other linked pathways</comment>
            <foreignKey name="FK_PathwayLink2" toTable="Pathway" toColumn="WID"/>
        </column>
        <column name="ChemicalWID" type="@wid" required="true">
            <comment>WID of the linking chemical</comment>
            <foreignKey name="FK_PathwayLink3" toTable="Chemical" toColumn="WID"/>
        </column>

        <index name="PATHLINK_P1WID_P2WID_CHEMWID"
             columns="PATHWAY1WID, PATHWAY2WID, CHEMICALWID"/>
        <index name="PATHLINK_P2WID" columns="PATHWAY2WID"/>
        <index name="PATHLINK_CHEMWID" columns="CHEMICALWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="PathwayReaction"
          type="arbitrary-relation">
        <comment>A pathway is defined as a set of reaction pairs or a collection of molecular interactions between
            molecules.
            This table stores not only the relationships between pathway and reactions, but also relationships between
            molecular interaction network/pathway and interactions.
            For each pair of reactions R1 and R2, R1 directly precedes R2 in the pathway.
            Some reactions in a pathway may be considered hypothetical, probably because the presence of the enzyme
            has not been demonstrated.
            To specify an interaction is a part of a molecular interaction network/pathway, use R2 to represents
            a molecular interaction, leave R1 blank.
        </comment>
        <column name="PathwayWID" type="@wid" required="true">
            <comment>WID of a pathway</comment>
            <foreignKey name="FK_PathwayReaction1" toTable="Pathway" toColumn="WID"/>
        </column>
        <column name="ReactionWID" type="@wid" required="true">
            <comment>WID of a reaction, R2, in the pathway</comment>
        </column>
        <column name="PriorReactionWID" type="@wid" required="false">
            <comment>WID, R1, of a predecessor reaction of R2</comment>
            <foreignKey name="FK_PathwayReaction3" toTable="Reaction" toColumn="WID"/>
        </column>
        <column name="Hypothetical" type="@boolean" required="true">
            <comment>'F' if R2 proven to exist, 'T' otherwise.</comment>
        </column>

        <index name="PR_PATHWID_REACTIONWID" columns="PathwayWID, ReactionWID" initial="true"/>
        <index name="PR_REACTIONWID" columns="ReactionWID"/>
        <index name="PR_PRIORWID" columns="PriorReactionWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Product"
          type="arbitrary-relation">
        <comment>Associates a reaction with a chemical product of that reaction.</comment>
        <column name="ReactionWID" type="@wid" required="true">
            <comment>Warehouse identifier of the reaction that this reactant is part of.</comment>
            <foreignKey name="FK_Product" toTable="Reaction" toColumn="WID"/>
        </column>
        <column name="OtherWID" type="@wid" required="true">
            <comment>Reference to the chemical or protein that is the reactant.</comment>
            <sdKey name="FK_Product1" toTable="Chemical" toColumn="WID"/>
            <sdKey name="FK_Product2" toTable="Protein" toColumn="WID"/>
        </column>
        <column name="Coefficient" type="@int16" required="true">
            <comment>The number of molecules of this reactant used in the reaction.</comment>
        </column>

        <index name="PRODUCT_REACTWID" columns="REACTIONWID"/>
        <index name="PRODUCT_OTHERWID" columns="OTHERWID"/>
        <index name="PRODUCT_COEFFICIENT" columns="COEFFICIENT"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Reactant"
          type="arbitrary-relation">
        <comment>Associates a reaction with a chemical that is consumed by the reaction.</comment>
        <column name="ReactionWID" type="@wid" required="true">
            <comment>Warehouse identifier of the reaction that this reactant is part of</comment>
            <foreignKey name="FK_Reactant" toTable="Reaction" toColumn="WID"/>
        </column>
        <column name="OtherWID" type="@wid" required="true">
            <comment>Reference to the chemical or protein that is the reactant.</comment>
            <sdKey name="FK_Reactant1" toTable="Chemical" toColumn="WID"/>
            <sdKey name="FK_Reactant2" toTable="Protein" toColumn="WID"/>
        </column>
        <column name="Coefficient" type="@int16" required="true">
            <comment>The amount of this reactant used in the reation</comment>
        </column>

        <index name="REACTANT_WID" columns="ReactionWID"/>
        <index name="REACTANT_OTHERWID" columns="OTHERWID"/>
        <index name="REACTANT_COEFFICIENT" columns="Coefficient"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          name="InteractionParticipant"
          type="arbitrary-relation">
        <comment>Associates an interaction with the entity that participates in the interaction.</comment>
        <column name="InteractionWID" type="@wid" required="true">
            <comment>Reference to the interaction that the entity is involved in.</comment>
            <foreignKey name="FK_InteractionParticipant1" toTable="Interaction" toColumn="WID"/>
        </column>
        <column name="OtherWID" type="@wid" required="true">
            <comment>Reference to the protein, nucletic acid, chemical that involves in the interaction.</comment>
            <sdKey name="FK_IP_Chemical" toTable="Chemical" toColumn="WID"/>
            <sdKey name="FK_IP_NucleicAcid" toTable="NucleicAcid" toColumn="WID"/>
            <sdKey name="FK_IP_Protein" toTable="Protein" toColumn="WID"/>
        </column>
        <column name="Coefficient" type="@int16" required="false">
            <comment>The amount of this interaction participant involved in the interaction, if available.</comment>
        </column>
        <index name="PR_INTERACTIONWID_OTHERWID" columns="InteractionWID, OtherWID"
             initial="true"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="SequenceMatch"
          type="arbitrary-relation">
        <comment>Records a result of a computation of the degree of match between two sequences.</comment>
        <comment>Sequences are either both Proteins or both Subsequences.</comment>
        <column name="QueryWID" type="@wid" required="true">
            <comment>WID of the Protein or Subsequence being matched</comment>
            <sdKey name="FK_SequenceMatch1" toTable="Protein" toColumn="WID"/>
            <sdKey name="FK_SequenceMatch3" toTable="Subsequence" toColumn="WID"/>
        </column>
        <column name="MatchWID" type="@wid" required="true">
            <comment>WID of the Protein or Subsequence matched against QueryWID</comment>
            <sdKey name="FK_SequenceMatch2" toTable="Protein" toColumn="WID"/>
            <sdKey name="FK_SequenceMatch4" toTable="Subsequence" toColumn="WID"/>
        </column>
        <column name="ComputationWID" type="@wid" required="true">
            <comment>WID of the Computation that describes the procedure used to determine the match</comment>
            <foreignKey name="FK_SequenceMatch" toTable="Computation" toColumn="WID"/>
        </column>
        <column name="EValue" type="@real64" required="false">
            <comment>Roughly, the log-probability of this match occurring; see
                http://www.ncbi.nlm.nih.gov/BLAST/tutorial/Altschul-1.html
            </comment>
        </column>
        <column name="PValue" type="@real64" required="false">
            <comment>1 - e^(-E), where E is EValue</comment>
        </column>
        <column name="PercentIdentical" type="@real32" required="false">
            <comment>Percentage of residues in the two molecules that are identical</comment>
        </column>
        <column name="PercentSimilar" type="@real32" required="false">
            <comment>Percentage of residues in the two molecules that are similar</comment>
        </column>
        <column name="Rank" type="@int16" required="false">
            <comment>Ordinal rank of Query molecule with other matches (1 is best)</comment>
        </column>
        <column name="Length" type="@int32" required="false">
            <comment>The length of the match between the two molecules</comment>
        </column>
        <column name="QueryStart" type="@int32" required="false">
            <comment>Start of the matching region in Query</comment>
        </column>
        <column name="QueryEnd" type="@int32" required="false">
            <comment>End of the matching region in Query</comment>
        </column>
        <column name="MatchStart" type="@int32" required="false">
            <comment>Start of the matching region in Match</comment>
        </column>
        <column name="MatchEnd" type="@int32" required="false">
            <comment>End of the matching region in Match</comment>
        </column>

        <index name="SM_QUERYWID" columns="QueryWID"/>
        <index name="SM_MATCHWID" columns="MatchWID"/>
        <index name="SM_COMPUTATIONWID" columns="ComputationWID"/>
        <index name="SM_EVALUE" columns="EValue"/>
        <index name="SM_PVALUE" columns="PValue"/>
        <index name="SM_PIDENTICAL" columns="PercentIdentical"/>
        <index name="SM_PSIMILAR" columns="PercentSimilar"/>
        <index name="SM_RANK" columns="Rank"/>
        <index name="SM_LENGTH" columns="Length"/>
        <index name="SM_QSTART_QEND" columns="QueryStart, QueryEnd"/>
        <index name="SM_QEND" columns="QueryEnd"/>
        <index name="SM_MSTART_MEND" columns="MatchStart,MatchEnd"/>
        <index name="SM_MEND" columns="MatchEnd"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Subunit"
          type="arbitrary-relation">
        <comment>Specifies that Subunit is a subunit of Complex. These subunit relationships could be</comment>
        <comment>described in multiple levels. For example, this table can be used to describe multimeric
            proteins,
        </comment>
        <comment>or ribosomes.</comment>
        <column name="ComplexWID" type="@wid" required="true">
            <comment>Reference to the parent Protein</comment>
            <foreignKey name="FK_Subunit1" toTable="Protein" toColumn="WID"/>
        </column>
        <column name="SubunitWID" type="@wid" required="true">
            <comment>Reference to the child protein inside the parent Protein</comment>
            <foreignKey name="FK_Subunit2" toTable="Protein" toColumn="WID"/>
        </column>
        <column name="Coefficient" type="@int16" required="false">
            <comment>Number of copies of the subunit within the complex</comment>
        </column>

        <index name="SUBUNIT_PROW1ID" columns="COMPLEXWID"/>
        <index name="SUBUNIT_PROW2ID" columns="SubunitWID"/>
        <index name="SUBUNIT_COEF" columns="COEFFICIENT"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="SuperPathway"
          type="arbitrary-relation">
        <comment>Pathways may be arranged in a hierarchy, i.e. containment within one or</comment>
        <comment>more superpathways, as an abstraction mechanism.</comment>
        <column name="SubPathwayWID" type="@wid" required="true">
            <comment>WID of sub-pathway</comment>
            <foreignKey name="FK_SuperPathway1" toTable="Pathway" toColumn="WID"/>
        </column>
        <column name="SuperPathwayWID" type="@wid" required="true">
            <comment>WID of super-pathway</comment>
            <foreignKey name="FK_SuperPathway2" toTable="Pathway" toColumn="WID"/>
        </column>

        <index name="SUPER_SUBWID_SUPERWID" columns="SUBPATHWAYWID,SUPERPATHWAYWID"/>
        <index name="SUPER_SUPERWID_SUBWID" columns="SUPERPATHWAYWID,SUBPATHWAYWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="TermRelationship"
          type="arbitrary-relation">
        <comment>Defines a relationship between two terms.</comment>
        <!-- @- Added for 3.5 -->
        <column name="TermWID" type="@wid" required="true">
            <comment>Reference to a term.</comment>
            <foreignKey name="FK_TermRelationship1" toTable="Term" toColumn="WID"/>
        </column>
        <column name="RelatedTermWID" type="@wid" required="true">
            <comment>The WID of the term the current term is related to.</comment>
            <foreignKey name="FK_TermRelationship2" toTable="Term" toColumn="WID"/>
        </column>
        <column length="10" name="Relationship" type="@varchar" required="true">
            <comment>Enumeration.</comment>
        </column>

        <index name="TR_TermRelationship" columns="TermWID,RelatedTermWID"/>
        <index name="RT_TermRelationship" columns="RelatedTermWID,TermWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="RelatedTerm"
          type="object-descriptor">
        <comment>Defines a relationship between a term and another object.
	         For relationships between terms, TermRelationship is generally used.
        </comment>
        <column name="TermWID" type="@wid" required="true">
            <comment>Reference to a term.</comment>
            <foreignKey name="FK_RelatedTerm1" toTable="Term" toColumn="WID"/>
        </column>
        <column name="OtherWID" type="@wid" required="true">
            <comment>The WID of the object associated with this term.</comment>
            <sdKey name="FK_RT_Chemical" toTable="Chemical" toColumn="WID"/>
            <sdKey name="FK_RT_Reaction" toTable="Reaction" toColumn="WID"/>
            <sdKey name="FK_RT_Protein" toTable="Protein" toColumn="WID"/>
            <sdKey name="FK_RT_Feature" toTable="Feature" toColumn="WID"/>
            <sdKey name="FK_RT_Function" toTable="Function" toColumn="WID"/>
            <sdKey name="FK_RT_EnzymaticReaction" toTable="EnzymaticReaction" toColumn="WID"/>
            <sdKey name="FK_RT_GeneticCode" toTable="GeneticCode" toColumn="WID"/>
            <sdKey name="FK_RT_Division" toTable="Division" toColumn="WID"/>
            <sdKey name="FK_RT_Taxon" toTable="Taxon" toColumn="WID"/>
            <sdKey name="FK_RT_BioSource" toTable="BioSource" toColumn="WID"/>
            <sdKey name="FK_RT_BioSubtype" toTable="BioSubtype" toColumn="WID"/>
            <sdKey name="FK_RT_NucleicAcid" toTable="NucleicAcid" toColumn="WID"/>
            <sdKey name="FK_RT_Subsequence" toTable="Subsequence" toColumn="WID"/>
            <sdKey name="FK_RT_Gene" toTable="Gene" toColumn="WID"/>
            <sdKey name="FK_RT_Pathway" toTable="Pathway" toColumn="WID"/>
            <sdKey name="FK_RT_Term" toTable="Term" toColumn="WID"/>
            <sdKey name="FK_RT_Computation" toTable="Computation" toColumn="WID"/>
            <sdKey name="FK_RT_Citation" toTable="Citation" toColumn="WID"/>
            <sdKey name="FK_RT_PointOfContact" toTable="Contact" toColumn="WID"/>
            <sdKey name="FK_RT_Archive" toTable="Archive" toColumn="WID"/>
            <sdKey name="FK_RT_Experiment" toTable="Experiment" toColumn="WID"/>
            <sdKey name="FK_RT_ExperimentData" toTable="ExperimentData" toColumn="WID"/>
            <sdKey name="FK_RT_Support" toTable="Support" toColumn="WID"/>
        </column>
        <column length="50" name="Relationship" type="@varchar" required="false">
            <comment>Enumeration.</comment>
            <enumeration>
                 <restriction value="keyword"
                         description="The term is a keyword that characterizes the object."/>
                 <restriction value="superclass"
                         description="The term names a class, and the object is an instance or a subclass of that class."/>
            </enumeration>
       </column>

        <index name="TO_RelatedTerm" columns="TermWID,OtherWID"/>
        <index name="OT_RelatedTerm" columns="OtherWID,TermWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="CitationWIDOtherWID"
          type="object-descriptor">
        <comment>Link from citations to the entities described in that citation. Enables one citation to</comment>
        <comment>provide support for multiple entries in the warehouse.</comment>
        <column name="OtherWID" type="@wid" required="true">
            <comment>WID of the object associated with this citation</comment>
            <sdKey name="FK_CWOW_Chemical" toTable="Chemical" toColumn="WID"/>
            <sdKey name="FK_CWOW_Reaction" toTable="Reaction" toColumn="WID"/>
            <sdKey name="FK_CWOW_Protein" toTable="Protein" toColumn="WID"/>
            <sdKey name="FK_CWOW_Feature" toTable="Feature" toColumn="WID"/>
            <sdKey name="FK_CWOW_Function" toTable="Function" toColumn="WID"/>
            <sdKey name="FK_CWOW_EnzymaticReaction" toTable="EnzymaticReaction" toColumn="WID"/>
            <sdKey name="FK_CWOW_GeneticCode" toTable="GeneticCode" toColumn="WID"/>
            <sdKey name="FK_CWOW_Division" toTable="Division" toColumn="WID"/>
            <sdKey name="FK_CWOW_Taxon" toTable="Taxon" toColumn="WID"/>
            <sdKey name="FK_CWOW_BioSource" toTable="BioSource" toColumn="WID"/>
            <sdKey name="FK_CWOW_BioSubtype" toTable="BioSubtype" toColumn="WID"/>
            <sdKey name="FK_CWOW_NucleicAcid" toTable="NucleicAcid" toColumn="WID"/>
            <sdKey name="FK_CWOW_Subsequence" toTable="Subsequence" toColumn="WID"/>
            <sdKey name="FK_CWOW_Gene" toTable="Gene" toColumn="WID"/>
            <sdKey name="FK_CWOW_Pathway" toTable="Pathway" toColumn="WID"/>
            <sdKey name="FK_CWOW_Term" toTable="Term" toColumn="WID"/>
            <sdKey name="FK_CWOW_Computation" toTable="Computation" toColumn="WID"/>
            <sdKey name="FK_CWOW_Citation" toTable="Citation" toColumn="WID"/>
            <sdKey name="FK_CWOW_PointOfContact" toTable="Contact" toColumn="WID"/>
            <sdKey name="FK_CWOW_Archive" toTable="Archive" toColumn="WID"/>
            <sdKey name="FK_CWOW_Experiment" toTable="Experiment" toColumn="WID"/>
            <sdKey name="FK_CWOW_ExperimentData" toTable="ExperimentData" toColumn="WID"/>
            <sdKey name="FK_CWOW_Support" toTable="Support" toColumn="WID"/>
        </column>
        <column name="CitationWID" type="@wid" required="true">
            <comment>WID of the Citation</comment>
            <foreignKey name="FK_CitationWIDOtherWID" toTable="Citation" toColumn="WID"/>
        </column>

        <index name="CO_OTHERWID_CITATIONWID" columns="OtherWID,CitationWID"/>
        <index name="CO_CITATIONWID_OTHERWID" columns="CitationWID,OtherWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="CommentTable"
          type="object-descriptor">
        <comment>This table allows for arbitrary association of (possibly lengthy) comments</comment>
        <comment>with any object in the warehouse.</comment>
        <comment>See the Description table for a more specific type of comment.</comment>
        <column name="OtherWID" type="@wid" required="true">
            <comment>Warehouse id of an object</comment>
            <sdKey name="FK_COMMENT_Chemical" toTable="Chemical" toColumn="WID"/>
            <sdKey name="FK_COMMENT_Reaction" toTable="Reaction" toColumn="WID"/>
            <sdKey name="FK_COMMENT_Protein" toTable="Protein" toColumn="WID"/>
            <sdKey name="FK_COMMENT_Feature" toTable="Feature" toColumn="WID"/>
            <sdKey name="FK_COMMENT_Function" toTable="Function" toColumn="WID"/>
            <sdKey name="FK_COMMENT_EnzymaticReaction" toTable="EnzymaticReaction" toColumn="WID"/>
            <sdKey name="FK_COMMENT_GeneticCode" toTable="GeneticCode" toColumn="WID"/>
            <sdKey name="FK_COMMENT_Division" toTable="Division" toColumn="WID"/>
            <sdKey name="FK_COMMENT_Taxon" toTable="Taxon" toColumn="WID"/>
            <sdKey name="FK_COMMENT_BioSource" toTable="BioSource" toColumn="WID"/>
            <sdKey name="FK_COMMENT_BioSubtype" toTable="BioSubtype" toColumn="WID"/>
            <sdKey name="FK_COMMENT_NucleicAcid" toTable="NucleicAcid" toColumn="WID"/>
            <sdKey name="FK_COMMENT_Subsequence" toTable="Subsequence" toColumn="WID"/>
            <sdKey name="FK_COMMENT_Gene" toTable="Gene" toColumn="WID"/>
            <sdKey name="FK_COMMENT_Pathway" toTable="Pathway" toColumn="WID"/>
            <sdKey name="FK_COMMENT_Term" toTable="Term" toColumn="WID"/>
            <sdKey name="FK_COMMENT_Computation" toTable="Computation" toColumn="WID"/>
            <sdKey name="FK_COMMENT_Citation" toTable="Citation" toColumn="WID"/>
            <sdKey name="FK_COMMENT_PointOfContact" toTable="Contact" toColumn="WID"/>
            <sdKey name="FK_COMMENT_Archive" toTable="Archive" toColumn="WID"/>
            <sdKey name="FK_COMMENT_Experiment" toTable="Experiment" toColumn="WID"/>
            <sdKey name="FK_COMMENT_ExperimentData" toTable="ExperimentData" toColumn="WID"/>
            <sdKey name="FK_COMMENT_Support" toTable="Support" toColumn="WID"/>
        </column>
        <column name="Comm" type="@string32" required="false">
            <comment>Comment about the object</comment>
        </column>

        <index name="COMMENT_OTHERWID" columns=" OTHERWID "/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="CrossReference"
          type="object-descriptor">
        <comment>This table is used to define (i) links between databases; (ii) links between objects within the same
            dataset.
        </comment>
        <comment>For case (i):</comment>
        <comment>A row in this table defines a link between an object in the warehouse</comment>
        <comment>(OtherWID) and an entry in another dataset that may or may not be loaded</comment>
        <comment>into the warehouse. If it is not loaded, DatabaseName</comment>
        <comment>(and XID, Type, and Version if available) will be nonnull.</comment>
        <comment>For case (ii):</comment>
        <comment>A row in this table defines a link between an object in the warehouse</comment>
        <comment>(OtherWID) and an object in the same dataset for which the dataset specifies</comment>
        <comment>an association between them not otherwise represented within the warehouse.</comment>
        <comment>Such associations are currently (5/10/04) made between a gene described in one sequence (the root
            Bioseq) and
        </comment>
        <comment>another GenBank entry (the reference Bisoseq) which is being referenced and describes the gene
            independently
        </comment>
        <comment>of the first Bioseq. In such a case, CrossReference.OtherWID=Gene.WID.</comment>
        <comment>In either case: if CrossWID is nonnull, the object linked to is</comment>
        <comment>loaded into the warehouse; if it is null, it may or may not be loaded.</comment>
        <comment>Note that if a loader does not know whether a referenced entry will be loaded,</comment>
        <comment>it is free to fill in CrossWID at a later time.</comment>
        <comment>Restrictions: CrossReference only stores keys that point to uniquely identified objects in the
            referenced database.
        </comment>
        <!-- @- 3.0 Changed DatasetName column to DatabaseName -->
        <!-- @- 3.0 Added Type, Version -->
        <!-- @- 3.0 Replaced DatasetWID with CrossWID, made XID nullable -->
        <column name="OtherWID" type="@wid" required="true">
            <comment>Warehouse object we are linking FROM</comment>
            <sdKey name="FK_XREF_OTHER_Chemical" toTable="Chemical" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_Reaction" toTable="Reaction" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_Protein" toTable="Protein" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_Feature" toTable="Feature" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_Function" toTable="Function" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_EnzymaticReaction" toTable="EnzymaticReaction"
                toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_GeneticCode" toTable="GeneticCode" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_Division" toTable="Division" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_Taxon" toTable="Taxon" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_BioSource" toTable="BioSource" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_BioSubtype" toTable="BioSubtype" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_NucleicAcid" toTable="NucleicAcid" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_Subsequence" toTable="Subsequence" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_Gene" toTable="Gene" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_Pathway" toTable="Pathway" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_Term" toTable="Term" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_Computation" toTable="Computation" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_Citation" toTable="Citation" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_PointOfContact" toTable="Contact" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_Archive" toTable="Archive" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_Experiment" toTable="Experiment" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_ExperimentData" toTable="ExperimentData" toColumn="WID"/>
            <sdKey name="FK_XREF_OTHER_Support" toTable="Support" toColumn="WID"/>
        </column>
        <column name="CrossWID" type="@wid" required="false">
            <comment>Nonnull when the object we are linking TO resides in the warehouse</comment>
            <sdKey name="FK_XREF_CROSS_Chemical" toTable="Chemical" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_Reaction" toTable="Reaction" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_Protein" toTable="Protein" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_Feature" toTable="Feature" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_Function" toTable="Function" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_EnzymaticReaction" toTable="EnzymaticReaction"
                toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_GeneticCode" toTable="GeneticCode" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_Division" toTable="Division" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_Taxon" toTable="Taxon" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_BioSource" toTable="BioSource" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_BioSubtype" toTable="BioSubtype" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_NucleicAcid" toTable="NucleicAcid" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_Subsequence" toTable="Subsequence" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_Gene" toTable="Gene" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_Pathway" toTable="Pathway" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_Term" toTable="Term" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_Computation" toTable="Computation" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_Citation" toTable="Citation" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_PointOfContact" toTable="Contact" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_Archive" toTable="Archive" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_Experiment" toTable="Experiment" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_ExperimentData" toTable="ExperimentData" toColumn="WID"/>
            <sdKey name="FK_XREF_CROSS_Support" toTable="Support" toColumn="WID"/>
        </column>
        <column length="50" name="XID" type="@varchar" required="false">
            <comment>Unique id used in referenced database of object we are linking TO.</comment>
        </column>
        <column length="20" name="Type" type="@varchar" required="false">
            <comment>Enumeration: Describes the types of identifiers stored in
            XID, namely 'GUID' or 'Accession': GUIDs: ID's of type GUID
            (Globally Unique ID) are associated with database objects with one
            or more invariant aspects, such as a specific DNA sequence. If the
            invariant aspect of the database object is to change, a new GUID is
            assigned, and the old GUID is retired. Example: NCBI GI numbers.
            Accession: Database objects associated with IDs of type 'Accession'
            (for Accession Numbers) can change, but the Accession Number remains
            the same. Accession Numbers are often associated with a Version
            number to reflect such changes. Example: Swiss-Prot's Primary
            Accession Number See Enumeration table for further
            details.</comment>
            <enumeration>
                <restriction value="Accession"
                         description="Type of XID is an accession number (not guaranteed to be unique across datasets)"/>
                <restriction value="GUID"
                         description="Type of XID is a global unique identifier (guaranteed to be unique across datasets for a given database provider)"/>
            </enumeration>
        </column>
        <column length="10" name="Version" type="@varchar" required="false">
            <comment>Further qualifies the values of identifiers stored in XID by
            storing the version number of the identifier for datasets that
            support multiple instances of the same object. For example,
            NCBI Accession Numbers are associated with a version number,
            which are REQUIRED for complete identification (w/o such,
            different records can have the same accession number, albeit
            with different version numbers)</comment>
        </column>
        <column length="50" name="Relationship" type="@varchar" required="false">
            <comment>A short description of the relationship between the objects identified by OtherWID and CrossWID
            </comment>
        </column>
        <column length="255" name="DatabaseName" type="@varchar" required="false">
            <comment>The object we are linking TO resides in an external database of this name</comment>
        </column>

        <index name="CROSS_OTHERWID" columns="OTHERWID"/>
        <index name="CROSS_XID" columns="XID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Description"
          type="object-descriptor">
        <comment>This table contains a textual description of a warehouse object.</comment>
        <comment>An object will not have more than one description, and the description text</comment>
        <comment>will typically define or otherwise characterize the object.</comment>
        <comment>See the CommentTable table for a more general type of comment.</comment>
        <!-- @string10 chosen for length so that Comm can be indexed.-->
        <column name="OtherWID" type="@wid" required="true">
            <comment>Warehouse id of an object</comment>
            <sdKey name="FK_DESCRIP_Chemical" toTable="Chemical" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_Reaction" toTable="Reaction" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_Protein" toTable="Protein" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_Feature" toTable="Feature" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_Function" toTable="Function" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_EnzymaticReaction" toTable="EnzymaticReaction" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_GeneticCode" toTable="GeneticCode" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_Division" toTable="Division" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_Taxon" toTable="Taxon" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_BioSource" toTable="BioSource" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_BioSubtype" toTable="BioSubtype" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_NucleicAcid" toTable="NucleicAcid" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_Subsequence" toTable="Subsequence" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_Gene" toTable="Gene" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_Pathway" toTable="Pathway" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_Term" toTable="Term" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_Computation" toTable="Computation" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_Citation" toTable="Citation" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_PointOfContact" toTable="Contact" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_Archive" toTable="Archive" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_Experiment" toTable="Experiment" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_ExperimentData" toTable="ExperimentData" toColumn="WID"/>
            <sdKey name="FK_DESCRIP_Support" toTable="Support" toColumn="WID"/>
        </column>
        <column length="30" name="TableName" type="@varchar" required="true">
            <comment>Name of Warehouse table containing OtherWID</comment>
        </column>
        <column name="Comm" type="@string10" required="false">
            <comment>Description of the object</comment>
        </column>

        <index name="Description_OTHERWID" columns=" OTHERWID "/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="DBID"
          type="object-descriptor">
        <comment>Associates a warehouse entity with the identifier(s) used for that entity in its</comment>
        <comment>source dataset. For example, if a protein is loaded from SwissProt into the</comment>
        <comment>warehouse, this table can be used to store the SwissProt accession numbers for</comment>
        <comment>the protein.</comment>
        <comment>Restrictions: DBID only stores keys that point to uniquely identified objects in the referenced
            database.
        </comment>
        <!-- @- 3.0 Added Type, Version -->
        <column name="OtherWID" type="@wid" required="true">
            <comment>Reference to the warehouse entity uniquely identified by this entry</comment>
            <sdKey name="FK_DBID_Chemical" toTable="Chemical" toColumn="WID"/>
            <sdKey name="FK_DBID_Reaction" toTable="Reaction" toColumn="WID"/>
            <sdKey name="FK_DBID_Protein" toTable="Protein" toColumn="WID"/>
            <sdKey name="FK_DBID_Feature" toTable="Feature" toColumn="WID"/>
            <sdKey name="FK_DBID_Function" toTable="Function" toColumn="WID"/>
            <sdKey name="FK_DBID_EnzymaticReaction" toTable="EnzymaticReaction" toColumn="WID"/>
            <sdKey name="FK_DBID_GeneticCode" toTable="GeneticCode" toColumn="WID"/>
            <sdKey name="FK_DBID_Division" toTable="Division" toColumn="WID"/>
            <sdKey name="FK_DBID_Taxon" toTable="Taxon" toColumn="WID"/>
            <sdKey name="FK_DBID_BioSource" toTable="BioSource" toColumn="WID"/>
            <sdKey name="FK_DBID_BioSubtype" toTable="BioSubtype" toColumn="WID"/>
            <sdKey name="FK_DBID_NucleicAcid" toTable="NucleicAcid" toColumn="WID"/>
            <sdKey name="FK_DBID_Subsequence" toTable="Subsequence" toColumn="WID"/>
            <sdKey name="FK_DBID_Gene" toTable="Gene" toColumn="WID"/>
            <sdKey name="FK_DBID_Pathway" toTable="Pathway" toColumn="WID"/>
            <sdKey name="FK_DBID_Term" toTable="Term" toColumn="WID"/>
            <sdKey name="FK_DBID_Computation" toTable="Computation" toColumn="WID"/>
            <sdKey name="FK_DBID_Citation" toTable="Citation" toColumn="WID"/>
            <sdKey name="FK_DBID_PointOfContact" toTable="Contact" toColumn="WID"/>
            <sdKey name="FK_DBID_Archive" toTable="Archive" toColumn="WID"/>
            <sdKey name="FK_DBID_Experiment" toTable="Experiment" toColumn="WID"/>
            <sdKey name="FK_DBID_ExperimentData" toTable="ExperimentData" toColumn="WID"/>
            <sdKey name="FK_DBID_Support" toTable="Support" toColumn="WID"/>
            <sdKey name="FK_DBID_Spot" toTable="Spot" toColumn="WID"/>
        </column>
        <column length="150" name="XID" type="@varchar" required="true">
            <comment>Unique identifier used in dataset of entity</comment>
        </column>
        <column length="20" name="Type" type="@varchar" required="false">
            <comment>Enumeration: Describes the types of identifiers stored in
            XID, namely 'GUID' or 'Accession': GUIDs: ID's of type GUID
            (Globally Unique ID) are associated with database objects with one
            or more invariant aspects, such as a specific DNA sequence. If the
            invariant aspect of the database object is to change, a new GUID is
            assigned, and the old GUID is retired. Example: NCBI GI numbers.
            Accession: Database objects associated with IDs of type 'Accession'
            (for Accession Numbers) can change, but the Accession Number remains
            the same. Accession Numbers are often associated with a Version
            number to reflect such changes. Example: Swiss-Prot's Primary
            Accession Number See Enumeration table for further
            details.</comment>
            <enumeration>
                <restriction value="Accession"
                         description="Type of XID is an accession number (not guaranteed to be unique across datasets)"/>
                <restriction value="GUID"
                         description="Type of XID is a global unique identifier (guaranteed to be unique across datasets for a given database provider)"/>
            </enumeration>
        </column>
        <column length="10" name="Version" type="@varchar" required="false">
            <comment>Further qualifies the values of identifiers stored in XID by
            storing the version number of the identifier for datasets that
            support multiple instances of the same object. For example,
            NCBI Accession Numbers are associated with a version number,
            which are REQUIRED for complete identification (w/o such,
            different records can have the same accession number, albeit
            with different version numbers)</comment>
        </column>

        <index name="DBID_XID_OTHERWID" columns="XID, OTHERWID" initial="true"/>
        <index name="DBID_OTHERWID" columns="OTHERWID" initial="true"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="SynonymTable"
          type="object-descriptor">
        <comment>Defines one or more synonyms for a warehouse entity such as a protein, a</comment>
        <comment>gene, a small molecule, or a pathway.</comment>
        <column name="OtherWID" type="@wid" required="true">
            <comment>Warehouse ID of an entity</comment>
            <sdKey name="FK_SYNONYM_Chemical" toTable="Chemical" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_Reaction" toTable="Reaction" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_Protein" toTable="Protein" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_Feature" toTable="Feature" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_Function" toTable="Function" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_EnzymaticReaction" toTable="EnzymaticReaction" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_GeneticCode" toTable="GeneticCode" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_Division" toTable="Division" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_Taxon" toTable="Taxon" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_BioSource" toTable="BioSource" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_BioSubtype" toTable="BioSubtype" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_NucleicAcid" toTable="NucleicAcid" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_Subsequence" toTable="Subsequence" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_Gene" toTable="Gene" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_Pathway" toTable="Pathway" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_Term" toTable="Term" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_Computation" toTable="Computation" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_Citation" toTable="Citation" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_PointOfContact" toTable="Contact" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_Archive" toTable="Archive" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_Experiment" toTable="Experiment" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_ExperimentData" toTable="ExperimentData" toColumn="WID"/>
            <sdKey name="FK_SYNONYM_Support" toTable="Support" toColumn="WID"/>
        </column>
        <column length="255" name="Syn" type="@varchar" required="true">
            <comment>Another name for the entity</comment>
        </column>

        <index name="SYNONYM_OTHERWID_SYN" columns="OTHERWID, SYN" initial="true"/>
        <index name="SYNONYM_SYN" columns="Syn"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ToolAdvice"
          type="object-descriptor">
        <comment>This table captures meta-data that does not have an interpretation in</comment>
        <comment>the warehouse semantics, but is `hints' to various tools that may</comment>
        <comment>operate on, or build pictorial representations of, core elements of the</comment>
        <comment>schema. For example, it may give hints to a particular pathway viewing</comment>
        <comment>tool on how to layout a pathway.</comment>
        <column name="OtherWID" type="@wid" required="true">
            <comment>The entity to which this advice applies</comment>
            <sdKey name="FK_TOOL_Chemical" toTable="Chemical" toColumn="WID"/>
            <sdKey name="FK_TOOL_Reaction" toTable="Reaction" toColumn="WID"/>
            <sdKey name="FK_TOOL_Protein" toTable="Protein" toColumn="WID"/>
            <sdKey name="FK_TOOL_Feature" toTable="Feature" toColumn="WID"/>
            <sdKey name="FK_TOOL_Function" toTable="Function" toColumn="WID"/>
            <sdKey name="FK_TOOL_EnzymaticReaction" toTable="EnzymaticReaction" toColumn="WID"/>
            <sdKey name="FK_TOOL_GeneticCode" toTable="GeneticCode" toColumn="WID"/>
            <sdKey name="FK_TOOL_Division" toTable="Division" toColumn="WID"/>
            <sdKey name="FK_TOOL_Taxon" toTable="Taxon" toColumn="WID"/>
            <sdKey name="FK_TOOL_BioSource" toTable="BioSource" toColumn="WID"/>
            <sdKey name="FK_TOOL_BioSubtype" toTable="BioSubtype" toColumn="WID"/>
            <sdKey name="FK_TOOL_NucleicAcid" toTable="NucleicAcid" toColumn="WID"/>
            <sdKey name="FK_TOOL_Subsequence" toTable="Subsequence" toColumn="WID"/>
            <sdKey name="FK_TOOL_Gene" toTable="Gene" toColumn="WID"/>
            <sdKey name="FK_TOOL_Pathway" toTable="Pathway" toColumn="WID"/>
            <sdKey name="FK_TOOL_Term" toTable="Term" toColumn="WID"/>
            <sdKey name="FK_TOOL_Computation" toTable="Computation" toColumn="WID"/>
            <sdKey name="FK_TOOL_Citation" toTable="Citation" toColumn="WID"/>
            <sdKey name="FK_TOOL_PointOfContact" toTable="Contact" toColumn="WID"/>
            <sdKey name="FK_TOOL_Archive" toTable="Archive" toColumn="WID"/>
            <sdKey name="FK_TOOL_Experiment" toTable="Experiment" toColumn="WID"/>
            <sdKey name="FK_TOOL_ExperimentData" toTable="ExperimentData" toColumn="WID"/>
            <sdKey name="FK_TOOL_Support" toTable="Support" toColumn="WID"/>
        </column>
        <column length="50" name="ToolName" type="@varchar" required="true">
            <comment>The name of the tool</comment>
        </column>
        <column name="Advice" type="@string32" required="false">
            <comment>The advice</comment>
        </column>

        <index name="TOOL_OTHERWID" columns="OtherWID"/>
        <index name="TOOL_NAME" columns="ToolName"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          name="BioSourceWIDBioSubtypeWID"
          type="associative">
        <comment>Linking table which links BioSource and BioSubtype</comment>
        <!-- @- Created by YP 4/27/04 -->
        <!-- @- Added Version 3.0 -->
        <column name="BioSourceWID" type="@wid" required="true">
            <comment>Links to the BioSource associated with this object.</comment>
            <foreignKey name="FK_BioSourceWIDBioSubtypeWID1" toTable="BioSource" toColumn="WID"/>
        </column>
        <column name="BioSubtypeWID" type="@wid" required="true">
            <comment>Links to the BioSubtype associated with this object.</comment>
            <foreignKey name="FK_BioSourceWIDBioSubtypeWID2" toTable="BioSubtype" toColumn="WID"/>
        </column>

        <index name="BB_BSWID_BSTWID" columns="BioSourceWID, BioSubtypeWID"/>
        <index name="BB_BSTWID_BSWID" columns="BioSubtypeWID, BioSourceWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="BioSourceWIDGeneWID"
          type="associative">
        <comment>Associates a gene with those species, strains, tissues, etc, from which it was derived.</comment>
        <column name="BioSourceWID" type="@wid" required="true">
            <comment>Reference to the BioSource that has this gene.</comment>
            <foreignKey name="FK_BioSourceWIDGeneWID1" toTable="BioSource" toColumn="WID"/>
        </column>
        <column name="GeneWID" type="@wid" required="true">
            <comment>Reference to the Gene that is present in the organism.</comment>
            <foreignKey name="FK_BioSourceWIDGeneWID2" toTable="Gene" toColumn="WID"/>
        </column>

        <index name="BG_BIOSOURCEWID_GENEWID" columns="BioSourceWID, GENEWID"/>
        <index name="BG_GENEWID_BIOSOURCEWID" columns="GENEWID, BioSourceWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          name="BioSourceWIDProteinWID"
          type="associative">
        <comment>Associates a protein with those species, strains, tissues, etc, from which it was derived.</comment>
        <column name="BioSourceWID" type="@wid" required="true">
            <comment>Reference to the BioSource that has this protein.</comment>
            <foreignKey name="FK_BioSourceWIDProteinWID1" toTable="BioSource" toColumn="WID"/>
        </column>
        <column name="ProteinWID" type="@wid" required="true">
            <comment>Reference to the Protein that is present in the organism.</comment>
            <foreignKey name="FK_BioSourceWIDProteinWID2" toTable="Protein" toColumn="WID"/>
        </column>

        <index name="BP_BIOSOURCEWID_PROWID" columns="BioSourceWID,PROTEINWID"/>
        <index name="BP_PROWID_BIOSOURCEWID" columns="PROTEINWID, BioSourceWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          name="GeneWIDNucleicAcidWID"
          type="associative">
        <comment>Associates a gene with its nucleic acid product(s).</comment>
        <comment>Note that the nucleic acid (ie. replicon) containing the gene is referenced by
            Gene.NucleicAcidWID,
        </comment>
        <comment>not in this table.</comment>
        <column name="GeneWID" type="@wid" required="true">
            <comment>Reference to the Gene that produces this nucleic acid.</comment>
            <foreignKey name="FK_GeneWIDNucleicAcidWID1" toTable="Gene" toColumn="WID"/>
        </column>
        <column name="NucleicAcidWID" type="@wid" required="true">
            <comment>Reference to the nucleic acid that has this gene.</comment>
            <foreignKey name="FK_GeneWIDNucleicAcidWID2" toTable="NucleicAcid" toColumn="WID"/>
        </column>

        <index name="GN_GENEWID_NAWID" columns="GENEWID,NUCLEICACIDWID"/>
        <index name="GN_NAWID_GENEWID" columns="NUCLEICACIDWID,GENEWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="GeneWIDProteinWID"
          type="associative">
        <comment>Associates a gene with its protein product(s).</comment>
        <column name="GeneWID" type="@wid" required="true">
            <comment>Reference to the Gene that produces this protein.</comment>
            <foreignKey name="FK_GeneWIDProteinWID1" toTable="Gene" toColumn="WID"/>
        </column>
        <column name="ProteinWID" type="@wid" required="true">
            <comment>Reference to the protein that has this gene.</comment>
            <foreignKey name="FK_GeneWIDProteinWID2" toTable="Protein" toColumn="WID"/>
        </column>

        <index name="GP_GENEWID_PROWID" columns="GENEWID,PROTEINWID"/>
        <index name="GP_PROWID_GENEWID" columns="PROTEINWID,GENEWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          name="ProteinWIDFunctionWID"
          type="associative">
        <comment>Associates a non-enzymatic function with a protein that has that function.</comment>
        <column name="ProteinWID" type="@wid" required="true">
            <comment>Reference to the protein that has this function.</comment>
            <foreignKey name="FK_ProteinWIDFunctionWID2" toTable="Protein" toColumn="WID"/>
        </column>
        <column name="FunctionWID" type="@wid" required="true">
            <comment>Reference to the function for this protein.</comment>
            <foreignKey name="FK_ProteinWIDFunctionWID3" toTable="Function" toColumn="WID"/>
        </column>

        <index name="PF_FunctionWID_PROWID" columns="FunctionWID,PROTEINWID"/>
        <index name="PF_PROWID_FunctionWID" columns="PROTEINWID,FunctionWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          name="ExperimentRelationship"
          type="arbitrary-relation">
        <comment>Relates one experiment to another.</comment>
        <comment>This table supports a many to many relationship.</comment>
        <column name="ExperimentWID" type="@wid" required="true">
            <comment>Experiment entity</comment>
            <foreignKey name="FK_ExpRelationship1" toTable="Experiment" toColumn="WID"/>
        </column>
        <column name="RelatedExperimentWID" type="@wid" required="true">
            <comment>The WID of the experiment the current term is related to</comment>
            <foreignKey name="FK_ExpRelationship2" toTable="Experiment" toColumn="WID"/>
        </column>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="GelLocation"
          type="object">
        <comment>Describes the location of a spot on a gel.</comment>
        <comment>This tables maps spots to the one or more tables that they are found on.</comment>
        <comment>Describes the X and Y coordinates on the Gel.</comment>
        <comment>Information for the particular gel conditions that the spot was identified</comment>
        <comment>on can be found in the Experiment table.</comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column name="SpotWID" type="@wid" required="true">
            <comment>The location record is for this spot.</comment>
            <foreignKey name="FK_GelLocSpotWid" toTable="Spot" toColumn="WID"/>
        </column>
        <column name="Xcoord" type="@real32" required="false">
            <comment>The x-coordinate of the spot on the gel.</comment>
        </column>
        <column name="Ycoord" type="@real32" required="false">
            <comment>The y-coordinate of the spot on the gel.</comment>
        </column>
        <column length="1" name="refGel" type="@varchar" required="false">
            <comment>Y or N.</comment>
            <comment>A spot can be identified across multiple gels, so this columnn.</comment>
            <comment>is used to indicate whether the X/Y coords of this particular gel was used to</comment>
            <comment>determine the molecular weight and isolectric point for the spot.</comment>
        </column>
        <column name="ExperimentWID" type="@wid" required="true">
            <comment>Experiment entity</comment>
            <comment>Describes the gel conditions for this particular record.</comment>
            <foreignKey name="FK_GelLocExp" toTable="Experiment" toColumn="WID"/>
        </column>
        <column name="DatasetWID" type="@wid" required="true">
            <comment>The dataset the entity is from</comment>
            <foreignKey name="FK_GelLocDataset" toTable="DataSet" toColumn="WID"/>
        </column>
        <primaryKey name="PK_GelLocation" column="WID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ProteinWIDSpotWID"
          type="associative">
        <comment>Associates a spot with a known protein.</comment>
        <comment>Not all spots are associated with proteins since it is not necessarily</comment>
        <comment>known what the protein is for a given spot.</comment>
        <comment>This table supports the ability to have a spot linked to multiple protein,</comment>
        <comment>or a protein linked to multiple spots.</comment>
        <column name="ProteinWID" type="@wid" required="true">
            <comment>Reference to the protein that has been mapped to this spot.</comment>
            <foreignKey name="FK_ProteinWIDSpotWID1" toTable="Protein" toColumn="WID"/>
        </column>
        <column name="SpotWID" type="@wid" required="true">
            <comment>Reference to the Protein that is associated to this spot.</comment>
            <foreignKey name="FK_ProteinWIDSpotWID2" toTable="Spot" toColumn="WID"/>
        </column>
        <index name="PS_PROTEINWID_SPOTWID" columns="ProteinWID, SpotWID"/>
        <index name="PS_SPOTWID_PROTEINWID" columns="SpotWID, ProteinWID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Spot" type="object">
        <comment>Describes a spot from a 2D Gel experiment.</comment>
        <comment>A spot can be linked to one or more gels and the location on the gel. The</comment>
        <comment>gel location information is stored in the ExperimentData table.</comment>
        <comment>A spot can be identified to be a particluar protein in the protein table</comment>
        <comment>and is associated to proteins via the ProteinWIDSpotWID table</comment>
        <comment>The method used to identify the spot is contained in the SpotWIDSpotIDMethodWID</comment>
        <comment>table and the SpotIDMethod table.</comment>
        <comment>The growth conditions for the protein is found in the ExperimentData tableeh</comment>
        <comment>The Spot Name/ID goes into the SpotId row, but additional names can be stored</comment>
        <comment>as DBID table entry.</comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column length="25" name="SpotId" type="@varchar" required="false">
            <comment>Name of the spot</comment>
            <comment>Can be null</comment>
        </column>
        <column name="MolecularWeightEst" type="@real32" required="false">
            <comment>Molecular weight estimated from migration on 2D gels.</comment>
            <comment>Units: Daltons.</comment>
        </column>
        <column length="50" name="PIEst" type="@varchar" required="false">
            <comment>Isoelectric point (pI) estimated from migration on 2D gels.</comment>
        </column>
        <column name="DatasetWID" type="@wid" required="true">
            <comment>The dataset the entity is from</comment>
            <foreignKey name="FK_Spot" toTable="DataSet" toColumn="WID"/>
        </column>
        <primaryKey name="PK_Spot" column="WID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="SpotIdMethod"
          type="object">
        <comment>Describes the method by which a spot was identified as</comment>
        <comment>a particular (known) protein in the protein table.</comment>
        <column name="WID" type="@wid" required="true">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column length="100" name="MethodName" type="@varchar" required="true">
            <comment>The name of the method</comment>
            <comment>ex: Co-migration</comment>
        </column>
        <column length="500" name="MethodDesc" type="@varchar" required="false">
            <comment>More detailed description of method.</comment>
            <comment>Ex: Co-migration with purified protein</comment>
        </column>
        <column length="10" name="MethodAbbrev" type="@varchar" required="false">
            <comment>A short abbreviation for the method name.</comment>
            <comment>ex: C</comment>
        </column>
        <column name="DatasetWID" type="@wid" required="true">
            <comment>The dataset the entity is from</comment>
            <foreignKey name="FK_SpotIdMethDataset" toTable="DataSet" toColumn="WID"/>
        </column>
        <primaryKey name="PK_SpotIdMethod" column="WID"/>
    </table>
   <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          name="SpotWIDSpotIdMethodWID"
          type="associative">
        <comment>Associates a spot with a SpotIdMethod,</comment>
        <comment>which is the method used to identify a spot with a particular protein.</comment>
        <comment>A spot can be identified as a particular protein by multiple methods,</comment>
        <comment>so this table supports this many-to-many relationship.</comment>
        <column name="SpotWID" type="@wid" required="true">
            <comment>Reference to the2A Spot record.</comment>
            <foreignKey name="FK_SpotWIDMethWID1" toTable="Spot" toColumn="WID"/>
        </column>
        <column name="SpotIdMethodWID" type="@wid" required="true">
            <comment>Reference to the method that was used to identify a spot as a</comment>
            <comment>particular protein.</comment>
            <foreignKey name="FK_SpotWIDMethWID2" toTable="SpotIdMethod" toColumn="WID"/>
        </column>
        <index name="SM_SPOTWID_IDMETHWID" columns="SpotWID, SpotIdMethodWID"/>
        <index name="SM_IDMETHWID_SPOTWID" columns="SpotIdMethodWID, SpotWID"/>
    </table>
   <table type="object" name="NameValueType">
        <comment>Represents MAGE Class NameValueType</comment>
        <comment>A tuple designed to store data, keyed by a name and type.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_NameValueType1"/>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute NameValueType.name</comment>
            <comment>The name of the key.</comment>
        </column>
        <column name="Value" type="@varchar" length="255" required="false">
            <comment>MAGE attribute NameValueType.value</comment>
            <comment>The value of the name.</comment>
        </column>
        <column name="Type_" type="@varchar" length="255" required="false">
            <comment>MAGE attribute NameValueType.type</comment>
            <comment>The type of the key.</comment>
        </column>
        <column name="NameValueType_PropertySets" type="@wid" required="false">
            <comment>Represents 1..n association between NameValueType and NameValueType</comment>
            <comment>Allows nested specification of name/value pairs</comment>
            <foreignKey toColumn="WID" toTable="NameValueType" name="FK_NameValueType66"/>
        </column>
        <column name="OtherWID" type="@wid">
            <comment>WID of the object this NameValueType describes</comment>
        </column>
        <primaryKey column="WID" name="PK_NameValueType"/>
        <index name="NameValueType1" columns="DataSetWID"/>
        <index name="NameValueType2" columns="Name"/>
        <index name="NameValueType3" columns="Value"/>
        <index name="NameValueType4" columns="Type_"/>
        <index name="NameValueType5" columns="NameValueType_PropertySets"/>
        <index name="NameValueType6" columns="OtherWID"/>
    </table>
   <table type="object" name="Contact">
        <comment>Represents MAGE Class Contact</comment>
        <comment>A contact is either a person or an organization.</comment>
        <comment>Includes MAGE Class Organization</comment>
        <comment>Includes MAGE Class Person</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_Contact1"/>
        </column>
        <column required="true" name="MAGEClass" length="100" type="@varchar">
            <comment>Discriminator column specifies type of object this row represents</comment>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="URI" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Contact.URI</comment>
        </column>
        <column name="Address" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Contact.address</comment>
        </column>
        <column name="Phone" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Contact.phone</comment>
        </column>
        <column name="TollFreePhone" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Contact.tollFreePhone</comment>
        </column>
        <column name="Email" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Contact.email</comment>
        </column>
        <column name="Fax" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Contact.fax</comment>
        </column>
        <column name="Parent" type="@wid" required="false">
            <comment>Represents n..1 association between Organization and Organization</comment>
            <comment>The containing organization (the university or business which a lab belongs to, etc.)</comment>
            <foreignKey toColumn="WID" toTable="Contact" name="FK_Contact3"/>
        </column>
        <column name="LastName" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Person.lastName</comment>
        </column>
        <column name="FirstName" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Person.firstName</comment>
        </column>
        <column name="MidInitials" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Person.midInitials</comment>
        </column>
        <column name="Affiliation" type="@wid" required="false">
            <comment>Represents n..1 association between Person and Organization</comment>
            <comment>The organization a person belongs to.</comment>
            <foreignKey toColumn="WID" toTable="Contact" name="FK_Contact4"/>
        </column>
        <primaryKey column="WID" name="PK_Contact"/>
        <index name="Contact1" columns="DataSetWID"/>
        <index name="Contact2" columns="MAGEClass"/>
        <index name="Contact3" columns="Identifier"/>
        <index name="Contact4" columns="Name"/>
        <index name="Contact5" columns="URI"/>
        <index name="Contact6" columns="Address"/>
        <index name="Contact7" columns="Phone"/>
        <index name="Contact8" columns="TollFreePhone"/>
        <index name="Contact9" columns="Email"/>
        <index name="Contact10" columns="Fax"/>
        <index name="Contact11" columns="Parent"/>
        <index name="Contact12" columns="LastName"/>
        <index name="Contact13" columns="FirstName"/>
        <index name="Contact14" columns="MidInitials"/>
        <index name="Contact15" columns="Affiliation"/>
    </table>
   <table type="object" name="ArrayDesign">
        <comment>Represents MAGE Class ArrayDesign</comment>
        <comment>Describes the design of an gene expression layout.  In some cases this might be virtual and, for instance, represent the output from analysis software at the composite level without reporters or features.</comment>
        <comment>Includes MAGE Class PhysicalArrayDesign</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_ArrayDesign1"/>
        </column>
        <column required="true" name="MAGEClass" length="100" type="@varchar">
            <comment>Discriminator column specifies type of object this row represents</comment>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="Version" type="@varchar" length="255" required="false">
            <comment>MAGE attribute ArrayDesign.version</comment>
            <comment>The version of this design.</comment>
        </column>
        <column name="NumberOfFeatures" type="@int16" required="false">
            <comment>MAGE attribute ArrayDesign.numberOfFeatures</comment>
            <comment>The number of features for this array</comment>
        </column>
        <column name="SurfaceType" type="@wid" required="false">
            <comment>Represents 1..1 association between PhysicalArrayDesign and OntologyEntry</comment>
            <comment>The type of surface from a controlled vocabulary that would include terms such as non-absorptive, absorptive, etc.</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_ArrayDesign3"/>
        </column>
        <primaryKey column="WID" name="PK_ArrayDesign"/>
        <index name="ArrayDesign1" columns="DataSetWID"/>
        <index name="ArrayDesign2" columns="MAGEClass"/>
        <index name="ArrayDesign3" columns="Identifier"/>
        <index name="ArrayDesign4" columns="Name"/>
        <index name="ArrayDesign5" columns="Version"/>
        <index name="ArrayDesign6" columns="NumberOfFeatures"/>
        <index name="ArrayDesign7" columns="SurfaceType"/>
    </table>
   <table type="object" name="DesignElementGroup">
        <comment>Represents MAGE Class DesignElementGroup</comment>
        <comment>The DesignElementGroup holds information on either features, reporters, or compositeSequences, particularly that information that is common between all of the DesignElements contained.</comment>
        <comment>Includes MAGE Class CompositeGroup</comment>
        <comment>Includes MAGE Class FeatureGroup</comment>
        <comment>Includes MAGE Class ReporterGroup</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_DesignElementGroup1"/>
        </column>
        <column required="true" name="MAGEClass" length="100" type="@varchar">
            <comment>Discriminator column specifies type of object this row represents</comment>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="ArrayDesign_FeatureGroups" type="@wid" required="false">
            <comment>Represents 1..n association between ArrayDesign and FeatureGroup</comment>
            <comment>The grouping of like Features together.  Typically for a physical array design, this will be a single grouping of features whose type might be PCR Product or Oligo.  If more than one technology type occurs on the array, such as the mixing of Cloned BioMaterial and Oligos, then there would be multiple FeatureGroups to segregate the technology types.</comment>
            <foreignKey toColumn="WID" toTable="ArrayDesign" name="FK_DesignElementGroup3"/>
        </column>
        <column name="DesignElementGroup_Species" type="@wid" required="false">
            <comment>Represents 1..1 association between DesignElementGroup and OntologyEntry</comment>
            <comment>The organism from which the biosequences of this group are from.</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_DesignElementGroup4"/>
        </column>
        <column name="FeatureWidth" type="@real32" required="false">
            <comment>MAGE attribute FeatureGroup.featureWidth</comment>
            <comment>The width of the feature.</comment>
        </column>
        <column name="FeatureLength" type="@real32" required="false">
            <comment>MAGE attribute FeatureGroup.featureLength</comment>
            <comment>The length of the feature.</comment>
        </column>
        <column name="FeatureHeight" type="@real32" required="false">
            <comment>MAGE attribute FeatureGroup.featureHeight</comment>
            <comment>The height of the feature.</comment>
        </column>
        <column name="FeatureGroup_TechnologyType" type="@wid" required="false">
            <comment>Represents 1..1 association between FeatureGroup and OntologyEntry</comment>
            <comment>The technology type of this design.  By specifying a technology type, higher level analysis can use appropriate algorithms to compare the results from multiple arrays.  The technology type may be spotted cDNA or in situ photolithography.</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_DesignElementGroup5"/>
        </column>
        <column name="FeatureGroup_FeatureShape" type="@wid" required="false">
            <comment>Represents 1..1 association between FeatureGroup and OntologyEntry</comment>
            <comment>The expected shape of the feature on the array: circular, oval, square, etc.</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_DesignElementGroup6"/>
        </column>
        <column name="FeatureGroup_DistanceUnit" type="@wid" required="false">
            <comment>Represents 1..1 association between FeatureGroup and DistanceUnit</comment>
            <comment>The unit for the feature measures.</comment>
            <foreignKey toColumn="WID" toTable="Unit" name="FK_DesignElementGroup7"/>
        </column>
        <primaryKey column="WID" name="PK_DesignElementGroup"/>
        <index name="DesignElementGroup1" columns="DataSetWID"/>
        <index name="DesignElementGroup2" columns="MAGEClass"/>
        <index name="DesignElementGroup3" columns="Identifier"/>
        <index name="DesignElementGroup4" columns="Name"/>
        <index name="DesignElementGroup5" columns="ArrayDesign_FeatureGroups"/>
        <index name="DesignElementGroup6" columns="DesignElementGroup_Species"/>
        <index name="DesignElementGroup7" columns="FeatureWidth"/>
        <index name="DesignElementGroup8" columns="FeatureLength"/>
        <index name="DesignElementGroup9" columns="FeatureHeight"/>
        <index name="DesignElementGroup10" columns="FeatureGroup_TechnologyType"/>
        <index name="DesignElementGroup11" columns="FeatureGroup_FeatureShape"/>
        <index name="DesignElementGroup12" columns="FeatureGroup_DistanceUnit"/>
    </table>
   <table type="object" name="Zone">
        <comment>Represents MAGE Class Zone</comment>
        <comment>Specifies the location of a zone on an array.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_Zone1"/>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="Row_" type="@int16" required="false">
            <comment>MAGE attribute Zone.row</comment>
            <comment>row position in the ZoneGroup</comment>
        </column>
        <column name="Column_" type="@int16" required="false">
            <comment>MAGE attribute Zone.column</comment>
            <comment>column position in the ZoneGroup.</comment>
        </column>
        <column name="UpperLeftX" type="@real32" required="false">
            <comment>MAGE attribute Zone.upperLeftX</comment>
            <comment>Boundary vertical upper left position relative to (0,0).</comment>
        </column>
        <column name="UpperLeftY" type="@real32" required="false">
            <comment>MAGE attribute Zone.upperLeftY</comment>
            <comment>Boundary horizontal upper left position relative to (0,0).</comment>
        </column>
        <column name="LowerRightX" type="@real32" required="false">
            <comment>MAGE attribute Zone.lowerRightX</comment>
            <comment>Boundary vertical lower right position relative to (0,0).</comment>
        </column>
        <column name="LowerRightY" type="@real32" required="false">
            <comment>MAGE attribute Zone.lowerRightY</comment>
            <comment>Boundary horizontal lower right position relative to (0,0).</comment>
        </column>
        <column name="Zone_DistanceUnit" type="@wid" required="false">
            <comment>Represents 1..1 association between Zone and DistanceUnit</comment>
            <comment>Unit for the Zone attributes.</comment>
            <foreignKey toColumn="WID" toTable="Unit" name="FK_Zone3"/>
        </column>
        <column name="ZoneGroup_ZoneLocations" type="@wid" required="false">
            <comment>Represents 1..n association between ZoneGroup and Zone</comment>
            <comment>Describes the location of different zones within the array design.</comment>
            <foreignKey toColumn="WID" toTable="ZoneGroup" name="FK_Zone4"/>
        </column>
        <primaryKey column="WID" name="PK_Zone"/>
        <index name="Zone1" columns="DataSetWID"/>
        <index name="Zone2" columns="Identifier"/>
        <index name="Zone3" columns="Name"/>
        <index name="Zone4" columns="Row_"/>
        <index name="Zone5" columns="Column_"/>
        <index name="Zone6" columns="UpperLeftX"/>
        <index name="Zone7" columns="UpperLeftY"/>
        <index name="Zone8" columns="LowerRightX"/>
        <index name="Zone9" columns="LowerRightY"/>
        <index name="Zone10" columns="Zone_DistanceUnit"/>
        <index name="Zone11" columns="ZoneGroup_ZoneLocations"/>
    </table>
   <table type="object" name="ZoneGroup">
        <comment>Represents MAGE Class ZoneGroup</comment>
        <comment>Specifies a repeating area on an array.  This is useful for printing when the same pattern is repeated in a regular fashion.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_ZoneGroup1"/>
        </column>
        <column name="PhysicalArrayDesign_ZoneGroups" type="@wid" required="false">
            <comment>Represents 1..n association between PhysicalArrayDesign and ZoneGroup</comment>
            <comment>In the case where the array design is specified by one or more zones, allows specifying where those zones are located.</comment>
            <foreignKey toColumn="WID" toTable="ArrayDesign" name="FK_ZoneGroup2"/>
        </column>
        <column name="SpacingsBetweenZonesX" type="@real32" required="false">
            <comment>MAGE attribute ZoneGroup.spacingsBetweenZonesX</comment>
            <comment>Spacing between zones, if applicable.</comment>
        </column>
        <column name="SpacingsBetweenZonesY" type="@real32" required="false">
            <comment>MAGE attribute ZoneGroup.spacingsBetweenZonesY</comment>
            <comment>Spacing between zones, if applicable.</comment>
        </column>
        <column name="ZonesPerX" type="@int16" required="false">
            <comment>MAGE attribute ZoneGroup.zonesPerX</comment>
            <comment>The number of zones on the x-axis.</comment>
        </column>
        <column name="ZonesPerY" type="@int16" required="false">
            <comment>MAGE attribute ZoneGroup.zonesPerY</comment>
            <comment>The number of zones on the y-axis.</comment>
        </column>
        <column name="ZoneGroup_DistanceUnit" type="@wid" required="false">
            <comment>Represents 1..1 association between ZoneGroup and DistanceUnit</comment>
            <comment>Unit for the ZoneGroup attributes.</comment>
            <foreignKey toColumn="WID" toTable="Unit" name="FK_ZoneGroup3"/>
        </column>
        <column name="ZoneGroup_ZoneLayout" type="@wid" required="false">
            <comment>Represents 1..1 association between ZoneGroup and ZoneLayout</comment>
            <comment>Describes the rectangular layout of features in the array design.</comment>
            <foreignKey toColumn="WID" toTable="ZoneLayout" name="FK_ZoneGroup4"/>
        </column>
        <primaryKey column="WID" name="PK_ZoneGroup"/>
        <index name="ZoneGroup1" columns="DataSetWID"/>
        <index name="ZoneGroup2" columns="PhysicalArrayDesign_ZoneGroups"/>
        <index name="ZoneGroup3" columns="SpacingsBetweenZonesX"/>
        <index name="ZoneGroup4" columns="SpacingsBetweenZonesY"/>
        <index name="ZoneGroup5" columns="ZonesPerX"/>
        <index name="ZoneGroup6" columns="ZonesPerY"/>
        <index name="ZoneGroup7" columns="ZoneGroup_DistanceUnit"/>
        <index name="ZoneGroup8" columns="ZoneGroup_ZoneLayout"/>
    </table>
   <table type="object" name="ZoneLayout">
        <comment>Represents MAGE Class ZoneLayout</comment>
        <comment>Specifies the layout of features in a rectangular grid.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_ZoneLayout1"/>
        </column>
        <column name="NumFeaturesPerRow" type="@int16" required="false">
            <comment>MAGE attribute ZoneLayout.numFeaturesPerRow</comment>
            <comment>The number of features from left to right.</comment>
        </column>
        <column name="NumFeaturesPerCol" type="@int16" required="false">
            <comment>MAGE attribute ZoneLayout.numFeaturesPerCol</comment>
            <comment>The number of features from top to bottom of the grid.</comment>
        </column>
        <column name="SpacingBetweenRows" type="@real32" required="false">
            <comment>MAGE attribute ZoneLayout.spacingBetweenRows</comment>
            <comment>Spacing between the rows.</comment>
        </column>
        <column name="SpacingBetweenCols" type="@real32" required="false">
            <comment>MAGE attribute ZoneLayout.spacingBetweenCols</comment>
            <comment>Spacing between the columns.</comment>
        </column>
        <column name="ZoneLayout_DistanceUnit" type="@wid" required="false">
            <comment>Represents 1..1 association between ZoneLayout and DistanceUnit</comment>
            <comment>Unit of the ZoneLayout attributes.</comment>
            <foreignKey toColumn="WID" toTable="Unit" name="FK_ZoneLayout2"/>
        </column>
        <primaryKey column="WID" name="PK_ZoneLayout"/>
        <index name="ZoneLayout1" columns="DataSetWID"/>
        <index name="ZoneLayout2" columns="NumFeaturesPerRow"/>
        <index name="ZoneLayout3" columns="NumFeaturesPerCol"/>
        <index name="ZoneLayout4" columns="SpacingBetweenRows"/>
        <index name="ZoneLayout5" columns="SpacingBetweenCols"/>
        <index name="ZoneLayout6" columns="ZoneLayout_DistanceUnit"/>
    </table>
   <table type="object" name="ExperimentDesign">
        <comment>Represents MAGE Class ExperimentDesign</comment>
        <comment>The ExperimentDesign is the description and collection of ExperimentalFactors and the hierarchy of BioAssays to which they pertain.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_ExperimentDesign1"/>
        </column>
        <column name="Experiment_ExperimentDesigns" type="@wid" required="false">
            <comment>Represents 1..n association between Experiment and ExperimentDesign</comment>
            <comment>The association to the description and annotation of the Experiment, along with the grouping of the top-level BioAssays.</comment>
            <foreignKey toColumn="WID" toTable="Experiment" name="FK_ExperimentDesign3"/>
        </column>
        <column name="QualityControlDescription" type="@wid" required="false">
            <comment>Represents 1..1 association between ExperimentDesign and Description</comment>
            <comment>Description of the quality control aspects of the Experiment.</comment>
        </column>
        <column name="NormalizationDescription" type="@wid" required="false">
            <comment>Represents 1..1 association between ExperimentDesign and Description</comment>
            <comment>Description of the normalization strategy of the Experiment.</comment>
        </column>
        <column name="ReplicateDescription" type="@wid" required="false">
            <comment>Represents 1..1 association between ExperimentDesign and Description</comment>
            <comment>Description of the replicate strategy of the Experiment.</comment>
        </column>
        <primaryKey column="WID" name="PK_ExperimentDesign"/>
        <index name="ExperimentDesign1" columns="DataSetWID"/>
        <index name="ExperimentDesign2" columns="Experiment_ExperimentDesigns"/>
        <index name="ExperimentDesign3" columns="QualityControlDescription"/>
        <index name="ExperimentDesign4" columns="NormalizationDescription"/>
        <index name="ExperimentDesign5" columns="ReplicateDescription"/>
    </table>
   <table type="object" name="ExperimentalFactor">
        <comment>Represents MAGE Class ExperimentalFactor</comment>
        <comment>ExperimentFactors are the dependent variables of an experiment (e.g. time, glucose concentration, ...).</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_ExperimentalFactor1"/>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="ExperimentDesign" type="@wid" required="false">
            <comment>Represents 1..n association between ExperimentDesign and ExperimentalFactor</comment>
            <comment>The description of the factors (TimeCourse, Dosage, etc.) that group the BioAssays.</comment>
            <foreignKey toColumn="WID" toTable="ExperimentDesign" name="FK_ExperimentalFactor3"/>
        </column>
        <column name="ExperimentalFactor_Category" type="@wid" required="false">
            <comment>Represents 1..1 association between ExperimentalFactor and OntologyEntry</comment>
            <comment>The category of an ExperimentalFactor could be biological (time, [glucose]) or a methodological factor (differing cDNA preparation protocols).</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_ExperimentalFactor4"/>
        </column>
        <primaryKey column="WID" name="PK_ExperimentalFactor"/>
        <index name="ExperimentalFactor1" columns="DataSetWID"/>
        <index name="ExperimentalFactor2" columns="Identifier"/>
        <index name="ExperimentalFactor3" columns="Name"/>
        <index name="ExperimentalFactor4" columns="ExperimentDesign"/>
        <index name="ExperimentalFactor5" columns="ExperimentalFactor_Category"/>
    </table>
   <table type="object" name="FactorValue">
        <comment>Represents MAGE Class FactorValue</comment>
        <comment>The value for a ExperimentalFactor</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_FactorValue1"/>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="ExperimentalFactor" type="@wid" required="false">
            <comment>Represents 1..n association between ExperimentalFactor and FactorValue</comment>
            <comment>The pairing of BioAssay FactorValues with the ExperimentDesign ExperimentFactor.</comment>
            <foreignKey toColumn="WID" toTable="ExperimentalFactor" name="FK_FactorValue3"/>
        </column>
        <column name="ExperimentalFactor2" type="@wid" required="false">
            <comment>Represents n..1 association between FactorValue and ExperimentalFactor</comment>
            <comment>The pairing of BioAssay FactorValues with the ExperimentDesign ExperimentFactor.</comment>
            <foreignKey toColumn="WID" toTable="ExperimentalFactor" name="FK_FactorValue4"/>
        </column>
        <column name="FactorValue_Measurement" type="@wid" required="false">
            <comment>Represents 1..1 association between FactorValue and Measurement</comment>
            <comment>The measured value for this factor.</comment>
            <foreignKey toColumn="WID" toTable="Measurement" name="FK_FactorValue5"/>
        </column>
        <column name="FactorValue_Value" type="@wid" required="false">
            <comment>Represents 1..1 association between FactorValue and OntologyEntry</comment>
            <comment>Allows a more complex value to be specified for a FactorValue than a simple Measurement.</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_FactorValue6"/>
        </column>
        <primaryKey column="WID" name="PK_FactorValue"/>
        <index name="FactorValue1" columns="DataSetWID"/>
        <index name="FactorValue2" columns="Identifier"/>
        <index name="FactorValue3" columns="Name"/>
        <index name="FactorValue4" columns="ExperimentalFactor"/>
        <index name="FactorValue5" columns="ExperimentalFactor2"/>
        <index name="FactorValue6" columns="FactorValue_Measurement"/>
        <index name="FactorValue7" columns="FactorValue_Value"/>
    </table>
   <table type="object" name="QuantitationType">
        <comment>Represents MAGE Class QuantitationType</comment>
        <comment>A method for calculating a single datum of the matrix (e.g. raw intensity, background, error).</comment>
        <comment>Includes MAGE Class SpecializedQuantitationType</comment>
        <comment>Includes MAGE Class StandardQuantitationType</comment>
        <comment>Includes MAGE Class ConfidenceIndicator</comment>
        <comment>Includes MAGE Class DerivedSignal</comment>
        <comment>Includes MAGE Class Error</comment>
        <comment>Includes MAGE Class ExpectedValue</comment>
        <comment>Includes MAGE Class Failed</comment>
        <comment>Includes MAGE Class MeasuredSignal</comment>
        <comment>Includes MAGE Class PValue</comment>
        <comment>Includes MAGE Class PresentAbsent</comment>
        <comment>Includes MAGE Class Ratio</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_QuantitationType1"/>
        </column>
        <column required="true" name="MAGEClass" length="100" type="@varchar">
            <comment>Discriminator column specifies type of object this row represents</comment>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="IsBackground" type="@boolean" required="false">
            <comment>MAGE attribute QuantitationType.isBackground</comment>
            <comment>Indicates whether the quantitation has been measured from the background or from the feature itself.</comment>
        </column>
        <column name="Channel" type="@wid" required="false">
            <comment>Represents n..1 association between QuantitationType and Channel</comment>
            <comment>The optional channel associated with the QuantitationType.</comment>
            <foreignKey toColumn="WID" toTable="Channel" name="FK_QuantitationType3"/>
        </column>
        <column name="QuantitationType_Scale" type="@wid" required="false">
            <comment>Represents 1..1 association between QuantitationType and OntologyEntry</comment>
            <comment>Indication of how to interpret the value.  From a suggested vocabulary of {LINEAR | LN | LOG2 |LOG10 | FOLD_CHANGE | OTHER}</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_QuantitationType4"/>
        </column>
        <column name="QuantitationType_DataType" type="@wid" required="false">
            <comment>Represents 1..1 association between QuantitationType and OntologyEntry</comment>
            <comment>The specific type for the quantitations.  From a controlled vocabulary of {float, int, boolean, etc.}</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_QuantitationType5"/>
        </column>
        <column name="TargetQuantitationType" type="@wid" required="false">
            <comment>Represents n..1 association between ConfidenceIndicator and QuantitationType</comment>
            <comment>The association between a ConfidenceIndicator and the QuantitationType its is an indicator for.</comment>
            <foreignKey toColumn="WID" toTable="QuantitationType" name="FK_QuantitationType6"/>
        </column>
        <primaryKey column="WID" name="PK_QuantitationType"/>
        <index name="QuantitationType1" columns="DataSetWID"/>
        <index name="QuantitationType2" columns="MAGEClass"/>
        <index name="QuantitationType3" columns="Identifier"/>
        <index name="QuantitationType4" columns="Name"/>
        <index name="QuantitationType5" columns="IsBackground"/>
        <index name="QuantitationType6" columns="Channel"/>
        <index name="QuantitationType7" columns="QuantitationType_Scale"/>
        <index name="QuantitationType8" columns="QuantitationType_DataType"/>
        <index name="QuantitationType9" columns="TargetQuantitationType"/>
    </table>
   <table type="object" name="Database_">
        <comment>Represents MAGE Class Database</comment>
        <comment>An address to a repository.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_Database_1"/>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="Version" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Database.version</comment>
            <comment>The version for which a DatabaseReference applies.</comment>
        </column>
        <column name="URI" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Database.URI</comment>
            <comment>The location of the Database.</comment>
        </column>
        <primaryKey column="WID" name="PK_Database_"/>
        <index name="Database_1" columns="DataSetWID"/>
        <index name="Database_2" columns="Identifier"/>
        <index name="Database_3" columns="Name"/>
        <index name="Database_4" columns="Version"/>
        <index name="Database_5" columns="URI"/>
    </table>
   <table type="object" name="Array_">
        <comment>Represents MAGE Class Array</comment>
        <comment>The physical substrate along with its features and their annotation</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_Array_1"/>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="ArrayIdentifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Array.arrayIdentifier</comment>
            <comment>An identifying string, e.g. a barcode.</comment>
        </column>
        <column name="ArrayXOrigin" type="@real32" required="false">
            <comment>MAGE attribute Array.arrayXOrigin</comment>
            <comment>This can indicate the x position on a slide, chip, etc. of the first Feature and is usually specified relative to the fiducial.</comment>
        </column>
        <column name="ArrayYOrigin" type="@real32" required="false">
            <comment>MAGE attribute Array.arrayYOrigin</comment>
            <comment>This can indicate the y position on a slide, chip, etc. of the first Feature and is usually specified relative to the fiducial.</comment>
        </column>
        <column name="OriginRelativeTo" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Array.originRelativeTo</comment>
            <comment>What the array origin is relative to, e.g. upper left corner, fiducial, etc.</comment>
        </column>
        <column name="ArrayDesign" type="@wid" required="false">
            <comment>Represents n..1 association between Array and ArrayDesign</comment>
            <comment>The association of a physical array with its array design.</comment>
            <foreignKey toColumn="WID" toTable="ArrayDesign" name="FK_Array_3"/>
        </column>
        <column name="Information" type="@wid" required="false">
            <comment>Represents n..1 association between Array and ArrayManufacture</comment>
            <comment>Association between the manufactured array and the information on that manufacture.</comment>
            <foreignKey toColumn="WID" toTable="ArrayManufacture" name="FK_Array_4"/>
        </column>
        <column name="ArrayGroup" type="@wid" required="false">
            <comment>Represents n..1 association between Array and ArrayGroup</comment>
            <comment>Association between an ArrayGroup and its Arrays, typically the ArrayGroup will represent a slide and the Arrays will be the manufactured so that they may be hybridized separately on that slide.</comment>
            <foreignKey toColumn="WID" toTable="ArrayGroup" name="FK_Array_5"/>
        </column>
        <primaryKey column="WID" name="PK_Array_"/>
        <index name="Array_1" columns="DataSetWID"/>
        <index name="Array_2" columns="Identifier"/>
        <index name="Array_3" columns="Name"/>
        <index name="Array_4" columns="ArrayIdentifier"/>
        <index name="Array_5" columns="ArrayXOrigin"/>
        <index name="Array_6" columns="ArrayYOrigin"/>
        <index name="Array_7" columns="OriginRelativeTo"/>
        <index name="Array_8" columns="ArrayDesign"/>
        <index name="Array_9" columns="Information"/>
        <index name="Array_10" columns="ArrayGroup"/>
    </table>
   <table type="object" name="ArrayGroup">
        <comment>Represents MAGE Class ArrayGroup</comment>
        <comment>An array package is a physical platform that contains one or more arrays that are separately addressable (e.g. several arrays that can be hybridized on a single microscope slide) or a virtual grouping together of arrays. The array package that has been manufactured has information about where certain artifacts about the array are located for scanning and feature extraction purposes.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_ArrayGroup1"/>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="Barcode" type="@varchar" length="255" required="false">
            <comment>MAGE attribute ArrayGroup.barcode</comment>
            <comment>Identifier for the ArrayGroup.</comment>
        </column>
        <column name="ArraySpacingX" type="@real32" required="false">
            <comment>MAGE attribute ArrayGroup.arraySpacingX</comment>
            <comment>If there exist more than one array on a slide or a chip, then the spacing between the arrays is useful so that scanning / feature extraction software can crop images representing 1 unique bioassay.</comment>
        </column>
        <column name="ArraySpacingY" type="@real32" required="false">
            <comment>MAGE attribute ArrayGroup.arraySpacingY</comment>
            <comment>If there exist more than one array on a slide or a chip, then the spacing between the arrays is useful so that scanning / feature extraction software can crop images representing 1 unique bioassay.</comment>
        </column>
        <column name="NumArrays" type="@int16" required="false">
            <comment>MAGE attribute ArrayGroup.numArrays</comment>
            <comment>This attribute defines the number of arrays on a chip or a slide.</comment>
        </column>
        <column name="OrientationMark" type="@varchar" length="255" required="false">
            <comment>MAGE attribute ArrayGroup.orientationMark</comment>
            <comment>For a human to determine where the top left side of the array is, such as a barcode or frosted side of the glass, etc.</comment>
        </column>
        <column name="OrientationMarkPosition" type="@varchar" length="25" required="false">
            <comment>MAGE attribute ArrayGroup.orientationMarkPosition</comment>
            <comment>One of top, bottom, left or right.</comment>
        </column>
        <column name="Width" type="@real32" required="false">
            <comment>MAGE attribute ArrayGroup.width</comment>
            <comment>The width of the platform</comment>
        </column>
        <column name="Length" type="@real32" required="false">
            <comment>MAGE attribute ArrayGroup.length</comment>
            <comment>The length of the platform.</comment>
        </column>
        <column name="ArrayGroup_SubstrateType" type="@wid" required="false">
            <comment>Represents 1..1 association between ArrayGroup and OntologyEntry</comment>
            <comment>Commonly, arrays will be spotted on 1x3 glass microscope slides but there is nothing that says this must be the case.  This association is for scanners to inform them on the possible different formats of slides that can contain arrays.</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_ArrayGroup3"/>
        </column>
        <column name="ArrayGroup_DistanceUnit" type="@wid" required="false">
            <comment>Represents 1..1 association between ArrayGroup and DistanceUnit</comment>
            <comment>The unit of the measurement attributes.</comment>
            <foreignKey toColumn="WID" toTable="Unit" name="FK_ArrayGroup4"/>
        </column>
        <primaryKey column="WID" name="PK_ArrayGroup"/>
        <index name="ArrayGroup1" columns="DataSetWID"/>
        <index name="ArrayGroup2" columns="Identifier"/>
        <index name="ArrayGroup3" columns="Name"/>
        <index name="ArrayGroup4" columns="Barcode"/>
        <index name="ArrayGroup5" columns="ArraySpacingX"/>
        <index name="ArrayGroup6" columns="ArraySpacingY"/>
        <index name="ArrayGroup7" columns="NumArrays"/>
        <index name="ArrayGroup8" columns="OrientationMark"/>
        <index name="ArrayGroup9" columns="OrientationMarkPosition"/>
        <index name="ArrayGroup10" columns="Width"/>
        <index name="ArrayGroup11" columns="Length"/>
        <index name="ArrayGroup12" columns="ArrayGroup_SubstrateType"/>
        <index name="ArrayGroup13" columns="ArrayGroup_DistanceUnit"/>
    </table>
   <table type="object" name="ArrayManufacture">
        <comment>Represents MAGE Class ArrayManufacture</comment>
        <comment>Describes the process by which arrays are produced.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_ArrayManufacture1"/>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="ManufacturingDate" type="@varchar" length="255" required="false">
            <comment>MAGE attribute ArrayManufacture.manufacturingDate</comment>
            <comment>The date the arrays were manufactured</comment>
        </column>
        <column name="Tolerance" type="@real32" required="false">
            <comment>MAGE attribute ArrayManufacture.tolerance</comment>
            <comment>The allowable error of a feature printed to its intended position.</comment>
        </column>
        <primaryKey column="WID" name="PK_ArrayManufacture"/>
        <index name="ArrayManufacture1" columns="DataSetWID"/>
        <index name="ArrayManufacture2" columns="Identifier"/>
        <index name="ArrayManufacture3" columns="Name"/>
        <index name="ArrayManufacture4" columns="ManufacturingDate"/>
        <index name="ArrayManufacture5" columns="Tolerance"/>
    </table>
   <table type="object" name="ArrayManufactureDeviation">
        <comment>Represents MAGE Class ArrayManufactureDeviation</comment>
        <comment>Stores information of the potential difference between an array design and arrays that have been manufactured using that design (e.g. a tip failed to print several spots).</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_ArrayManufactureDeviation1"/>
        </column>
        <column name="Array_" type="@wid" required="false">
            <comment>Represents 1..n association between Array and ArrayManufactureDeviation</comment>
            <comment>Association to classes to describe deviations from the ArrayDesign.</comment>
            <foreignKey toColumn="WID" toTable="Array_" name="FK_ArrayManufactureDeviation2"/>
        </column>
        <primaryKey column="WID" name="PK_ArrayManufactureDeviation"/>
        <index name="ArrayManufactureDeviation1" columns="DataSetWID"/>
        <index name="ArrayManufactureDeviation2" columns="Array_"/>
    </table>
   <table type="object" name="FeatureDefect">
        <comment>Represents MAGE Class FeatureDefect</comment>
        <comment>Stores the defect information for a feature.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_FeatureDefect1"/>
        </column>
        <column name="ArrayManufactureDeviation" type="@wid" required="false">
            <comment>Represents 1..n association between ArrayManufactureDeviation and FeatureDefect</comment>
            <comment>Description on features who are manufactured in a different location than specified in the ArrayDesign.</comment>
            <foreignKey toColumn="WID" toTable="ArrayManufactureDeviation" name="FK_FeatureDefect2"/>
        </column>
        <column name="FeatureDefect_DefectType" type="@wid" required="false">
            <comment>Represents 1..1 association between FeatureDefect and OntologyEntry</comment>
            <comment>Indicates the type of defect (e.g. a missing feature or a moved feature).</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_FeatureDefect3"/>
        </column>
        <column name="FeatureDefect_PositionDelta" type="@wid" required="false">
            <comment>Represents 1..1 association between FeatureDefect and PositionDelta</comment>
            <comment>How the feature deviates in position from the ArrayDesign.</comment>
            <foreignKey toColumn="WID" toTable="PositionDelta" name="FK_FeatureDefect4"/>
        </column>
        <column name="Feature" type="@wid" required="false">
            <comment>Represents n..1 association between FeatureDefect and Feature</comment>
            <comment>The feature that was manufactured defectively.</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_FeatureDefect5"/>
        </column>
        <primaryKey column="WID" name="PK_FeatureDefect"/>
        <index name="FeatureDefect1" columns="DataSetWID"/>
        <index name="FeatureDefect2" columns="ArrayManufactureDeviation"/>
        <index name="FeatureDefect3" columns="FeatureDefect_DefectType"/>
        <index name="FeatureDefect4" columns="FeatureDefect_PositionDelta"/>
        <index name="FeatureDefect5" columns="Feature"/>
    </table>
   <table type="object" name="Fiducial">
        <comment>Represents MAGE Class Fiducial</comment>
        <comment>A marking on the surface of the array that can be used to identify the array's origin, the coordinates of which are the fiducial's centroid.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_Fiducial1"/>
        </column>
        <column name="ArrayGroup_Fiducials" type="@wid" required="false">
            <comment>Represents 1..n association between ArrayGroup and Fiducial</comment>
            <comment>Association to the marks on the Array for alignment for the scanner.</comment>
            <foreignKey toColumn="WID" toTable="ArrayGroup" name="FK_Fiducial3"/>
        </column>
        <column name="Fiducial_FiducialType" type="@wid" required="false">
            <comment>Represents 1..1 association between Fiducial and OntologyEntry</comment>
            <comment>A descriptive string that indicates the type of a fiducial (e.g. the chrome border on an Affymetrix array, a laser ablation mark).</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_Fiducial4"/>
        </column>
        <column name="Fiducial_DistanceUnit" type="@wid" required="false">
            <comment>Represents 1..1 association between Fiducial and DistanceUnit</comment>
            <comment>The units the fiducial is measured in.</comment>
            <foreignKey toColumn="WID" toTable="Unit" name="FK_Fiducial5"/>
        </column>
        <column name="Fiducial_Position" type="@wid" required="false">
            <comment>Represents 1..1 association between Fiducial and Position</comment>
            <comment>The position, relative to the upper left corner, of the fiducial</comment>
            <foreignKey toColumn="WID" toTable="Position_" name="FK_Fiducial6"/>
        </column>
        <primaryKey column="WID" name="PK_Fiducial"/>
        <index name="Fiducial1" columns="DataSetWID"/>
        <index name="Fiducial2" columns="ArrayGroup_Fiducials"/>
        <index name="Fiducial3" columns="Fiducial_FiducialType"/>
        <index name="Fiducial4" columns="Fiducial_DistanceUnit"/>
        <index name="Fiducial5" columns="Fiducial_Position"/>
    </table>
   <table type="object" name="ManufactureLIMS">
        <comment>Represents MAGE Class ManufactureLIMS</comment>
        <comment>Information on the physical production of arrays within the laboratory.</comment>
        <comment>Includes MAGE Class ManufactureLIMSBiomaterial</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_ManufactureLIMS1"/>
        </column>
        <column required="true" name="MAGEClass" length="100" type="@varchar">
            <comment>Discriminator column specifies type of object this row represents</comment>
        </column>
        <column name="ArrayManufacture_FeatureLIMSs" type="@wid" required="false">
            <comment>Represents 1..n association between ArrayManufacture and ManufactureLIMS</comment>
            <comment>Information on the manufacture of the features.</comment>
            <foreignKey toColumn="WID" toTable="ArrayManufacture" name="FK_ManufactureLIMS3"/>
        </column>
        <column name="Quality" type="@varchar" length="255" required="false">
            <comment>MAGE attribute ManufactureLIMS.quality</comment>
            <comment>A brief description of the quality of the array manufacture process.</comment>
        </column>
        <column name="Feature" type="@wid" required="false">
            <comment>Represents n..1 association between ManufactureLIMS and Feature</comment>
            <comment>The feature whose LIMS information is being described.</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_ManufactureLIMS4"/>
        </column>
        <column name="BioMaterial" type="@wid" required="false">
            <comment>Represents n..1 association between ManufactureLIMS and BioMaterial</comment>
            <comment>The BioMaterial used for the feature.</comment>
            <foreignKey toColumn="WID" toTable="BioSource" name="FK_ManufactureLIMS5"/>
        </column>
        <column name="ManufactureLIMS_IdentifierLIMS" type="@wid" required="false">
            <comment>Represents 1..1 association between ManufactureLIMS and DatabaseEntry</comment>
            <comment>Association to a LIMS data source for further information on the manufacturing process.</comment>
        </column>
        <column name="BioMaterialPlateIdentifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute ManufactureLIMSBiomaterial.bioMaterialPlateIdentifier</comment>
            <comment>The plate from which a biomaterial was obtained.</comment>
        </column>
        <column name="BioMaterialPlateRow" type="@varchar" length="255" required="false">
            <comment>MAGE attribute ManufactureLIMSBiomaterial.bioMaterialPlateRow</comment>
            <comment>The plate row from which a biomaterial was obtained.  Specified by a letter.</comment>
        </column>
        <column name="BioMaterialPlateCol" type="@varchar" length="255" required="false">
            <comment>MAGE attribute ManufactureLIMSBiomaterial.bioMaterialPlateCol</comment>
            <comment>The plate column from which a biomaterial was obtained.  Specified by a number.</comment>
        </column>
        <primaryKey column="WID" name="PK_ManufactureLIMS"/>
        <index name="ManufactureLIMS1" columns="DataSetWID"/>
        <index name="ManufactureLIMS2" columns="MAGEClass"/>
        <index name="ManufactureLIMS3" columns="ArrayManufacture_FeatureLIMSs"/>
        <index name="ManufactureLIMS4" columns="Quality"/>
        <index name="ManufactureLIMS5" columns="Feature"/>
        <index name="ManufactureLIMS6" columns="BioMaterial"/>
        <index name="ManufactureLIMS7" columns="ManufactureLIMS_IdentifierLIMS"/>
        <index name="ManufactureLIMS8" columns="BioMaterialPlateIdentifier"/>
        <index name="ManufactureLIMS9" columns="BioMaterialPlateRow"/>
        <index name="ManufactureLIMS10" columns="BioMaterialPlateCol"/>
    </table>
   <table type="object" name="PositionDelta">
        <comment>Represents MAGE Class PositionDelta</comment>
        <comment>The delta the feature was actually printed on the array from the position specified for the feature in the array design.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_PositionDelta1"/>
        </column>
        <column name="DeltaX" type="@real32" required="false">
            <comment>MAGE attribute PositionDelta.deltaX</comment>
            <comment>Deviation from the y coordinate of this feature's position.</comment>
        </column>
        <column name="DeltaY" type="@real32" required="false">
            <comment>MAGE attribute PositionDelta.deltaY</comment>
            <comment>Deviation from the y coordinate of this feature's position.</comment>
        </column>
        <column name="PositionDelta_DistanceUnit" type="@wid" required="false">
            <comment>Represents 1..1 association between PositionDelta and DistanceUnit</comment>
            <comment>The unit for the attributes.</comment>
            <foreignKey toColumn="WID" toTable="Unit" name="FK_PositionDelta2"/>
        </column>
        <primaryKey column="WID" name="PK_PositionDelta"/>
        <index name="PositionDelta1" columns="DataSetWID"/>
        <index name="PositionDelta2" columns="DeltaX"/>
        <index name="PositionDelta3" columns="DeltaY"/>
        <index name="PositionDelta4" columns="PositionDelta_DistanceUnit"/>
    </table>
   <table type="object" name="ZoneDefect">
        <comment>Represents MAGE Class ZoneDefect</comment>
        <comment>Stores the defect information for a zone.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_ZoneDefect1"/>
        </column>
        <column name="ArrayManufactureDeviation" type="@wid" required="false">
            <comment>Represents 1..n association between ArrayManufactureDeviation and ZoneDefect</comment>
            <comment>Descriptions of how a Zone has been printed differently than specified in the ArrayDesign.</comment>
            <foreignKey toColumn="WID" toTable="ArrayManufactureDeviation" name="FK_ZoneDefect2"/>
        </column>
        <column name="ZoneDefect_DefectType" type="@wid" required="false">
            <comment>Represents 1..1 association between ZoneDefect and OntologyEntry</comment>
            <comment>Indicates the type of defect (e.g. a missing zone or a moved zone).</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_ZoneDefect3"/>
        </column>
        <column name="ZoneDefect_PositionDelta" type="@wid" required="false">
            <comment>Represents 1..1 association between ZoneDefect and PositionDelta</comment>
            <comment>How the zone deviates in position from the ArrayDesign.</comment>
            <foreignKey toColumn="WID" toTable="PositionDelta" name="FK_ZoneDefect4"/>
        </column>
        <column name="Zone" type="@wid" required="false">
            <comment>Represents n..1 association between ZoneDefect and Zone</comment>
            <comment>Reference to the Zone that was misprinted.</comment>
            <foreignKey toColumn="WID" toTable="Zone" name="FK_ZoneDefect5"/>
        </column>
        <primaryKey column="WID" name="PK_ZoneDefect"/>
        <index name="ZoneDefect1" columns="DataSetWID"/>
        <index name="ZoneDefect2" columns="ArrayManufactureDeviation"/>
        <index name="ZoneDefect3" columns="ZoneDefect_DefectType"/>
        <index name="ZoneDefect4" columns="ZoneDefect_PositionDelta"/>
        <index name="ZoneDefect5" columns="Zone"/>
    </table>
   <table type="object" name="SeqFeatureLocation">
        <comment>Represents MAGE Class SeqFeatureLocation</comment>
        <comment>The location of the SeqFeature annotation.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_SeqFeatureLocation1"/>
        </column>
        <column name="SeqFeature_Regions" type="@wid" required="false">
            <comment>Represents 1..n association between SeqFeature and SeqFeatureLocation</comment>
            <comment>Association to classes that describe the location with the sequence of the SeqFeature.</comment>
            <foreignKey toColumn="WID" toTable="Feature" name="FK_SeqFeatureLocation2"/>
        </column>
        <column name="StrandType" type="@varchar" length="255" required="false">
            <comment>MAGE attribute SeqFeatureLocation.strandType</comment>
            <comment>Indicates the direction and/or type of the SeqFeature, i.e. whether it is in the 5' or 3' direction, is double stranded, etc.</comment>
        </column>
        <column name="SeqFeatureLocation_Subregions" type="@wid" required="false">
            <comment>Represents 1..n association between SeqFeatureLocation and SeqFeatureLocation</comment>
            <comment>Regions within the SeqFeature.</comment>
            <foreignKey toColumn="WID" toTable="SeqFeatureLocation" name="FK_SeqFeatureLocation3"/>
        </column>
        <column name="SeqFeatureLocation_Coordinate" type="@wid" required="false">
            <comment>Represents 1..1 association between SeqFeatureLocation and SequencePosition</comment>
            <comment>At which base pairs or amino acid this SeqFeature begins and ends.</comment>
            <foreignKey toColumn="WID" toTable="SequencePosition" name="FK_SeqFeatureLocation4"/>
        </column>
        <primaryKey column="WID" name="PK_SeqFeatureLocation"/>
        <index name="SeqFeatureLocation1" columns="DataSetWID"/>
        <index name="SeqFeatureLocation2" columns="SeqFeature_Regions"/>
        <index name="SeqFeatureLocation3" columns="StrandType"/>
        <index name="SeqFeatureLocation4" columns="SeqFeatureLocation_Subregions"/>
        <index name="SeqFeatureLocation5" columns="SeqFeatureLocation_Coordinate"/>
    </table>
   <table type="object" name="SequencePosition">
        <comment>Represents MAGE Class SequencePosition</comment>
        <comment>Designates the position of the Feature in its BioSequence.</comment>
        <comment>Includes MAGE Class CompositePosition</comment>
        <comment>Includes MAGE Class ReporterPosition</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_SequencePosition1"/>
        </column>
        <column required="true" name="MAGEClass" length="100" type="@varchar">
            <comment>Discriminator column specifies type of object this row represents</comment>
        </column>
        <column name="Start_" type="@int16" required="false">
            <comment>MAGE attribute SequencePosition.start</comment>
            <comment>The location of the base, for nucleotides, that the SeqFeature starts.</comment>
        </column>
        <column name="End" type="@int16" required="false">
            <comment>MAGE attribute SequencePosition.end</comment>
            <comment>The location of the base, for nucleotides, that the SeqFeature ends.</comment>
        </column>
        <column name="CompositeCompositeMap" type="@wid" required="false">
            <comment>Represents 1..n association between CompositeCompositeMap and CompositePosition</comment>
            <comment>Association to the CompositeSequences that compose this CompositeSequence and where those CompositeSequences occur.</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_SequencePosition2"/>
        </column>
        <column name="Composite" type="@wid" required="false">
            <comment>Represents n..1 association between CompositePosition and CompositeSequence</comment>
            <comment>A source CompositeSequence that is part of a target CompositeSequence</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_SequencePosition3"/>
        </column>
        <column name="ReporterCompositeMap" type="@wid" required="false">
            <comment>Represents 1..n association between ReporterCompositeMap and ReporterPosition</comment>
            <comment>Association to the reporters that compose this CompositeSequence and where those reporters occur.</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_SequencePosition4"/>
        </column>
        <column name="Reporter" type="@wid" required="false">
            <comment>Represents n..1 association between ReporterPosition and Reporter</comment>
            <comment>A reporter that comprises part of a CompositeSequence.</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_SequencePosition5"/>
        </column>
        <primaryKey column="WID" name="PK_SequencePosition"/>
        <index name="SequencePosition1" columns="DataSetWID"/>
        <index name="SequencePosition2" columns="MAGEClass"/>
        <index name="SequencePosition3" columns="Start_"/>
        <index name="SequencePosition4" columns="End"/>
        <index name="SequencePosition5" columns="CompositeCompositeMap"/>
        <index name="SequencePosition6" columns="Composite"/>
        <index name="SequencePosition7" columns="ReporterCompositeMap"/>
        <index name="SequencePosition8" columns="Reporter"/>
    </table>
   <table type="object" name="DesignElement">
        <comment>Represents MAGE Class DesignElement</comment>
        <comment>An element of an array.  This is generally of type feature but can be specified as reporters or compositeSequence for arrays that are abstracted from a physical array.</comment>
        <comment>Includes MAGE Class CompositeSequence</comment>
        <comment>Includes MAGE Class Feature</comment>
        <comment>Includes MAGE Class Reporter</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_DesignElement1"/>
        </column>
        <column required="true" name="MAGEClass" length="100" type="@varchar">
            <comment>Discriminator column specifies type of object this row represents</comment>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="FeatureGroup_Features" type="@wid" required="false">
            <comment>Represents 1..n association between FeatureGroup and Feature</comment>
            <comment>The features that belong to this group.</comment>
            <foreignKey toColumn="WID" toTable="DesignElementGroup" name="FK_DesignElement3"/>
        </column>
        <column name="DesignElement_ControlType" type="@wid" required="false">
            <comment>Represents 1..1 association between DesignElement and OntologyEntry</comment>
            <comment>If the design element represents a control, the type of control it is (normalization, deletion, negative, positive, etc.)</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_DesignElement4"/>
        </column>
        <column name="Feature_Position" type="@wid" required="false">
            <comment>Represents 1..1 association between Feature and Position</comment>
            <comment>The position of the feature on the array, relative to the top, left corner.</comment>
            <foreignKey toColumn="WID" toTable="Position_" name="FK_DesignElement5"/>
        </column>
        <column name="Zone" type="@wid" required="false">
            <comment>Represents n..1 association between Feature and Zone</comment>
            <comment>A reference to the zone this feature is in.</comment>
            <foreignKey toColumn="WID" toTable="Zone" name="FK_DesignElement6"/>
        </column>
        <column name="Feature_FeatureLocation" type="@wid" required="false">
            <comment>Represents 1..1 association between Feature and FeatureLocation</comment>
            <comment>Location of this feature relative to a grid.</comment>
            <foreignKey toColumn="WID" toTable="FeatureLocation" name="FK_DesignElement7"/>
        </column>
        <column name="FeatureGroup" type="@wid" required="false">
            <comment>Represents n..1 association between Feature and FeatureGroup</comment>
            <comment>The features that belong to this group.</comment>
            <foreignKey toColumn="WID" toTable="DesignElementGroup" name="FK_DesignElement8"/>
        </column>
        <column name="Reporter_WarningType" type="@wid" required="false">
            <comment>Represents 1..1 association between Reporter and OntologyEntry</comment>
            <comment>Similar to failType but indicates a warning rather than a failure.</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_DesignElement9"/>
        </column>
        <primaryKey column="WID" name="PK_DesignElement"/>
        <index name="DesignElement1" columns="DataSetWID"/>
        <index name="DesignElement2" columns="MAGEClass"/>
        <index name="DesignElement3" columns="Identifier"/>
        <index name="DesignElement4" columns="Name"/>
        <index name="DesignElement5" columns="FeatureGroup_Features"/>
        <index name="DesignElement6" columns="DesignElement_ControlType"/>
        <index name="DesignElement7" columns="Feature_Position"/>
        <index name="DesignElement8" columns="Zone"/>
        <index name="DesignElement9" columns="Feature_FeatureLocation"/>
        <index name="DesignElement10" columns="FeatureGroup"/>
        <index name="DesignElement11" columns="Reporter_WarningType"/>
    </table>
   <table type="object" name="FeatureInformation">
        <comment>Represents MAGE Class FeatureInformation</comment>
        <comment>As part of the map information, allows the association of one or more differences in the BioMaterial on a feature from the BioMaterial of the Reporter.  Useful for control purposes such as in Affymetrix probe pairs.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_FeatureInformation1"/>
        </column>
        <column name="Feature" type="@wid" required="false">
            <comment>Represents n..1 association between FeatureInformation and Feature</comment>
            <comment>The feature the FeatureInformation is supplying information for.</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_FeatureInformation2"/>
        </column>
        <column name="FeatureReporterMap" type="@wid" required="false">
            <comment>Represents 1..n association between FeatureReporterMap and FeatureInformation</comment>
            <comment>Typically, the features on an array that are manufactured with this reporter's BioSequence.</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_FeatureInformation3"/>
        </column>
        <primaryKey column="WID" name="PK_FeatureInformation"/>
        <index name="FeatureInformation1" columns="DataSetWID"/>
        <index name="FeatureInformation2" columns="Feature"/>
        <index name="FeatureInformation3" columns="FeatureReporterMap"/>
    </table>
   <table type="object" name="FeatureLocation">
        <comment>Represents MAGE Class FeatureLocation</comment>
        <comment>Specifies where a feature is located relative to a grid.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_FeatureLocation1"/>
        </column>
        <column name="Row_" type="@int16" required="false">
            <comment>MAGE attribute FeatureLocation.row</comment>
            <comment>row position in the Zone</comment>
        </column>
        <column name="Column_" type="@int16" required="false">
            <comment>MAGE attribute FeatureLocation.column</comment>
            <comment>column position in the Zone.</comment>
        </column>
        <primaryKey column="WID" name="PK_FeatureLocation"/>
        <index name="FeatureLocation1" columns="DataSetWID"/>
        <index name="FeatureLocation2" columns="Row_"/>
        <index name="FeatureLocation3" columns="Column_"/>
    </table>
   <table type="object" name="MismatchInformation">
        <comment>Represents MAGE Class MismatchInformation</comment>
        <comment>Describes how a reporter varies from its ReporterCharacteristics sequence(s) or how a Feature varies from its Reporter sequence.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_MismatchInformation1"/>
        </column>
        <column name="CompositePosition" type="@wid" required="false">
            <comment>Represents 1..n association between CompositePosition and MismatchInformation</comment>
            <comment>Differences in how the contained compositeSequence matches its target compositeSequence's sequence.</comment>
            <foreignKey toColumn="WID" toTable="SequencePosition" name="FK_MismatchInformation2"/>
        </column>
        <column name="FeatureInformation" type="@wid" required="false">
            <comment>Represents 1..n association between FeatureInformation and MismatchInformation</comment>
            <comment>Differences in how the feature matches the reporter's sequence, typical examples is the Affymetrix probe pair where one of the features is printed with a mismatch to the other feature's perfect match.</comment>
            <foreignKey toColumn="WID" toTable="FeatureInformation" name="FK_MismatchInformation3"/>
        </column>
        <column name="StartCoord" type="@int16" required="false">
            <comment>MAGE attribute MismatchInformation.startCoord</comment>
            <comment>Offset into the sequence that the mismatch occurs.</comment>
        </column>
        <column name="NewSequence" type="@varchar" length="255" required="false">
            <comment>MAGE attribute MismatchInformation.newSequence</comment>
            <comment>The sequence that replaces the specified sequence starting at start_coord.</comment>
        </column>
        <column name="ReplacedLength" type="@int16" required="false">
            <comment>MAGE attribute MismatchInformation.replacedLength</comment>
            <comment>Length of the original sequence that is replaced.  A deletion is specified when the length of the newSequence is less than the replacedLength.</comment>
        </column>
        <column name="ReporterPosition" type="@wid" required="false">
            <comment>Represents 1..n association between ReporterPosition and MismatchInformation</comment>
            <comment>Differences in how the reporter matches its compositeSequence's sequence.</comment>
            <foreignKey toColumn="WID" toTable="SequencePosition" name="FK_MismatchInformation4"/>
        </column>
        <primaryKey column="WID" name="PK_MismatchInformation"/>
        <index name="MismatchInformation1" columns="DataSetWID"/>
        <index name="MismatchInformation2" columns="CompositePosition"/>
        <index name="MismatchInformation3" columns="FeatureInformation"/>
        <index name="MismatchInformation4" columns="StartCoord"/>
        <index name="MismatchInformation5" columns="NewSequence"/>
        <index name="MismatchInformation6" columns="ReplacedLength"/>
        <index name="MismatchInformation7" columns="ReporterPosition"/>
    </table>
   <table type="object" name="Position_">
        <comment>Represents MAGE Class Position</comment>
        <comment>Specifies a position on an array.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_Position_1"/>
        </column>
        <column name="X" type="@real32" required="false">
            <comment>MAGE attribute Position.x</comment>
            <comment>The horizontal distance from the upper left corner of the array.</comment>
        </column>
        <column name="Y" type="@real32" required="false">
            <comment>MAGE attribute Position.y</comment>
            <comment>The vertical distance from the upper left corner of the array.</comment>
        </column>
        <column name="Position_DistanceUnit" type="@wid" required="false">
            <comment>Represents 1..1 association between Position and DistanceUnit</comment>
            <comment>The units of the x, y positions.</comment>
            <foreignKey toColumn="WID" toTable="Unit" name="FK_Position_2"/>
        </column>
        <primaryKey column="WID" name="PK_Position_"/>
        <index name="Position_1" columns="DataSetWID"/>
        <index name="Position_2" columns="X"/>
        <index name="Position_3" columns="Y"/>
        <index name="Position_4" columns="Position_DistanceUnit"/>
    </table>
   <table type="object" name="BioEvent">
        <comment>Represents MAGE Class BioEvent</comment>
        <comment>An abstract class to capture the concept of an event (either in the laboratory or a computational analysis).</comment>
        <comment>Includes MAGE Class CompositeCompositeMap</comment>
        <comment>Includes MAGE Class FeatureReporterMap</comment>
        <comment>Includes MAGE Class ReporterCompositeMap</comment>
        <comment>Includes MAGE Class Map</comment>
        <comment>Includes MAGE Class BioAssayMap</comment>
        <comment>Includes MAGE Class DesignElementMap</comment>
        <comment>Includes MAGE Class QuantitationTypeMap</comment>
        <comment>Includes MAGE Class Transformation</comment>
        <comment>Includes MAGE Class Treatment</comment>
        <comment>Includes MAGE Class BioAssayCreation</comment>
        <comment>Includes MAGE Class BioAssayTreatment</comment>
        <comment>Includes MAGE Class FeatureExtraction</comment>
        <comment>Includes MAGE Class Hybridization</comment>
        <comment>Includes MAGE Class ImageAcquisition</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_BioEvent1"/>
        </column>
        <column required="true" name="MAGEClass" length="100" type="@varchar">
            <comment>Discriminator column specifies type of object this row represents</comment>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="CompositeSequence" type="@wid" required="false">
            <comment>Represents n..1 association between CompositeCompositeMap and CompositeSequence</comment>
            <comment>A map to the compositeSequences that compose this CompositeSequence.</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_BioEvent3"/>
        </column>
        <column name="Reporter" type="@wid" required="false">
            <comment>Represents n..1 association between FeatureReporterMap and Reporter</comment>
            <comment>Associates features with their reporter.</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_BioEvent4"/>
        </column>
        <column name="CompositeSequence2" type="@wid" required="false">
            <comment>Represents n..1 association between ReporterCompositeMap and CompositeSequence</comment>
            <comment>A map to the reporters that compose this CompositeSequence.</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_BioEvent5"/>
        </column>
        <column name="BioAssayMapTarget" type="@wid" required="false">
            <comment>Represents n..1 association between BioAssayMap and DerivedBioAssay</comment>
            <comment>The DerivedBioAssay that is produced by the sources of the BioAssayMap.</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_BioEvent6"/>
        </column>
        <column name="TargetQuantitationType" type="@wid" required="false">
            <comment>Represents n..1 association between QuantitationTypeMap and QuantitationType</comment>
            <comment>The QuantitationType whose value will be produced from the values of the source QuantitationType according to the Protocol.</comment>
            <foreignKey toColumn="WID" toTable="QuantitationType" name="FK_BioEvent7"/>
        </column>
        <column name="DerivedBioAssayDataTarget" type="@wid" required="false">
            <comment>Represents n..1 association between Transformation and DerivedBioAssayData</comment>
            <comment>The association between the DerivedBioAssayData and the Transformation event that produced it.</comment>
            <foreignKey toColumn="WID" toTable="BioAssayData" name="FK_BioEvent8"/>
        </column>
        <column name="QuantitationTypeMapping" type="@wid" required="false">
            <comment>Represents 1..1 association between Transformation and QuantitationTypeMapping</comment>
            <comment>The collection of mappings for the QuantitationTypes.</comment>
            <foreignKey toColumn="WID" toTable="QuantitationTypeMapping" name="FK_BioEvent9"/>
        </column>
        <column name="DesignElementMapping" type="@wid" required="false">
            <comment>Represents 1..1 association between Transformation and DesignElementMapping</comment>
            <comment>The collection of mappings for the DesignElements.</comment>
            <foreignKey toColumn="WID" toTable="DesignElementMapping" name="FK_BioEvent10"/>
        </column>
        <column name="Transformation_BioAssayMapping" type="@wid" required="false">
            <comment>Represents 1..1 association between Transformation and BioAssayMapping</comment>
            <comment>The collection of mappings for the BioAssays.</comment>
            <foreignKey toColumn="WID" toTable="BioAssayMapping" name="FK_BioEvent11"/>
        </column>
        <column name="BioMaterial_Treatments" type="@wid" required="false">
            <comment>Represents 1..n association between BioMaterial and Treatment</comment>
            <comment>This association is one way from BioMaterial to Treatment.  From this a BioMaterial can discover the amount and type of BioMaterial that was part of the treatment that produced it.</comment>
            <foreignKey toColumn="WID" toTable="BioSource" name="FK_BioEvent12"/>
        </column>
        <column name="Order_" type="@int16" required="false">
            <comment>MAGE attribute Treatment.order</comment>
            <comment>The chronological order in which a treatment occurred (in relation to other treatments).  More than one treatment can have the same chronological order indicating that they happened (or were caused to happen) simultaneously.</comment>
        </column>
        <column name="Treatment_Action" type="@wid" required="false">
            <comment>Represents 1..1 association between Treatment and OntologyEntry</comment>
            <comment>The event that occurred (e.g. grow, wait, add, etc...).  The actions should be a recommended vocabulary</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_BioEvent13"/>
        </column>
        <column name="Treatment_ActionMeasurement" type="@wid" required="false">
            <comment>Represents 1..1 association between Treatment and Measurement</comment>
            <comment>Measures events like duration, centrifuge speed, etc.</comment>
            <foreignKey toColumn="WID" toTable="Measurement" name="FK_BioEvent14"/>
        </column>
        <column name="Array_" type="@wid" required="false">
            <comment>Represents n..1 association between BioAssayCreation and Array</comment>
            <comment>The array used in the BioAssayCreation event.</comment>
            <foreignKey toColumn="WID" toTable="Array_" name="FK_BioEvent15"/>
        </column>
        <column name="PhysicalBioAssayTarget" type="@wid" required="false">
            <comment>Represents n..1 association between BioAssayCreation and PhysicalBioAssay</comment>
            <comment>The association between the BioAssayCreation event (typically Hybridization) and the PhysicalBioAssay and its annotation of this event.</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_BioEvent16"/>
        </column>
        <column name="PhysicalBioAssay" type="@wid" required="false">
            <comment>Represents n..1 association between BioAssayTreatment and PhysicalBioAssay</comment>
            <comment>The set of treatments undergone by this PhysicalBioAssay.</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_BioEvent17"/>
        </column>
        <column name="Target" type="@wid" required="false">
            <comment>Represents n..1 association between BioAssayTreatment and PhysicalBioAssay</comment>
            <comment>The PhysicalBioAssay that was treated.</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_BioEvent18"/>
        </column>
        <column name="PhysicalBioAssaySource" type="@wid" required="false">
            <comment>Represents n..1 association between FeatureExtraction and PhysicalBioAssay</comment>
            <comment>The PhysicalBioAssay used in the FeatureExtraction event.</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_BioEvent19"/>
        </column>
        <column name="MeasuredBioAssayTarget" type="@wid" required="false">
            <comment>Represents n..1 association between FeatureExtraction and MeasuredBioAssay</comment>
            <comment>The association between the MeasuredBioAssay and the FeatureExtraction Event.</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_BioEvent20"/>
        </column>
        <column name="PhysicalBioAssay2" type="@wid" required="false">
            <comment>Represents 1..n association between PhysicalBioAssay and BioAssayTreatment</comment>
            <comment>The set of treatments undergone by this PhysicalBioAssay.</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_BioEvent21"/>
        </column>
        <primaryKey column="WID" name="PK_BioEvent"/>
        <index name="BioEvent1" columns="DataSetWID"/>
        <index name="BioEvent2" columns="MAGEClass"/>
        <index name="BioEvent3" columns="Identifier"/>
        <index name="BioEvent4" columns="Name"/>
        <index name="BioEvent5" columns="CompositeSequence"/>
        <index name="BioEvent6" columns="Reporter"/>
        <index name="BioEvent7" columns="CompositeSequence2"/>
        <index name="BioEvent8" columns="BioAssayMapTarget"/>
        <index name="BioEvent9" columns="TargetQuantitationType"/>
        <index name="BioEvent10" columns="DerivedBioAssayDataTarget"/>
        <index name="BioEvent11" columns="QuantitationTypeMapping"/>
        <index name="BioEvent12" columns="DesignElementMapping"/>
        <index name="BioEvent13" columns="Transformation_BioAssayMapping"/>
        <index name="BioEvent14" columns="BioMaterial_Treatments"/>
        <index name="BioEvent15" columns="Order_"/>
        <index name="BioEvent16" columns="Treatment_Action"/>
        <index name="BioEvent17" columns="Treatment_ActionMeasurement"/>
        <index name="BioEvent18" columns="Array_"/>
        <index name="BioEvent19" columns="PhysicalBioAssayTarget"/>
        <index name="BioEvent20" columns="PhysicalBioAssay"/>
        <index name="BioEvent21" columns="Target"/>
        <index name="BioEvent22" columns="PhysicalBioAssaySource"/>
        <index name="BioEvent23" columns="MeasuredBioAssayTarget"/>
        <index name="BioEvent24" columns="PhysicalBioAssay2"/>
    </table>
   <table type="object" name="BioAssayData">
        <comment>Represents MAGE Class BioAssayData</comment>
        <comment>Represents the dataset created when the BioAssays are created.  BioAssayData is the entry point to the values.  Because the actual values are represented by a different object, BioDataValues, which can be memory intensive, the annotation of the transformation can be gotten separate from the data.</comment>
        <comment>Includes MAGE Class DerivedBioAssayData</comment>
        <comment>Includes MAGE Class MeasuredBioAssayData</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_BioAssayData1"/>
        </column>
        <column required="true" name="MAGEClass" length="100" type="@varchar">
            <comment>Discriminator column specifies type of object this row represents</comment>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="BioAssayDimension" type="@wid" required="false">
            <comment>Represents n..1 association between BioAssayData and BioAssayDimension</comment>
            <comment>The BioAssays of the BioAssayData.</comment>
            <foreignKey toColumn="WID" toTable="BioAssayDimension" name="FK_BioAssayData3"/>
        </column>
        <column name="DesignElementDimension" type="@wid" required="false">
            <comment>Represents n..1 association between BioAssayData and DesignElementDimension</comment>
            <comment>The DesignElements of the BioAssayData.</comment>
            <foreignKey toColumn="WID" toTable="DesignElementDimension" name="FK_BioAssayData4"/>
        </column>
        <column name="QuantitationTypeDimension" type="@wid" required="false">
            <comment>Represents n..1 association between BioAssayData and QuantitationTypeDimension</comment>
            <comment>The QuantitationTypes of the BioAssayData.</comment>
            <foreignKey toColumn="WID" toTable="QuantitationTypeDimension" name="FK_BioAssayData5"/>
        </column>
        <column name="BioAssayData_BioDataValues" type="@wid" required="false">
            <comment>Represents 1..1 association between BioAssayData and BioDataValues</comment>
            <comment>The data values of the BioAssayData.</comment>
            <foreignKey toColumn="WID" toTable="BioDataValues" name="FK_BioAssayData6"/>
        </column>
        <column name="ProducerTransformation" type="@wid" required="false">
            <comment>Represents 1..1 association between DerivedBioAssayData and Transformation</comment>
            <comment>The association between the DerivedBioAssayData and the Transformation event that produced it.</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_BioAssayData7"/>
        </column>
        <primaryKey column="WID" name="PK_BioAssayData"/>
        <index name="BioAssayData1" columns="DataSetWID"/>
        <index name="BioAssayData2" columns="MAGEClass"/>
        <index name="BioAssayData3" columns="Identifier"/>
        <index name="BioAssayData4" columns="Name"/>
        <index name="BioAssayData5" columns="BioAssayDimension"/>
        <index name="BioAssayData6" columns="DesignElementDimension"/>
        <index name="BioAssayData7" columns="QuantitationTypeDimension"/>
        <index name="BioAssayData8" columns="BioAssayData_BioDataValues"/>
        <index name="BioAssayData9" columns="ProducerTransformation"/>
    </table>
   <table type="object" name="BioAssayDimension">
        <comment>Represents MAGE Class BioAssayDimension</comment>
        <comment>An ordered list of bioAssays.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_BioAssayDimension1"/>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <primaryKey column="WID" name="PK_BioAssayDimension"/>
        <index name="BioAssayDimension1" columns="DataSetWID"/>
        <index name="BioAssayDimension2" columns="Identifier"/>
        <index name="BioAssayDimension3" columns="Name"/>
    </table>
   <table type="object" name="BioAssayMapping">
        <comment>Represents MAGE Class BioAssayMapping</comment>
        <comment>Container of the mappings of the input BioAssay dimensions to the output BioAssay dimension.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_BioAssayMapping1"/>
        </column>
        <primaryKey column="WID" name="PK_BioAssayMapping"/>
        <index name="BioAssayMapping1" columns="DataSetWID"/>
    </table>
   <table type="object" name="BioAssayTuple">
        <comment>Represents MAGE Class BioAssayTuple</comment>
        <comment>Transformed container to specify a BioAssay and the Design Elements and their data for that BioAssay.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_BioAssayTuple1"/>
        </column>
        <column name="BioAssay" type="@wid" required="false">
            <comment>Represents n..1 association between BioAssayTuple and BioAssay</comment>
            <comment>The BioAssay associated with the value of the BioAssayDatum.</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_BioAssayTuple2"/>
        </column>
        <column name="BioDataTuples_BioAssayTuples" type="@wid" required="false">
            <comment>Represents 1..n association between BioDataTuples and BioAssayTuple</comment>
            <comment>Each BioAssayTuple contains the the Data for a BioAssay.</comment>
            <foreignKey toColumn="WID" toTable="BioDataValues" name="FK_BioAssayTuple3"/>
        </column>
        <primaryKey column="WID" name="PK_BioAssayTuple"/>
        <index name="BioAssayTuple1" columns="DataSetWID"/>
        <index name="BioAssayTuple2" columns="BioAssay"/>
        <index name="BioAssayTuple3" columns="BioDataTuples_BioAssayTuples"/>
    </table>
   <table type="object" name="BioDataValues">
        <comment>Represents MAGE Class BioDataValues</comment>
        <comment>The actual values for the BioAssayCube.</comment>
        <comment>Includes MAGE Class BioDataCube</comment>
        <comment>Includes MAGE Class BioDataTuples</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_BioDataValues1"/>
        </column>
        <column required="true" name="MAGEClass" length="100" type="@varchar">
            <comment>Discriminator column specifies type of object this row represents</comment>
        </column>
        <column name="Order_" type="@varchar" length="25" required="false">
            <comment>MAGE attribute BioDataCube.order</comment>
            <comment>The order to expect the dimension.  The enumeration uses the first letter of the three dimensions to represent the six possible orderings.</comment>
        </column>
        <column name="BioDataCube_DataInternal" type="@wid" required="false">
            <comment>Represents 1..1 association between BioDataCube and DataInternal</comment>
            <comment>Transformed class to associate white spaced delimited data to the BioAssayDataCube</comment>
            <foreignKey toColumn="WID" toTable="DataInternal" name="FK_BioDataValues2"/>
        </column>
        <column name="BioDataCube_DataExternal" type="@wid" required="false">
            <comment>Represents 1..1 association between BioDataCube and DataExternal</comment>
            <comment>Transformed class to associate external data to the BioAssayDataCube</comment>
            <foreignKey toColumn="WID" toTable="DataExternal" name="FK_BioDataValues3"/>
        </column>
        <primaryKey column="WID" name="PK_BioDataValues"/>
        <index name="BioDataValues1" columns="DataSetWID"/>
        <index name="BioDataValues2" columns="MAGEClass"/>
        <index name="BioDataValues3" columns="Order_"/>
        <index name="BioDataValues4" columns="BioDataCube_DataInternal"/>
        <index name="BioDataValues5" columns="BioDataCube_DataExternal"/>
    </table>
   <table type="object" name="DataExternal">
        <comment>Represents MAGE Class DataExternal</comment>
        <comment>Transformed class to associate external data to the BioAssayDataCube</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_DataExternal1"/>
        </column>
        <column name="DataFormat" type="@varchar" length="255" required="false">
            <comment>MAGE attribute DataExternal.dataFormat</comment>
            <comment>The format of the external file, whitespace delimited, tab delimited, netcdf, etc...</comment>
        </column>
        <column name="DataFormatInfoURI" type="@varchar" length="255" required="false">
            <comment>MAGE attribute DataExternal.dataFormatInfoURI</comment>
            <comment>Location for documentation on the data format</comment>
        </column>
        <column name="FilenameURI" type="@varchar" length="255" required="false">
            <comment>MAGE attribute DataExternal.filenameURI</comment>
            <comment>The name and location of the file containing the external data</comment>
        </column>
        <primaryKey column="WID" name="PK_DataExternal"/>
        <index name="DataExternal1" columns="DataSetWID"/>
        <index name="DataExternal2" columns="DataFormat"/>
        <index name="DataExternal3" columns="DataFormatInfoURI"/>
        <index name="DataExternal4" columns="FilenameURI"/>
    </table>
   <table type="object" name="DataInternal">
        <comment>Represents MAGE Class DataInternal</comment>
        <comment>Transformed class to associate whitespaced delimited data to the BioAssayDataCube</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_DataInternal1"/>
        </column>
        <primaryKey column="WID" name="PK_DataInternal"/>
        <index name="DataInternal1" columns="DataSetWID"/>
    </table>
   <table type="object" name="Datum">
        <comment>Represents MAGE Class Datum</comment>
        <comment>Transformed container to hold a value.  QuantitationType will determine the type of this value.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_Datum1"/>
        </column>
        <column name="Value" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Datum.value</comment>
            <comment>Value for the BioAssay, DesignElement and QuantitationType specified by the parent tuple elements.</comment>
        </column>
        <primaryKey column="WID" name="PK_Datum"/>
        <index name="Datum1" columns="DataSetWID"/>
        <index name="Datum2" columns="Value"/>
    </table>
   <table type="object" name="DesignElementDimension">
        <comment>Represents MAGE Class DesignElementDimension</comment>
        <comment>An ordered list of designElements. It will be realized as one of its three subclasses.</comment>
        <comment>Includes MAGE Class CompositeSequenceDimension</comment>
        <comment>Includes MAGE Class FeatureDimension</comment>
        <comment>Includes MAGE Class ReporterDimension</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_DesignElementDimension1"/>
        </column>
        <column required="true" name="MAGEClass" length="100" type="@varchar">
            <comment>Discriminator column specifies type of object this row represents</comment>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <primaryKey column="WID" name="PK_DesignElementDimension"/>
        <index name="DesignElementDimension1" columns="DataSetWID"/>
        <index name="DesignElementDimension2" columns="MAGEClass"/>
        <index name="DesignElementDimension3" columns="Identifier"/>
        <index name="DesignElementDimension4" columns="Name"/>
    </table>
   <table type="object" name="DesignElementMapping">
        <comment>Represents MAGE Class DesignElementMapping</comment>
        <comment>Container of the mappings of the input DesignElement dimensions to the output DesignElement dimension.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_DesignElementMapping1"/>
        </column>
        <primaryKey column="WID" name="PK_DesignElementMapping"/>
        <index name="DesignElementMapping1" columns="DataSetWID"/>
    </table>
   <table type="object" name="DesignElementTuple">
        <comment>Represents MAGE Class DesignElementTuple</comment>
        <comment>Transformed container to specify a DesignElement and QuantitationTypes for that Element.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_DesignElementTuple1"/>
        </column>
        <column name="BioAssayTuple" type="@wid" required="false">
            <comment>Represents 1..n association between BioAssayTuple and DesignElementTuple</comment>
            <comment>DesignElement with the QuantitationTypes and their values for this BioAssay</comment>
            <foreignKey toColumn="WID" toTable="BioAssayTuple" name="FK_DesignElementTuple2"/>
        </column>
        <column name="DesignElement" type="@wid" required="false">
            <comment>Represents n..1 association between DesignElementTuple and DesignElement</comment>
            <comment>The DesignElement associated with the value of the BioAssayDatum.</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_DesignElementTuple3"/>
        </column>
        <primaryKey column="WID" name="PK_DesignElementTuple"/>
        <index name="DesignElementTuple1" columns="DataSetWID"/>
        <index name="DesignElementTuple2" columns="BioAssayTuple"/>
        <index name="DesignElementTuple3" columns="DesignElement"/>
    </table>
   <table type="object" name="QuantitationTypeDimension">
        <comment>Represents MAGE Class QuantitationTypeDimension</comment>
        <comment>An ordered list of quantitationTypes.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_QuantitationTypeDimension1"/>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <primaryKey column="WID" name="PK_QuantitationTypeDimension"/>
        <index name="QuantitationTypeDimension1" columns="DataSetWID"/>
        <index name="QuantitationTypeDimension2" columns="Identifier"/>
        <index name="QuantitationTypeDimension3" columns="Name"/>
    </table>
   <table type="object" name="QuantitationTypeMapping">
        <comment>Represents MAGE Class QuantitationTypeMapping</comment>
        <comment>Container of the mappings of the input QuantitationType dimensions to the output QuantitationType dimension.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_QuantitationTypeMapping1"/>
        </column>
        <primaryKey column="WID" name="PK_QuantitationTypeMapping"/>
        <index name="QuantitationTypeMapping1" columns="DataSetWID"/>
    </table>
   <table type="object" name="QuantitationTypeTuple">
        <comment>Represents MAGE Class QuantitationTypeTuple</comment>
        <comment>Transformed container to specify a Quantitation Type and the value for that Type.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_QuantitationTypeTuple1"/>
        </column>
        <column name="DesignElementTuple" type="@wid" required="false">
            <comment>Represents 1..n association between DesignElementTuple and QuantitationTypeTuple</comment>
            <comment>A QuantitationType and the value associated with it</comment>
            <foreignKey toColumn="WID" toTable="DesignElementTuple" name="FK_QuantitationTypeTuple2"/>
        </column>
        <column name="QuantitationType" type="@wid" required="false">
            <comment>Represents n..1 association between QuantitationTypeTuple and QuantitationType</comment>
            <comment>The QuantitationType associated with the value of the BioAssayDatum.</comment>
            <foreignKey toColumn="WID" toTable="QuantitationType" name="FK_QuantitationTypeTuple3"/>
        </column>
        <column name="QuantitationTypeTuple_Datum" type="@wid" required="false">
            <comment>Represents 1..1 association between QuantitationTypeTuple and Datum</comment>
            <comment>The value to associate with the Quantitation Type.</comment>
            <foreignKey toColumn="WID" toTable="Datum" name="FK_QuantitationTypeTuple4"/>
        </column>
        <primaryKey column="WID" name="PK_QuantitationTypeTuple"/>
        <index name="QuantitationTypeTuple1" columns="DataSetWID"/>
        <index name="QuantitationTypeTuple2" columns="DesignElementTuple"/>
        <index name="QuantitationTypeTuple3" columns="QuantitationType"/>
        <index name="QuantitationTypeTuple4" columns="QuantitationTypeTuple_Datum"/>
    </table>
   <table type="object" name="BioMaterialMeasurement">
        <comment>Represents MAGE Class BioMaterialMeasurement</comment>
        <comment>A BioMaterialMeasurement is a pairing of a source BioMaterial and an amount (Measurement) of that BioMaterial.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_BioMaterialMeasurement1"/>
        </column>
        <column name="BioMaterial" type="@wid" required="false">
            <comment>Represents n..1 association between BioMaterialMeasurement and BioMaterial</comment>
            <comment>A source BioMaterial for a treatment.</comment>
            <foreignKey toColumn="WID" toTable="BioSource" name="FK_BioMaterialMeasurement2"/>
        </column>
        <column name="Measurement" type="@wid" required="false">
            <comment>Represents 1..1 association between BioMaterialMeasurement and Measurement</comment>
            <comment>The amount of the BioMaterial.</comment>
            <foreignKey toColumn="WID" toTable="Measurement" name="FK_BioMaterialMeasurement3"/>
        </column>
        <column name="Treatment" type="@wid" required="false">
            <comment>Represents 1..n association between Treatment and BioMaterialMeasurement</comment>
            <comment>The BioMaterials and the amounts used in the treatment</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_BioMaterialMeasurement4"/>
        </column>
        <column name="BioAssayCreation" type="@wid" required="false">
            <comment>Represents 1..n association between BioAssayCreation and BioMaterialMeasurement</comment>
            <comment>The BioSample and its amount used in the BioAssayCreation event.</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_BioMaterialMeasurement5"/>
        </column>
        <primaryKey column="WID" name="PK_BioMaterialMeasurement"/>
        <index name="BioMaterialMeasurement1" columns="DataSetWID"/>
        <index name="BioMaterialMeasurement2" columns="BioMaterial"/>
        <index name="BioMaterialMeasurement3" columns="Measurement"/>
        <index name="BioMaterialMeasurement4" columns="Treatment"/>
        <index name="BioMaterialMeasurement5" columns="BioAssayCreation"/>
    </table>
   <table type="object" name="CompoundMeasurement">
        <comment>Represents MAGE Class CompoundMeasurement</comment>
        <comment>A CompoundMeasurement is a pairing of a source Compound and an amount (Measurement) of that Compound.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_CompoundMeasurement1"/>
        </column>
        <column name="Compound_ComponentCompounds" type="@wid" required="false">
            <comment>Represents 1..n association between Compound and CompoundMeasurement</comment>
            <comment>The Compounds and their amounts used to create this Compound.</comment>
            <foreignKey toColumn="WID" toTable="Chemical" name="FK_CompoundMeasurement2"/>
        </column>
        <column name="Compound" type="@wid" required="false">
            <comment>Represents n..1 association between CompoundMeasurement and Compound</comment>
            <comment>A Compound to be used to create another Compound.</comment>
            <foreignKey toColumn="WID" toTable="Chemical" name="FK_CompoundMeasurement3"/>
        </column>
        <column name="Measurement" type="@wid" required="false">
            <comment>Represents 1..1 association between CompoundMeasurement and Measurement</comment>
            <comment>The amount of the Compound.</comment>
            <foreignKey toColumn="WID" toTable="Measurement" name="FK_CompoundMeasurement4"/>
        </column>
        <column name="Treatment_CompoundMeasurements" type="@wid" required="false">
            <comment>Represents 1..n association between Treatment and CompoundMeasurement</comment>
            <comment>The compounds and their amounts used in the treatment.</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_CompoundMeasurement5"/>
        </column>
        <primaryKey column="WID" name="PK_CompoundMeasurement"/>
        <index name="CompoundMeasurement1" columns="DataSetWID"/>
        <index name="CompoundMeasurement2" columns="Compound_ComponentCompounds"/>
        <index name="CompoundMeasurement3" columns="Compound"/>
        <index name="CompoundMeasurement4" columns="Measurement"/>
        <index name="CompoundMeasurement5" columns="Treatment_CompoundMeasurements"/>
    </table>
   <table type="object" name="BioAssay">
        <comment>Represents MAGE Class BioAssay</comment>
        <comment>An abstract class which represents both physical and computational groupings of arrays and biomaterials.</comment>
        <comment>Includes MAGE Class DerivedBioAssay</comment>
        <comment>Includes MAGE Class MeasuredBioAssay</comment>
        <comment>Includes MAGE Class PhysicalBioAssay</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_BioAssay1"/>
        </column>
        <column required="true" name="MAGEClass" length="100" type="@varchar">
            <comment>Discriminator column specifies type of object this row represents</comment>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="DerivedBioAssay_Type" type="@wid" required="false">
            <comment>Represents 1..1 association between DerivedBioAssay and OntologyEntry</comment>
            <comment>The derivation type, for instance collapsed spot replicate, ratio, averaged intensity, bioassay replicates, etc.</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_BioAssay3"/>
        </column>
        <column name="FeatureExtraction" type="@wid" required="false">
            <comment>Represents 1..1 association between MeasuredBioAssay and FeatureExtraction</comment>
            <comment>The association between the MeasuredBioAssay and the FeatureExtraction Event.</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_BioAssay4"/>
        </column>
        <column name="BioAssayCreation" type="@wid" required="false">
            <comment>Represents 1..1 association between PhysicalBioAssay and BioAssayCreation</comment>
            <comment>The association between the BioAssayCreation event (typically Hybridization) and the PhysicalBioAssay and its annotation of this event.</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_BioAssay5"/>
        </column>
        <primaryKey column="WID" name="PK_BioAssay"/>
        <index name="BioAssay1" columns="DataSetWID"/>
        <index name="BioAssay2" columns="MAGEClass"/>
        <index name="BioAssay3" columns="Identifier"/>
        <index name="BioAssay4" columns="Name"/>
        <index name="BioAssay5" columns="DerivedBioAssay_Type"/>
        <index name="BioAssay6" columns="FeatureExtraction"/>
        <index name="BioAssay7" columns="BioAssayCreation"/>
    </table>
   <table type="object" name="Channel">
        <comment>Represents MAGE Class Channel</comment>
        <comment>A channel represents an independent acquisition scheme for the ImageAcquisition event, typically a wavelength.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_Channel1"/>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <primaryKey column="WID" name="PK_Channel"/>
        <index name="Channel1" columns="DataSetWID"/>
        <index name="Channel2" columns="Identifier"/>
        <index name="Channel3" columns="Name"/>
    </table>
   <table type="object" name="Image">
        <comment>Represents MAGE Class Image</comment>
        <comment>An image is created by an imageAcquisition event, typically by scanning the hybridized array (the PhysicalBioAssay).</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_Image1"/>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="URI" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Image.URI</comment>
            <comment>The file location in which an image may be found.</comment>
        </column>
        <column name="Image_Format" type="@wid" required="false">
            <comment>Represents 1..1 association between Image and OntologyEntry</comment>
            <comment>The file format of the image typically a TIF or a JPEG.</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_Image3"/>
        </column>
        <column name="PhysicalBioAssay" type="@wid" required="false">
            <comment>Represents 1..n association between PhysicalBioAssay and Image</comment>
            <comment>The Images associated with this PhysicalBioAssay by ImageAcquisition.</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_Image4"/>
        </column>
        <primaryKey column="WID" name="PK_Image"/>
        <index name="Image1" columns="DataSetWID"/>
        <index name="Image2" columns="Identifier"/>
        <index name="Image3" columns="Name"/>
        <index name="Image4" columns="URI"/>
        <index name="Image5" columns="Image_Format"/>
        <index name="Image6" columns="PhysicalBioAssay"/>
    </table>
   <table type="object" name="BioAssayDataCluster">
        <comment>Represents MAGE Class BioAssayDataCluster</comment>
        <comment>A mathematical method of higher level analysis whereby BioAssayData are grouped together into nodes.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_BioAssayDataCluster1"/>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="ClusterBioAssayData" type="@wid" required="false">
            <comment>Represents n..1 association between BioAssayDataCluster and BioAssayData</comment>
            <comment>The BioAssayData whose values were used by the cluster algorithm.</comment>
            <foreignKey toColumn="WID" toTable="BioAssayData" name="FK_BioAssayDataCluster3"/>
        </column>
        <primaryKey column="WID" name="PK_BioAssayDataCluster"/>
        <index name="BioAssayDataCluster1" columns="DataSetWID"/>
        <index name="BioAssayDataCluster2" columns="Identifier"/>
        <index name="BioAssayDataCluster3" columns="Name"/>
        <index name="BioAssayDataCluster4" columns="ClusterBioAssayData"/>
    </table>
   <table type="object" name="Node">
        <comment>Represents MAGE Class Node</comment>
        <comment>An individual component of a clustering.  May contain other nodes.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_Node1"/>
        </column>
        <column name="BioAssayDataCluster_Nodes" type="@wid" required="false">
            <comment>Represents 1..n association between BioAssayDataCluster and Node</comment>
            <comment>The nodes of the cluster.</comment>
            <foreignKey toColumn="WID" toTable="BioAssayDataCluster" name="FK_Node3"/>
        </column>
        <column name="Node_Nodes" type="@wid" required="false">
            <comment>Represents 1..n association between Node and Node</comment>
            <comment>Nested nodes of the BioAssayDataCluster.</comment>
            <foreignKey toColumn="WID" toTable="Node" name="FK_Node4"/>
        </column>
        <primaryKey column="WID" name="PK_Node"/>
        <index name="Node1" columns="DataSetWID"/>
        <index name="Node2" columns="BioAssayDataCluster_Nodes"/>
        <index name="Node3" columns="Node_Nodes"/>
    </table>
   <table type="object" name="NodeContents">
        <comment>Represents MAGE Class NodeContents</comment>
        <comment>The contents of a node for any or all of the three Dimensions.  If a node only contained genes just the DesignElementDimension would be defined.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_NodeContents1"/>
        </column>
        <column name="Node_NodeContents" type="@wid" required="false">
            <comment>Represents 1..n association between Node and NodeContents</comment>
            <comment>The contents of the node, expressed as either a one, two or three dimensional object.</comment>
            <foreignKey toColumn="WID" toTable="Node" name="FK_NodeContents3"/>
        </column>
        <column name="BioAssayDimension" type="@wid" required="false">
            <comment>Represents n..1 association between NodeContents and BioAssayDimension</comment>
            <comment>The relevant BioAssays for this NodeContents from the BioAssayData.</comment>
            <foreignKey toColumn="WID" toTable="BioAssayDimension" name="FK_NodeContents4"/>
        </column>
        <column name="DesignElementDimension" type="@wid" required="false">
            <comment>Represents n..1 association between NodeContents and DesignElementDimension</comment>
            <comment>The relevant DesignElements for this NodeContents from the BioAssayData.</comment>
            <foreignKey toColumn="WID" toTable="DesignElementDimension" name="FK_NodeContents5"/>
        </column>
        <column name="QuantitationDimension" type="@wid" required="false">
            <comment>Represents n..1 association between NodeContents and QuantitationTypeDimension</comment>
            <comment>The relevant QuantitationTypes for this NodeContents from the BioAssayData.</comment>
            <foreignKey toColumn="WID" toTable="QuantitationTypeDimension" name="FK_NodeContents6"/>
        </column>
        <primaryKey column="WID" name="PK_NodeContents"/>
        <index name="NodeContents1" columns="DataSetWID"/>
        <index name="NodeContents2" columns="Node_NodeContents"/>
        <index name="NodeContents3" columns="BioAssayDimension"/>
        <index name="NodeContents4" columns="DesignElementDimension"/>
        <index name="NodeContents5" columns="QuantitationDimension"/>
    </table>
   <table type="object" name="NodeValue">
        <comment>Represents MAGE Class NodeValue</comment>
        <comment>A value associated with the Node that can rank it in relation to the other nodes produced by the clustering algorithm.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_NodeValue1"/>
        </column>
        <column name="Node_NodeValue" type="@wid" required="false">
            <comment>Represents 1..n association between Node and NodeValue</comment>
            <comment>Values or measurements for this node that may be produced by the clustering algorithm.  Typical are distance values for the nodes.</comment>
            <foreignKey toColumn="WID" toTable="Node" name="FK_NodeValue2"/>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute NodeValue.name</comment>
            <comment>The name for this value.</comment>
        </column>
        <column name="Value" type="@varchar" length="255" required="false">
            <comment>MAGE attribute NodeValue.value</comment>
            <comment>The value for this NodeValue.</comment>
        </column>
        <column name="NodeValue_Type" type="@wid" required="false">
            <comment>Represents 1..1 association between NodeValue and OntologyEntry</comment>
            <comment>The type of value, distance, etc.</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_NodeValue3"/>
        </column>
        <column name="NodeValue_Scale" type="@wid" required="false">
            <comment>Represents 1..1 association between NodeValue and OntologyEntry</comment>
            <comment>The scale (linear, log10, ln, etc.) of the value.</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_NodeValue4"/>
        </column>
        <column name="NodeValue_DataType" type="@wid" required="false">
            <comment>Represents 1..1 association between NodeValue and OntologyEntry</comment>
            <comment>The data type of the any element.</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_NodeValue5"/>
        </column>
        <primaryKey column="WID" name="PK_NodeValue"/>
        <index name="NodeValue1" columns="DataSetWID"/>
        <index name="NodeValue2" columns="Node_NodeValue"/>
        <index name="NodeValue3" columns="Name"/>
        <index name="NodeValue4" columns="Value"/>
        <index name="NodeValue5" columns="NodeValue_Type"/>
        <index name="NodeValue6" columns="NodeValue_Scale"/>
        <index name="NodeValue7" columns="NodeValue_DataType"/>
    </table>
   <table type="object" name="Measurement">
        <comment>Represents MAGE Class Measurement</comment>
        <comment>A Measurement is a quantity with a unit.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_Measurement1"/>
        </column>
        <column name="Type_" type="@varchar" length="25" required="false">
            <comment>MAGE attribute Measurement.type</comment>
            <comment>The type of measurement, for instance if the measurement is five feet, it can be either absolute (five feet tall) or change (five feet further along).</comment>
        </column>
        <column name="Value" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Measurement.value</comment>
            <comment>The value of the measurement.  kindCV (and otherKind) determine with Unit the datatype of value.</comment>
        </column>
        <column name="KindCV" type="@varchar" length="25" required="false">
            <comment>MAGE attribute Measurement.kindCV</comment>
            <comment>One of the enumeration values to determine the controlled vocabulary of the value.</comment>
        </column>
        <column name="OtherKind" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Measurement.otherKind</comment>
            <comment>Name of the controlled vocabulary if it isn't one of the Unit subclasses.</comment>
        </column>
        <column name="Measurement_Unit" type="@wid" required="false">
            <comment>Represents 1..1 association between Measurement and Unit</comment>
            <comment>The Unit associated with the Measurement.</comment>
            <foreignKey toColumn="WID" toTable="Unit" name="FK_Measurement2"/>
        </column>
        <primaryKey column="WID" name="PK_Measurement"/>
        <index name="Measurement1" columns="DataSetWID"/>
        <index name="Measurement2" columns="Type_"/>
        <index name="Measurement3" columns="Value"/>
        <index name="Measurement4" columns="KindCV"/>
        <index name="Measurement5" columns="OtherKind"/>
        <index name="Measurement6" columns="Measurement_Unit"/>
    </table>
   <table type="object" name="Unit">
        <comment>Represents MAGE Class Unit</comment>
        <comment>The unit is a strict enumeration of types.</comment>
        <comment>Includes MAGE Class ConcentrationUnit</comment>
        <comment>Includes MAGE Class DistanceUnit</comment>
        <comment>Includes MAGE Class MassUnit</comment>
        <comment>Includes MAGE Class QuantityUnit</comment>
        <comment>Includes MAGE Class TemperatureUnit</comment>
        <comment>Includes MAGE Class TimeUnit</comment>
        <comment>Includes MAGE Class VolumeUnit</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_Unit1"/>
        </column>
        <column required="true" name="MAGEClass" length="100" type="@varchar">
            <comment>Discriminator column specifies type of object this row represents</comment>
        </column>
        <column name="UnitName" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Unit.unitName</comment>
            <comment>The name of the unit.</comment>
        </column>
        <column name="UnitNameCV" type="@varchar" length="25" required="false">
            <comment>MAGE attribute ConcentrationUnit.unitNameCV</comment>
        </column>
        <column name="UnitNameCV2" type="@varchar" length="25" required="false">
            <comment>MAGE attribute DistanceUnit.unitNameCV</comment>
        </column>
        <column name="UnitNameCV3" type="@varchar" length="25" required="false">
            <comment>MAGE attribute MassUnit.unitNameCV</comment>
        </column>
        <column name="UnitNameCV4" type="@varchar" length="25" required="false">
            <comment>MAGE attribute QuantityUnit.unitNameCV</comment>
        </column>
        <column name="UnitNameCV5" type="@varchar" length="25" required="false">
            <comment>MAGE attribute TemperatureUnit.unitNameCV</comment>
        </column>
        <column name="UnitNameCV6" type="@varchar" length="25" required="false">
            <comment>MAGE attribute TimeUnit.unitNameCV</comment>
        </column>
        <column name="UnitNameCV7" type="@varchar" length="25" required="false">
            <comment>MAGE attribute VolumeUnit.unitNameCV</comment>
        </column>
        <primaryKey column="WID" name="PK_Unit"/>
        <index name="Unit1" columns="DataSetWID"/>
        <index name="Unit2" columns="MAGEClass"/>
        <index name="Unit3" columns="UnitName"/>
        <index name="Unit4" columns="UnitNameCV"/>
        <index name="Unit5" columns="UnitNameCV2"/>
        <index name="Unit6" columns="UnitNameCV3"/>
        <index name="Unit7" columns="UnitNameCV4"/>
        <index name="Unit8" columns="UnitNameCV5"/>
        <index name="Unit9" columns="UnitNameCV6"/>
        <index name="Unit10" columns="UnitNameCV7"/>
    </table>
   <table type="object" name="Parameter">
        <comment>Represents MAGE Class Parameter</comment>
        <comment>A Parameter is a replaceable value in a Parameterizable class.  Examples of Parameters include: scanning wavelength, laser power, centrifuge speed, multiplicative errors, the number of input nodes to a SOM, and PCR temperatures.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_Parameter1"/>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="Parameter_DefaultValue" type="@wid" required="false">
            <comment>Represents 1..1 association between Parameter and Measurement</comment>
            <comment>Allows the optional specification of a default values and the unit for the Parameter</comment>
            <foreignKey toColumn="WID" toTable="Measurement" name="FK_Parameter3"/>
        </column>
        <column name="Parameter_DataType" type="@wid" required="false">
            <comment>Represents 1..1 association between Parameter and OntologyEntry</comment>
            <comment>The type of data generated by the parameter i.e. Boolean, float, etc...</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_Parameter4"/>
        </column>
        <column name="Parameterizable_ParameterTypes" type="@wid" required="false">
            <comment>Represents 1..n association between Parameterizable and Parameter</comment>
            <comment>The description of the parameters for the Parameterizable class instance.</comment>
            <foreignKey toColumn="WID" toTable="Parameterizable" name="FK_Parameter5"/>
        </column>
        <primaryKey column="WID" name="PK_Parameter"/>
        <index name="Parameter1" columns="DataSetWID"/>
        <index name="Parameter2" columns="Identifier"/>
        <index name="Parameter3" columns="Name"/>
        <index name="Parameter4" columns="Parameter_DefaultValue"/>
        <index name="Parameter5" columns="Parameter_DataType"/>
        <index name="Parameter6" columns="Parameterizable_ParameterTypes"/>
    </table>
   <table type="object" name="ParameterValue">
        <comment>Represents MAGE Class ParameterValue</comment>
        <comment>The value of a Parameter.</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_ParameterValue1"/>
        </column>
        <column name="Value" type="@varchar" length="255" required="false">
            <comment>MAGE attribute ParameterValue.value</comment>
            <comment>The value of the parameter.  Will have the datatype of its associated Parameter.</comment>
        </column>
        <column name="ParameterType" type="@wid" required="false">
            <comment>Represents n..1 association between ParameterValue and Parameter</comment>
            <comment>The parameter this value is for.</comment>
            <foreignKey toColumn="WID" toTable="Parameter" name="FK_ParameterValue2"/>
        </column>
        <column name="ParameterizableApplication" type="@wid" required="false">
            <comment>Represents 1..n association between ParameterizableApplication and ParameterValue</comment>
            <comment>The parameter values for this Parameterizable Application.</comment>
            <foreignKey toColumn="WID" toTable="ParameterizableApplication" name="FK_ParameterValue3"/>
        </column>
        <primaryKey column="WID" name="PK_ParameterValue"/>
        <index name="ParameterValue1" columns="DataSetWID"/>
        <index name="ParameterValue2" columns="Value"/>
        <index name="ParameterValue3" columns="ParameterType"/>
        <index name="ParameterValue4" columns="ParameterizableApplication"/>
    </table>
   <table type="object" name="Parameterizable">
        <comment>Represents MAGE Class Parameterizable</comment>
        <comment>The Parameterizable interface encapsulates the association of Parameters with ParameterValues.</comment>
        <comment>Includes MAGE Class Hardware</comment>
        <comment>Includes MAGE Class Protocol</comment>
        <comment>Includes MAGE Class Software</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_Parameterizable1"/>
        </column>
        <column required="true" name="MAGEClass" length="100" type="@varchar">
            <comment>Discriminator column specifies type of object this row represents</comment>
        </column>
        <column name="Identifier" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.identifier</comment>
            <comment>An identifier is an unambiguous string that is unique within the scope (i.e. a document, a set of related documents, or a repository) of its use.</comment>
        </column>
        <column name="Name" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Identifiable.name</comment>
            <comment>The potentially ambiguous common identifier.</comment>
        </column>
        <column name="URI" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Parameterizable.URI</comment>
            <comment>Where an instantiated Parameterizable is located.</comment>
        </column>
        <column name="Model" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Hardware.model</comment>
            <comment>The model (number) of a piece of hardware.</comment>
        </column>
        <column name="Make" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Hardware.make</comment>
            <comment>The make of the Hardware (its manufacturer).</comment>
        </column>
        <column name="Hardware_Type" type="@wid" required="false">
            <comment>Represents 1..1 association between Hardware and OntologyEntry</comment>
            <comment>The type of a piece of Hardware.  Examples include: scanner, wash station...</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_Parameterizable3"/>
        </column>
        <column name="Text" type="@varchar" length="1000" required="false">
            <comment>MAGE attribute Protocol.text</comment>
            <comment>The text description of the Protocol.</comment>
        </column>
        <column name="Title" type="@varchar" length="255" required="false">
            <comment>MAGE attribute Protocol.title</comment>
            <comment>The title of the Protocol</comment>
        </column>
        <column name="Protocol_Type" type="@wid" required="false">
            <comment>Represents 1..1 association between Protocol and OntologyEntry</comment>
            <comment>The type of a Protocol,  a user should provide/use a recommended vocabulary.  Examples of types include:  RNA extraction, array washing, etc...</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_Parameterizable4"/>
        </column>
        <column name="Software_Type" type="@wid" required="false">
            <comment>Represents 1..1 association between Software and OntologyEntry</comment>
            <comment>The type of a piece of Software.  Examples include: feature extractor...</comment>
            <foreignKey toColumn="WID" toTable="Term" name="FK_Parameterizable5"/>
        </column>
        <column name="Hardware" type="@wid" required="false">
            <comment>Represents n..1 association between Software and Hardware</comment>
            <comment>Associates Hardware and Software together.</comment>
            <foreignKey toColumn="WID" toTable="Parameterizable" name="FK_Parameterizable6"/>
        </column>
        <primaryKey column="WID" name="PK_Parameterizable"/>
        <index name="Parameterizable1" columns="DataSetWID"/>
        <index name="Parameterizable2" columns="MAGEClass"/>
        <index name="Parameterizable3" columns="Identifier"/>
        <index name="Parameterizable4" columns="Name"/>
        <index name="Parameterizable5" columns="URI"/>
        <index name="Parameterizable6" columns="Model"/>
        <index name="Parameterizable7" columns="Make"/>
        <index name="Parameterizable8" columns="Hardware_Type"/>
        <index name="Parameterizable9" columns="Text"/>
        <index name="Parameterizable10" columns="Title"/>
        <index name="Parameterizable11" columns="Protocol_Type"/>
        <index name="Parameterizable12" columns="Software_Type"/>
        <index name="Parameterizable13" columns="Hardware"/>
    </table>
   <table type="object" name="ParameterizableApplication">
        <comment>Represents MAGE Class ParameterizableApplication</comment>
        <comment>The interface that is the use of a Parameterizable class.</comment>
        <comment>Includes MAGE Class HardwareApplication</comment>
        <comment>Includes MAGE Class ProtocolApplication</comment>
        <comment>Includes MAGE Class SoftwareApplication</comment>
        <column required="true" name="WID" type="@wid">
            <comment>Warehouse identifier for this entity</comment>
        </column>
        <column required="true" name="DataSetWID" type="@wid">
            <comment>Reference to the data set from which the entity came from</comment>
            <foreignKey toColumn="WID" toTable="DataSet" name="FK_ParameterizableApplicatio1"/>
        </column>
        <column required="true" name="MAGEClass" length="100" type="@varchar">
            <comment>Discriminator column specifies type of object this row represents</comment>
        </column>
        <column name="ArrayDesign" type="@wid" required="false">
            <comment>Represents 1..n association between ArrayDesign and ProtocolApplication</comment>
            <comment>Describes the application of any protocols, such as the methodology used to pick oligos, in the design of the array.</comment>
            <foreignKey toColumn="WID" toTable="ArrayDesign" name="FK_ParameterizableApplicatio3"/>
        </column>
        <column name="ArrayManufacture" type="@wid" required="false">
            <comment>Represents 1..n association between ArrayManufacture and ProtocolApplication</comment>
            <comment>The protocols followed in the manufacturing of the arrays.</comment>
            <foreignKey toColumn="WID" toTable="ArrayManufacture" name="FK_ParameterizableApplicatio4"/>
        </column>
        <column name="BioEvent_ProtocolApplications" type="@wid" required="false">
            <comment>Represents 1..n association between BioEvent and ProtocolApplication</comment>
            <comment>The applied protocols to the BioEvent.</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_ParameterizableApplicatio5"/>
        </column>
        <column name="SerialNumber" type="@varchar" length="255" required="false">
            <comment>MAGE attribute HardwareApplication.serialNumber</comment>
            <comment>Manufacturer's identifier for the Hardware.</comment>
        </column>
        <column name="Hardware" type="@wid" required="false">
            <comment>Represents n..1 association between HardwareApplication and Hardware</comment>
            <comment>The underlying hardware.</comment>
            <foreignKey toColumn="WID" toTable="Parameterizable" name="FK_ParameterizableApplicatio6"/>
        </column>
        <column name="ActivityDate" type="@varchar" length="255" required="false">
            <comment>MAGE attribute ProtocolApplication.activityDate</comment>
            <comment>When the protocol was applied.</comment>
        </column>
        <column name="ProtocolApplication" type="@wid" required="false">
            <comment>Represents 1..n association between ProtocolApplication and HardwareApplication</comment>
            <comment>The use of hardware for the application of the protocol.</comment>
            <foreignKey toColumn="WID" toTable="ParameterizableApplication"
                     name="FK_ParameterizableApplicatio7"/>
        </column>
        <column name="ProtocolApplication2" type="@wid" required="false">
            <comment>Represents 1..n association between ProtocolApplication and SoftwareApplication</comment>
            <comment>The use of software for the application of the protocol.</comment>
            <foreignKey toColumn="WID" toTable="ParameterizableApplication"
                     name="FK_ParameterizableApplicatio8"/>
        </column>
        <column name="Protocol" type="@wid" required="false">
            <comment>Represents n..1 association between ProtocolApplication and Protocol</comment>
            <comment>The protocol that is being used.</comment>
            <foreignKey toColumn="WID" toTable="Parameterizable" name="FK_ParameterizableApplicatio9"/>
        </column>
        <column name="Version" type="@varchar" length="255" required="false">
            <comment>MAGE attribute SoftwareApplication.version</comment>
            <comment>The version of the software.</comment>
        </column>
        <column name="ReleaseDate" type="@datetime" required="false">
            <comment>MAGE attribute SoftwareApplication.releaseDate</comment>
            <comment>When the software was released.</comment>
        </column>
        <column name="Software" type="@wid" required="false">
            <comment>Represents n..1 association between SoftwareApplication and Software</comment>
            <comment>The underlying software.</comment>
            <foreignKey toColumn="WID" toTable="Parameterizable" name="FK_ParameterizableApplicatio10"/>
        </column>
        <primaryKey column="WID" name="PK_ParameterizableApplication"/>
        <index name="ParameterizableApplication1" columns="DataSetWID"/>
        <index name="ParameterizableApplication2" columns="MAGEClass"/>
        <index name="ParameterizableApplication3" columns="ArrayDesign"/>
        <index name="ParameterizableApplication4" columns="ArrayManufacture"/>
        <index name="ParameterizableApplication5" columns="BioEvent_ProtocolApplications"/>
        <index name="ParameterizableApplication6" columns="SerialNumber"/>
        <index name="ParameterizableApplication7" columns="Hardware"/>
        <index name="ParameterizableApplication8" columns="ActivityDate"/>
        <index name="ParameterizableApplication9" columns="ProtocolApplication"/>
        <index name="ParameterizableApplication10" columns="ProtocolApplication2"/>
        <index name="ParameterizableApplication11" columns="Protocol"/>
        <index name="ParameterizableApplication12" columns="Version"/>
        <index name="ParameterizableApplication13" columns="ReleaseDate"/>
        <index name="ParameterizableApplication14" columns="Software"/>
    </table>
   <table type="associative" name="ArrayDesignWIDReporterGroupWID">
        <comment>Represents n..n association between ArrayDesign and ReporterGroup</comment>
        <comment>The grouping of like Reporter together.  If more than one technology type occurs on the array, such as the mixing of Cloned BioMaterial and Oligos, then there would be multiple ReporterGroups to segregate the technology types.</comment>
        <column required="true" name="ArrayDesignWID" type="@wid">
            <comment>Reference to ArrayDesign</comment>
            <foreignKey toColumn="WID" toTable="ArrayDesign" name="FK_ArrayDesignWIDReporterGro1"/>
        </column>
        <column required="true" name="ReporterGroupWID" type="@wid">
            <comment>Reference to ReporterGroup</comment>
            <foreignKey toColumn="WID" toTable="DesignElementGroup"
                     name="FK_ArrayDesignWIDReporterGro2"/>
        </column>
        <index name="ArrayDesignWIDReporterGrou1" columns="ArrayDesignWID"/>
        <index name="ArrayDesignWIDReporterGrou2" columns="ReporterGroupWID"/>
    </table>
   <table type="associative" name="ArrayDesignWIDCompositeGrpWID">
        <comment>Represents n..n association between ArrayDesign and CompositeGroup</comment>
        <comment>The grouping of like CompositeSequence together.  If more than one technology type occurs on the array, such as the mixing of Cloned BioMaterial and Oligos, then there would be multiple CompositeGroups to segregate the technology types.</comment>
        <column required="true" name="ArrayDesignWID" type="@wid">
            <comment>Reference to ArrayDesign</comment>
            <foreignKey toColumn="WID" toTable="ArrayDesign" name="FK_ArrayDesignWIDCompositeGr1"/>
        </column>
        <column required="true" name="CompositeGroupWID" type="@wid">
            <comment>Reference to CompositeGroup</comment>
            <foreignKey toColumn="WID" toTable="DesignElementGroup"
                     name="FK_ArrayDesignWIDCompositeGr2"/>
        </column>
        <index name="ArrayDesignWIDCompositeGr1" columns="ArrayDesignWID"/>
        <index name="ArrayDesignWIDCompositeGr2" columns="CompositeGroupWID"/>
    </table>
   <table type="associative" name="ArrayDesignWIDContactWID">
        <comment>Represents n..n association between ArrayDesign and Contact</comment>
        <comment>The primary contact for information on the array design</comment>
        <column required="true" name="ArrayDesignWID" type="@wid">
            <comment>Reference to ArrayDesign</comment>
            <foreignKey toColumn="WID" toTable="ArrayDesign" name="FK_ArrayDesignWIDContactWID1"/>
        </column>
        <column required="true" name="ContactWID" type="@wid">
            <comment>Reference to Contact</comment>
            <foreignKey toColumn="WID" toTable="Contact" name="FK_ArrayDesignWIDContactWID2"/>
        </column>
        <index name="ArrayDesignWIDContactWID1" columns="ArrayDesignWID"/>
        <index name="ArrayDesignWIDContactWID2" columns="ContactWID"/>
    </table>
   <table type="associative" name="ComposGrpWIDComposSequenceWID">
        <comment>Represents n..n association between CompositeGroup and CompositeSequence</comment>
        <comment>The compositeSequences that belong to this group.</comment>
        <column required="true" name="CompositeGroupWID" type="@wid">
            <comment>Reference to CompositeGroup</comment>
            <foreignKey toColumn="WID" toTable="DesignElementGroup"
                     name="FK_ComposGrpWIDComposSequenc1"/>
        </column>
        <column required="true" name="CompositeSequenceWID" type="@wid">
            <comment>Reference to CompositeSequence</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_ComposGrpWIDComposSequenc2"/>
        </column>
        <index name="ComposGrpWIDComposSequenc1" columns="CompositeGroupWID"/>
        <index name="ComposGrpWIDComposSequenc2" columns="CompositeSequenceWID"/>
    </table>
   <table type="associative" name="ReporterGroupWIDReporterWID">
        <comment>Represents n..n association between ReporterGroup and Reporter</comment>
        <comment>The reporters that belong to this group.</comment>
        <column required="true" name="ReporterGroupWID" type="@wid">
            <comment>Reference to ReporterGroup</comment>
            <foreignKey toColumn="WID" toTable="DesignElementGroup"
                     name="FK_ReporterGroupWIDReporterW1"/>
        </column>
        <column required="true" name="ReporterWID" type="@wid">
            <comment>Reference to Reporter</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_ReporterGroupWIDReporterW2"/>
        </column>
        <index name="ReporterGroupWIDReporte1" columns="ReporterGroupWID"/>
        <index name="ReporterGroupWIDReporte2" columns="ReporterWID"/>
    </table>
   <table type="associative" name="ExperimentWIDContactWID">
        <comment>Represents n..n association between Experiment and Contact</comment>
        <comment>The providers of the Experiment, its data and annotation.</comment>
        <column required="true" name="ExperimentWID" type="@wid">
            <comment>Reference to Experiment</comment>
            <foreignKey toColumn="WID" toTable="Experiment" name="FK_ExperimentWIDContactWID1"/>
        </column>
        <column required="true" name="ContactWID" type="@wid">
            <comment>Reference to Contact</comment>
            <foreignKey toColumn="WID" toTable="Contact" name="FK_ExperimentWIDContactWID2"/>
        </column>
        <index name="ExperimentWIDContactWID1" columns="ExperimentWID"/>
        <index name="ExperimentWIDContactWID2" columns="ContactWID"/>
    </table>
   <table type="associative" name="ExperimWIDBioAssayDataClustWID">
        <comment>Represents n..n association between Experiment and BioAssayDataCluster</comment>
        <comment>The results of analyzing the data, typically with a clustering algorithm.</comment>
        <column required="true" name="ExperimentWID" type="@wid">
            <comment>Reference to Experiment</comment>
            <foreignKey toColumn="WID" toTable="Experiment" name="FK_ExperimWIDBioAssayDataClu1"/>
        </column>
        <column required="true" name="BioAssayDataClusterWID" type="@wid">
            <comment>Reference to BioAssayDataCluster</comment>
            <foreignKey toColumn="WID" toTable="BioAssayDataCluster"
                     name="FK_ExperimWIDBioAssayDataClu2"/>
        </column>
        <index name="ExperimWIDBioAssayDataClus1" columns="ExperimentWID"/>
        <index name="ExperimWIDBioAssayDataClus2" columns="BioAssayDataClusterWID"/>
    </table>
   <table type="associative" name="ExperimentWIDBioAssayDataWID">
        <comment>Represents n..n association between Experiment and BioAssayData</comment>
        <comment>The collection of BioAssayDatas for this Experiment.</comment>
        <column required="true" name="ExperimentWID" type="@wid">
            <comment>Reference to Experiment</comment>
            <foreignKey toColumn="WID" toTable="Experiment" name="FK_ExperimentWIDBioAssayData1"/>
        </column>
        <column required="true" name="BioAssayDataWID" type="@wid">
            <comment>Reference to BioAssayData</comment>
            <foreignKey toColumn="WID" toTable="BioAssayData" name="FK_ExperimentWIDBioAssayData2"/>
        </column>
        <index name="ExperimentWIDBioAssayDat1" columns="ExperimentWID"/>
        <index name="ExperimentWIDBioAssayDat2" columns="BioAssayDataWID"/>
    </table>
   <table type="associative" name="ExperimentWIDBioAssayWID">
        <comment>Represents n..n association between Experiment and BioAssay</comment>
        <comment>The collection of BioAssays for this Experiment.</comment>
        <column required="true" name="ExperimentWID" type="@wid">
            <comment>Reference to Experiment</comment>
            <foreignKey toColumn="WID" toTable="Experiment" name="FK_ExperimentWIDBioAssayWID1"/>
        </column>
        <column required="true" name="BioAssayWID" type="@wid">
            <comment>Reference to BioAssay</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_ExperimentWIDBioAssayWID2"/>
        </column>
        <index name="ExperimentWIDBioAssayWID1" columns="ExperimentWID"/>
        <index name="ExperimentWIDBioAssayWID2" columns="BioAssayWID"/>
    </table>
   <table type="associative" name="ExperimentDesignWIDBioAssayWID">
        <comment>Represents n..n association between ExperimentDesign and BioAssay</comment>
        <comment>The organization of the BioAssays as specified by the ExperimentDesign (TimeCourse, Dosage, etc.)</comment>
        <column required="true" name="ExperimentDesignWID" type="@wid">
            <comment>Reference to ExperimentDesign</comment>
            <foreignKey toColumn="WID" toTable="ExperimentDesign" name="FK_ExperimentDesignWIDBioAss1"/>
        </column>
        <column required="true" name="BioAssayWID" type="@wid">
            <comment>Reference to BioAssay</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_ExperimentDesignWIDBioAss2"/>
        </column>
        <index name="ExperimentDesignWIDBioAssa1" columns="ExperimentDesignWID"/>
        <index name="ExperimentDesignWIDBioAssa2" columns="BioAssayWID"/>
    </table>
   <table type="associative" name="QuantTypeWIDConfidenceIndWID">
        <comment>Represents n..n association between QuantitationType and ConfidenceIndicator</comment>
        <comment>The association between a ConfidenceIndicator and the QuantitationType its is an indicator for.</comment>
        <column required="true" name="QuantitationTypeWID" type="@wid">
            <comment>Reference to QuantitationType</comment>
            <foreignKey toColumn="WID" toTable="QuantitationType" name="FK_QuantTypeWIDConfidenceInd1"/>
        </column>
        <column required="true" name="ConfidenceIndicatorWID" type="@wid">
            <comment>Reference to ConfidenceIndicator</comment>
            <foreignKey toColumn="WID" toTable="QuantitationType" name="FK_QuantTypeWIDConfidenceInd2"/>
        </column>
        <index name="QuantTypeWIDConfidenceIn1" columns="QuantitationTypeWID"/>
        <index name="QuantTypeWIDConfidenceIn2" columns="ConfidenceIndicatorWID"/>
    </table>
   <table type="associative" name="QuantTypeWIDQuantTypeMapWID">
        <comment>Represents n..n association between QuantitationType and QuantitationTypeMap</comment>
        <comment>The QuantitationType whose value will be produced from the values of the source QuantitationType according to the Protocol.</comment>
        <column required="true" name="QuantitationTypeWID" type="@wid">
            <comment>Reference to QuantitationType</comment>
            <foreignKey toColumn="WID" toTable="QuantitationType" name="FK_QuantTypeWIDQuantTypeMapW1"/>
        </column>
        <column required="true" name="QuantitationTypeMapWID" type="@wid">
            <comment>Reference to QuantitationTypeMap</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_QuantTypeWIDQuantTypeMapW2"/>
        </column>
        <index name="QuantTypeWIDQuantTypeMa1" columns="QuantitationTypeWID"/>
        <index name="QuantTypeWIDQuantTypeMa2" columns="QuantitationTypeMapWID"/>
    </table>
   <table type="associative" name="DatabaseWIDContactWID">
        <comment>Represents n..n association between Database and Contact</comment>
        <comment>Information on the contacts for the database</comment>
        <column required="true" name="DatabaseWID" type="@wid">
            <comment>Reference to Database</comment>
            <foreignKey toColumn="WID" toTable="Database_" name="FK_DatabaseWIDContactWID1"/>
        </column>
        <column required="true" name="ContactWID" type="@wid">
            <comment>Reference to Contact</comment>
            <foreignKey toColumn="WID" toTable="Contact" name="FK_DatabaseWIDContactWID2"/>
        </column>
        <index name="DatabaseWIDContactWID1" columns="DatabaseWID"/>
        <index name="DatabaseWIDContactWID2" columns="ContactWID"/>
    </table>
   <table type="associative" name="ArrayGroupWIDArrayWID">
        <comment>Represents n..n association between ArrayGroup and Array</comment>
        <comment>Association between an ArrayGroup and its Arrays, typically the ArrayGroup will represent a slide and the Arrays will be the manufactured so that they may be hybridized separately on that slide.</comment>
        <column required="true" name="ArrayGroupWID" type="@wid">
            <comment>Reference to ArrayGroup</comment>
            <foreignKey toColumn="WID" toTable="ArrayGroup" name="FK_ArrayGroupWIDArrayWID1"/>
        </column>
        <column required="true" name="ArrayWID" type="@wid">
            <comment>Reference to Array</comment>
            <foreignKey toColumn="WID" toTable="Array_" name="FK_ArrayGroupWIDArrayWID2"/>
        </column>
        <index name="ArrayGroupWIDArrayWID1" columns="ArrayGroupWID"/>
        <index name="ArrayGroupWIDArrayWID2" columns="ArrayWID"/>
    </table>
   <table type="associative" name="ArrayManufactureWIDArrayWID">
        <comment>Represents n..n association between ArrayManufacture and Array</comment>
        <comment>Association between the manufactured array and the information on that manufacture.</comment>
        <column required="true" name="ArrayManufactureWID" type="@wid">
            <comment>Reference to ArrayManufacture</comment>
            <foreignKey toColumn="WID" toTable="ArrayManufacture" name="FK_ArrayManufactureWIDArrayW1"/>
        </column>
        <column required="true" name="ArrayWID" type="@wid">
            <comment>Reference to Array</comment>
            <foreignKey toColumn="WID" toTable="Array_" name="FK_ArrayManufactureWIDArrayW2"/>
        </column>
        <index name="ArrayManufactureWIDArra1" columns="ArrayManufactureWID"/>
        <index name="ArrayManufactureWIDArra2" columns="ArrayWID"/>
    </table>
   <table type="associative" name="ArrayManufactureWIDContactWID">
        <comment>Represents n..n association between ArrayManufacture and Contact</comment>
        <comment>The person or organization to contact for information concerning the ArrayManufacture.</comment>
        <column required="true" name="ArrayManufactureWID" type="@wid">
            <comment>Reference to ArrayManufacture</comment>
            <foreignKey toColumn="WID" toTable="ArrayManufacture" name="FK_ArrayManufactureWIDContac1"/>
        </column>
        <column required="true" name="ContactWID" type="@wid">
            <comment>Reference to Contact</comment>
            <foreignKey toColumn="WID" toTable="Contact" name="FK_ArrayManufactureWIDContac2"/>
        </column>
        <index name="ArrayManufactureWIDContac1" columns="ArrayManufactureWID"/>
        <index name="ArrayManufactureWIDContac2" columns="ContactWID"/>
    </table>
   <table type="associative" name="CompositeSeqWIDBioSeqWID">
        <comment>Represents n..n association between CompositeSequence and BioSequence</comment>
        <comment>The annotation on the BioSequence this CompositeSequence represents.  Typically the sequences will be a Genes, Exons, or SpliceVariants.</comment>
        <column required="true" name="CompositeSequenceWID" type="@wid">
            <comment>Reference to CompositeSequence</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_CompositeSeqWIDBioSeqWID1"/>
        </column>
        <column required="true" name="BioSequenceWID" type="@wid">
            <comment>Reference to BioSequence</comment>
        </column>
        <index name="CompositeSeqWIDBioSeqWID1" columns="CompositeSequenceWID"/>
        <index name="CompositeSeqWIDBioSeqWID2" columns="BioSequenceWID"/>
    </table>
   <table type="associative" name="ComposSeqWIDRepoComposMapWID">
        <comment>Represents n..n association between CompositeSequence and ReporterCompositeMap</comment>
        <comment>A map to the reporters that compose this CompositeSequence.</comment>
        <column required="true" name="CompositeSequenceWID" type="@wid">
            <comment>Reference to CompositeSequence</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_ComposSeqWIDRepoComposMap1"/>
        </column>
        <column required="true" name="ReporterCompositeMapWID" type="@wid">
            <comment>Reference to ReporterCompositeMap</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_ComposSeqWIDRepoComposMap2"/>
        </column>
        <index name="ComposSeqWIDRepoComposMa1" columns="CompositeSequenceWID"/>
        <index name="ComposSeqWIDRepoComposMa2" columns="ReporterCompositeMapWID"/>
    </table>
   <table type="associative" name="ComposSeqWIDComposComposMapWID">
        <comment>Represents n..n association between CompositeSequence and CompositeCompositeMap</comment>
        <comment>A map to the compositeSequences that compose this CompositeSequence.</comment>
        <column required="true" name="CompositeSequenceWID" type="@wid">
            <comment>Reference to CompositeSequence</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_ComposSeqWIDComposComposM1"/>
        </column>
        <column required="true" name="CompositeCompositeMapWID" type="@wid">
            <comment>Reference to CompositeCompositeMap</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_ComposSeqWIDComposComposM2"/>
        </column>
        <index name="ComposSeqWIDComposComposMa1" columns="CompositeSequenceWID"/>
        <index name="ComposSeqWIDComposComposMa2" columns="CompositeCompositeMapWID"/>
    </table>
   <table type="associative" name="FeatureWIDFeatureWID">
        <comment>Represents n..n association between Feature and Feature</comment>
        <comment>Associates features with their control features.</comment>
        <column required="true" name="FeatureWID1" type="@wid">
            <comment>Reference to Feature</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_FeatureWIDFeatureWID1"/>
        </column>
        <column required="true" name="FeatureWID2" type="@wid">
            <comment>Reference to Feature</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_FeatureWIDFeatureWID2"/>
        </column>
        <index name="FeatureWIDFeatureWID1" columns="FeatureWID1"/>
        <index name="FeatureWIDFeatureWID2" columns="FeatureWID2"/>
    </table>
   <table type="associative" name="FeatureWIDFeatureWID2">
        <comment>Represents n..n association between Feature and Feature</comment>
        <comment>Associates features with their control features.</comment>
        <column required="true" name="FeatureWID1" type="@wid">
            <comment>Reference to Feature</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_FeatureWIDFeatureWID21"/>
        </column>
        <column required="true" name="FeatureWID2" type="@wid">
            <comment>Reference to Feature</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_FeatureWIDFeatureWID22"/>
        </column>
        <index name="FeatureWIDFeatureWID21" columns="FeatureWID1"/>
        <index name="FeatureWIDFeatureWID22" columns="FeatureWID2"/>
    </table>
   <table type="associative" name="ReporterWIDBioSequenceWID">
        <comment>Represents n..n association between Reporter and BioSequence</comment>
        <comment>The sequence annotation on the BioMaterial this reporter represents.  Typically the sequences will be an Oligo Sequence, Clone or PCR Primer.</comment>
        <column required="true" name="ReporterWID" type="@wid">
            <comment>Reference to Reporter</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_ReporterWIDBioSequenceWID1"/>
        </column>
        <column required="true" name="BioSequenceWID" type="@wid">
            <comment>Reference to BioSequence</comment>
        </column>
        <index name="ReporterWIDBioSequenceWID1" columns="ReporterWID"/>
        <index name="ReporterWIDBioSequenceWID2" columns="BioSequenceWID"/>
    </table>
   <table type="associative" name="ReporterWIDFeatureReporMapWID">
        <comment>Represents n..n association between Reporter and FeatureReporterMap</comment>
        <comment>Associates features with their reporter.</comment>
        <column required="true" name="ReporterWID" type="@wid">
            <comment>Reference to Reporter</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_ReporterWIDFeatureReporMa1"/>
        </column>
        <column required="true" name="FeatureReporterMapWID" type="@wid">
            <comment>Reference to FeatureReporterMap</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_ReporterWIDFeatureReporMa2"/>
        </column>
        <index name="ReporterWIDFeatureReporMa1" columns="ReporterWID"/>
        <index name="ReporterWIDFeatureReporMa2" columns="FeatureReporterMapWID"/>
    </table>
   <table type="associative" name="BioAssayDimensioWIDBioAssayWID">
        <comment>Represents n..n association between BioAssayDimension and BioAssay</comment>
        <comment>The BioAssays for this Dimension</comment>
        <column required="true" name="BioAssayDimensionWID" type="@wid">
            <comment>Reference to BioAssayDimension</comment>
            <foreignKey toColumn="WID" toTable="BioAssayDimension" name="FK_BioAssayDimensioWIDBioAss1"/>
        </column>
        <column required="true" name="BioAssayWID" type="@wid">
            <comment>Reference to BioAssay</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_BioAssayDimensioWIDBioAss2"/>
        </column>
        <index name="BioAssayDimensioWIDBioAssa1" columns="BioAssayDimensionWID"/>
        <index name="BioAssayDimensioWIDBioAssa2" columns="BioAssayWID"/>
    </table>
   <table type="associative" name="BioAssayMapWIDBioAssayWID">
        <comment>Represents n..n association between BioAssayMap and BioAssay</comment>
        <comment>The sources of the BioAssayMap that are used to produce a target DerivedBioAssay.</comment>
        <column required="true" name="BioAssayMapWID" type="@wid">
            <comment>Reference to BioAssayMap</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_BioAssayMapWIDBioAssayWID1"/>
        </column>
        <column required="true" name="BioAssayWID" type="@wid">
            <comment>Reference to BioAssay</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_BioAssayMapWIDBioAssayWID2"/>
        </column>
        <index name="BioAssayMapWIDBioAssayWID1" columns="BioAssayMapWID"/>
        <index name="BioAssayMapWIDBioAssayWID2" columns="BioAssayWID"/>
    </table>
   <table type="associative" name="BAssayMappingWIDBAssayMapWID">
        <comment>Represents n..n association between BioAssayMapping and BioAssayMap</comment>
        <comment>The maps for the BioAssays.</comment>
        <column required="true" name="BioAssayMappingWID" type="@wid">
            <comment>Reference to BioAssayMapping</comment>
            <foreignKey toColumn="WID" toTable="BioAssayMapping" name="FK_BAssayMappingWIDBAssayMap1"/>
        </column>
        <column required="true" name="BioAssayMapWID" type="@wid">
            <comment>Reference to BioAssayMap</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_BAssayMappingWIDBAssayMap2"/>
        </column>
        <index name="BAssayMappingWIDBAssayMa1" columns="BioAssayMappingWID"/>
        <index name="BAssayMappingWIDBAssayMa2" columns="BioAssayMapWID"/>
    </table>
   <table type="associative" name="ComposSeqDimensWIDComposSeqWID">
        <comment>Represents n..n association between CompositeSequenceDimension and CompositeSequence</comment>
        <comment>The CompositeSequences for this Dimension.</comment>
        <column required="true" name="CompositeSequenceDimensionWID" type="@wid">
            <comment>Reference to CompositeSequenceDimension</comment>
            <foreignKey toColumn="WID" toTable="DesignElementDimension"
                     name="FK_ComposSeqDimensWIDComposS1"/>
        </column>
        <column required="true" name="CompositeSequenceWID" type="@wid">
            <comment>Reference to CompositeSequence</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_ComposSeqDimensWIDComposS2"/>
        </column>
        <index name="ComposSeqDimensWIDComposSe1" columns="CompositeSequenceDimensionWID"/>
        <index name="ComposSeqDimensWIDComposSe2" columns="CompositeSequenceWID"/>
    </table>
   <table type="associative" name="DesnElMappingWIDDesnElMapWID">
        <comment>Represents n..n association between DesignElementMapping and DesignElementMap</comment>
        <comment>The maps for the DesignElements.</comment>
        <column required="true" name="DesignElementMappingWID" type="@wid">
            <comment>Reference to DesignElementMapping</comment>
            <foreignKey toColumn="WID" toTable="DesignElementMapping"
                     name="FK_DesnElMappingWIDDesnElMap1"/>
        </column>
        <column required="true" name="DesignElementMapWID" type="@wid">
            <comment>Reference to DesignElementMap</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_DesnElMappingWIDDesnElMap2"/>
        </column>
        <index name="DesnElMappingWIDDesnElMa1" columns="DesignElementMappingWID"/>
        <index name="DesnElMappingWIDDesnElMa2" columns="DesignElementMapWID"/>
    </table>
   <table type="associative" name="FeatureDimensionWIDFeatureWID">
        <comment>Represents n..n association between FeatureDimension and Feature</comment>
        <comment>The features for this dimension.</comment>
        <column required="true" name="FeatureDimensionWID" type="@wid">
            <comment>Reference to FeatureDimension</comment>
            <foreignKey toColumn="WID" toTable="DesignElementDimension"
                     name="FK_FeatureDimensionWIDFeatur1"/>
        </column>
        <column required="true" name="FeatureWID" type="@wid">
            <comment>Reference to Feature</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_FeatureDimensionWIDFeatur2"/>
        </column>
        <index name="FeatureDimensionWIDFeatur1" columns="FeatureDimensionWID"/>
        <index name="FeatureDimensionWIDFeatur2" columns="FeatureWID"/>
    </table>
   <table type="associative" name="QuantTypeDimensWIDQuantTypeWID">
        <comment>Represents n..n association between QuantitationTypeDimension and QuantitationType</comment>
        <comment>The QuantitationTypes for this Dimension.</comment>
        <column required="true" name="QuantitationTypeDimensionWID" type="@wid">
            <comment>Reference to QuantitationTypeDimension</comment>
            <foreignKey toColumn="WID" toTable="QuantitationTypeDimension"
                     name="FK_QuantTypeDimensWIDQuantTy1"/>
        </column>
        <column required="true" name="QuantitationTypeWID" type="@wid">
            <comment>Reference to QuantitationType</comment>
            <foreignKey toColumn="WID" toTable="QuantitationType" name="FK_QuantTypeDimensWIDQuantTy2"/>
        </column>
        <index name="QuantTypeDimensWIDQuantTyp1" columns="QuantitationTypeDimensionWID"/>
        <index name="QuantTypeDimensWIDQuantTyp2" columns="QuantitationTypeWID"/>
    </table>
   <table type="associative" name="QuantTypeMapWIDQuantTypeWID">
        <comment>Represents n..n association between QuantitationTypeMap and QuantitationType</comment>
        <comment>The QuantitationType sources for values for the transformation.</comment>
        <column required="true" name="QuantitationTypeMapWID" type="@wid">
            <comment>Reference to QuantitationTypeMap</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_QuantTypeMapWIDQuantTypeW1"/>
        </column>
        <column required="true" name="QuantitationTypeWID" type="@wid">
            <comment>Reference to QuantitationType</comment>
            <foreignKey toColumn="WID" toTable="QuantitationType" name="FK_QuantTypeMapWIDQuantTypeW2"/>
        </column>
        <index name="QuantTypeMapWIDQuantTyp1" columns="QuantitationTypeMapWID"/>
        <index name="QuantTypeMapWIDQuantTyp2" columns="QuantitationTypeWID"/>
    </table>
   <table type="associative" name="QuantTyMapWIDQuantTyMapWI">
        <comment>Represents n..n association between QuantitationTypeMapping and QuantitationTypeMap</comment>
        <comment>The maps for the QuantitationTypes.</comment>
        <column required="true" name="QuantitationTypeMappingWID" type="@wid">
            <comment>Reference to QuantitationTypeMapping</comment>
            <foreignKey toColumn="WID" toTable="QuantitationTypeMapping"
                     name="FK_QuantTyMapWIDQuantTyMapWI1"/>
        </column>
        <column required="true" name="QuantitationTypeMapWID" type="@wid">
            <comment>Reference to QuantitationTypeMap</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_QuantTyMapWIDQuantTyMapWI2"/>
        </column>
        <index name="QuantTyMapWIDQuantTyMapWI1" columns="QuantitationTypeMappingWID"/>
        <index name="QuantTyMapWIDQuantTyMapWI2" columns="QuantitationTypeMapWID"/>
    </table>
   <table type="associative" name="ReporterDimensWIDReporterWID">
        <comment>Represents n..n association between ReporterDimension and Reporter</comment>
        <comment>The reporters for this dimension.</comment>
        <column required="true" name="ReporterDimensionWID" type="@wid">
            <comment>Reference to ReporterDimension</comment>
            <foreignKey toColumn="WID" toTable="DesignElementDimension"
                     name="FK_ReporterDimensWIDReporter1"/>
        </column>
        <column required="true" name="ReporterWID" type="@wid">
            <comment>Reference to Reporter</comment>
            <foreignKey toColumn="WID" toTable="DesignElement" name="FK_ReporterDimensWIDReporter2"/>
        </column>
        <index name="ReporterDimensWIDReporte1" columns="ReporterDimensionWID"/>
        <index name="ReporterDimensWIDReporte2" columns="ReporterWID"/>
    </table>
   <table type="associative" name="TransformWIDBioAssayDataWID">
        <comment>Represents n..n association between Transformation and BioAssayData</comment>
        <comment>The BioAssayData sources that the Transformation event uses to produce the target DerivedBioAssayData.</comment>
        <column required="true" name="TransformationWID" type="@wid">
            <comment>Reference to Transformation</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_TransformWIDBioAssayDataW1"/>
        </column>
        <column required="true" name="BioAssayDataWID" type="@wid">
            <comment>Reference to BioAssayData</comment>
            <foreignKey toColumn="WID" toTable="BioAssayData" name="FK_TransformWIDBioAssayDataW2"/>
        </column>
        <index name="TransformWIDBioAssayDat1" columns="TransformationWID"/>
        <index name="TransformWIDBioAssayDat2" columns="BioAssayDataWID"/>
    </table>
   <table type="associative" name="BioSourceWIDContactWID">
        <comment>Represents n..n association between BioSource and Contact</comment>
        <comment>The BioSource's source is the provider of the biological material (a cell line, strain, etc...).  This could be the ATTC (American Tissue Type Collection).</comment>
        <column required="true" name="BioSourceWID" type="@wid">
            <comment>Reference to BioSource</comment>
            <foreignKey toColumn="WID" toTable="BioSource" name="FK_BioSourceWIDContactWID1"/>
        </column>
        <column required="true" name="ContactWID" type="@wid">
            <comment>Reference to Contact</comment>
            <foreignKey toColumn="WID" toTable="Contact" name="FK_BioSourceWIDContactWID2"/>
        </column>
        <index name="BioSourceWIDContactWID1" columns="BioSourceWID"/>
        <index name="BioSourceWIDContactWID2" columns="ContactWID"/>
    </table>
   <table type="associative" name="LabeledExtractWIDCompoundWID">
        <comment>Represents n..n association between LabeledExtract and Compound</comment>
        <comment>Compound used to label the extract.</comment>
        <column required="true" name="LabeledExtractWID" type="@wid">
            <comment>Reference to LabeledExtract</comment>
            <foreignKey toColumn="WID" toTable="BioSource" name="FK_LabeledExtractWIDCompound1"/>
        </column>
        <column required="true" name="CompoundWID" type="@wid">
            <comment>Reference to Compound</comment>
            <foreignKey toColumn="WID" toTable="Chemical" name="FK_LabeledExtractWIDCompound2"/>
        </column>
        <index name="LabeledExtractWIDCompoun1" columns="LabeledExtractWID"/>
        <index name="LabeledExtractWIDCompoun2" columns="CompoundWID"/>
    </table>
   <table type="associative" name="BioAssayWIDChannelWID">
        <comment>Represents n..n association between BioAssay and Channel</comment>
        <comment>Channels can be non-null for all subclasses.  For instance, collapsing across replicate features will create a DerivedBioAssay that will potentially reference channels.</comment>
        <column required="true" name="BioAssayWID" type="@wid">
            <comment>Reference to BioAssay</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_BioAssayWIDChannelWID1"/>
        </column>
        <column required="true" name="ChannelWID" type="@wid">
            <comment>Reference to Channel</comment>
            <foreignKey toColumn="WID" toTable="Channel" name="FK_BioAssayWIDChannelWID2"/>
        </column>
        <index name="BioAssayWIDChannelWID1" columns="BioAssayWID"/>
        <index name="BioAssayWIDChannelWID2" columns="ChannelWID"/>
    </table>
   <table type="associative" name="BioAssayWIDFactorValueWID">
        <comment>Represents n..n association between BioAssay and FactorValue</comment>
        <comment>The values that this BioAssay is associated with for the experiment.</comment>
        <column required="true" name="BioAssayWID" type="@wid">
            <comment>Reference to BioAssay</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_BioAssayWIDFactorValueWID1"/>
        </column>
        <column required="true" name="FactorValueWID" type="@wid">
            <comment>Reference to FactorValue</comment>
            <foreignKey toColumn="WID" toTable="FactorValue" name="FK_BioAssayWIDFactorValueWID2"/>
        </column>
        <index name="BioAssayWIDFactorValueWID1" columns="BioAssayWID"/>
        <index name="BioAssayWIDFactorValueWID2" columns="FactorValueWID"/>
    </table>
   <table type="associative" name="ChannelWIDCompoundWID">
        <comment>Represents n..n association between Channel and Compound</comment>
        <comment>The compound used to label the extract.</comment>
        <column required="true" name="ChannelWID" type="@wid">
            <comment>Reference to Channel</comment>
            <foreignKey toColumn="WID" toTable="Channel" name="FK_ChannelWIDCompoundWID1"/>
        </column>
        <column required="true" name="CompoundWID" type="@wid">
            <comment>Reference to Compound</comment>
            <foreignKey toColumn="WID" toTable="Chemical" name="FK_ChannelWIDCompoundWID2"/>
        </column>
        <index name="ChannelWIDCompoundWID1" columns="ChannelWID"/>
        <index name="ChannelWIDCompoundWID2" columns="CompoundWID"/>
    </table>
   <table type="associative" name="DerivBioAWIDDerivBioADataWID">
        <comment>Represents n..n association between DerivedBioAssay and DerivedBioAssayData</comment>
        <comment>The data associated with the DerivedBioAssay.</comment>
        <column required="true" name="DerivedBioAssayWID" type="@wid">
            <comment>Reference to DerivedBioAssay</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_DerivBioAWIDDerivBioAData1"/>
        </column>
        <column required="true" name="DerivedBioAssayDataWID" type="@wid">
            <comment>Reference to DerivedBioAssayData</comment>
            <foreignKey toColumn="WID" toTable="BioAssayData" name="FK_DerivBioAWIDDerivBioAData2"/>
        </column>
        <index name="DerivBioAWIDDerivBioADat1" columns="DerivedBioAssayWID"/>
        <index name="DerivBioAWIDDerivBioADat2" columns="DerivedBioAssayDataWID"/>
    </table>
   <table type="associative" name="DerivBioAssayWIDBioAssayMapWID">
        <comment>Represents n..n association between DerivedBioAssay and BioAssayMap</comment>
        <comment>The DerivedBioAssay that is produced by the sources of the BioAssayMap.</comment>
        <column required="true" name="DerivedBioAssayWID" type="@wid">
            <comment>Reference to DerivedBioAssay</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_DerivBioAssayWIDBioAssayM1"/>
        </column>
        <column required="true" name="BioAssayMapWID" type="@wid">
            <comment>Reference to BioAssayMap</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_DerivBioAssayWIDBioAssayM2"/>
        </column>
        <index name="DerivBioAssayWIDBioAssayMa1" columns="DerivedBioAssayWID"/>
        <index name="DerivBioAssayWIDBioAssayMa2" columns="BioAssayMapWID"/>
    </table>
   <table type="associative" name="ImageWIDChannelWID">
        <comment>Represents n..n association between Image and Channel</comment>
        <comment>The channels captured in this image.</comment>
        <column required="true" name="ImageWID" type="@wid">
            <comment>Reference to Image</comment>
            <foreignKey toColumn="WID" toTable="Image" name="FK_ImageWIDChannelWID1"/>
        </column>
        <column required="true" name="ChannelWID" type="@wid">
            <comment>Reference to Channel</comment>
            <foreignKey toColumn="WID" toTable="Channel" name="FK_ImageWIDChannelWID2"/>
        </column>
        <index name="ImageWIDChannelWID1" columns="ImageWID"/>
        <index name="ImageWIDChannelWID2" columns="ChannelWID"/>
    </table>
   <table type="associative" name="ImageAcquisitionWIDImageWID">
        <comment>Represents n..n association between ImageAcquisition and Image</comment>
        <comment>The images produced by the ImageAcquisition event.</comment>
        <column required="true" name="ImageAcquisitionWID" type="@wid">
            <comment>Reference to ImageAcquisition</comment>
            <foreignKey toColumn="WID" toTable="BioEvent" name="FK_ImageAcquisitionWIDImageW1"/>
        </column>
        <column required="true" name="ImageWID" type="@wid">
            <comment>Reference to Image</comment>
            <foreignKey toColumn="WID" toTable="Image" name="FK_ImageAcquisitionWIDImageW2"/>
        </column>
        <index name="ImageAcquisitionWIDImag1" columns="ImageAcquisitionWID"/>
        <index name="ImageAcquisitionWIDImag2" columns="ImageWID"/>
    </table>
   <table type="associative" name="MeasBAssayWIDMeasBAssayDataWID">
        <comment>Represents n..n association between MeasuredBioAssay and MeasuredBioAssayData</comment>
        <comment>The data associated with the MeasuredBioAssay.</comment>
        <column required="true" name="MeasuredBioAssayWID" type="@wid">
            <comment>Reference to MeasuredBioAssay</comment>
            <foreignKey toColumn="WID" toTable="BioAssay" name="FK_MeasBAssayWIDMeasBAssayDa1"/>
        </column>
        <column required="true" name="MeasuredBioAssayDataWID" type="@wid">
            <comment>Reference to MeasuredBioAssayData</comment>
            <foreignKey toColumn="WID" toTable="BioAssayData" name="FK_MeasBAssayWIDMeasBAssayDa2"/>
        </column>
        <index name="MeasBAssayWIDMeasBAssayDat1" columns="MeasuredBioAssayWID"/>
        <index name="MeasBAssayWIDMeasBAssayDat2" columns="MeasuredBioAssayDataWID"/>
    </table>
   <table type="associative" name="HardwareWIDSoftwareWID">
        <comment>Represents n..n association between Hardware and Software</comment>
        <comment>Associates Hardware and Software together.</comment>
        <column required="true" name="HardwareWID" type="@wid">
            <comment>Reference to Hardware</comment>
            <foreignKey toColumn="WID" toTable="Parameterizable" name="FK_HardwareWIDSoftwareWID1"/>
        </column>
        <column required="true" name="SoftwareWID" type="@wid">
            <comment>Reference to Software</comment>
            <foreignKey toColumn="WID" toTable="Parameterizable" name="FK_HardwareWIDSoftwareWID2"/>
        </column>
        <index name="HardwareWIDSoftwareWID1" columns="HardwareWID"/>
        <index name="HardwareWIDSoftwareWID2" columns="SoftwareWID"/>
    </table>
   <table type="associative" name="HardwareWIDContactWID">
        <comment>Represents n..n association between Hardware and Contact</comment>
        <comment>Contact for information on the Hardware.</comment>
        <column required="true" name="HardwareWID" type="@wid">
            <comment>Reference to Hardware</comment>
            <foreignKey toColumn="WID" toTable="Parameterizable" name="FK_HardwareWIDContactWID1"/>
        </column>
        <column required="true" name="ContactWID" type="@wid">
            <comment>Reference to Contact</comment>
            <foreignKey toColumn="WID" toTable="Contact" name="FK_HardwareWIDContactWID2"/>
        </column>
        <index name="HardwareWIDContactWID1" columns="HardwareWID"/>
        <index name="HardwareWIDContactWID2" columns="ContactWID"/>
    </table>
   <table type="associative" name="ProtocolWIDHardwareWID">
        <comment>Represents n..n association between Protocol and Hardware</comment>
        <comment>Hardware used by this protocol.</comment>
        <column required="true" name="ProtocolWID" type="@wid">
            <comment>Reference to Protocol</comment>
            <foreignKey toColumn="WID" toTable="Parameterizable" name="FK_ProtocolWIDHardwareWID1"/>
        </column>
        <column required="true" name="HardwareWID" type="@wid">
            <comment>Reference to Hardware</comment>
            <foreignKey toColumn="WID" toTable="Parameterizable" name="FK_ProtocolWIDHardwareWID2"/>
        </column>
        <index name="ProtocolWIDHardwareWID1" columns="ProtocolWID"/>
        <index name="ProtocolWIDHardwareWID2" columns="HardwareWID"/>
    </table>
   <table type="associative" name="ProtocolWIDSoftwareWID">
        <comment>Represents n..n association between Protocol and Software</comment>
        <comment>Software used by this Protocol.</comment>
        <column required="true" name="ProtocolWID" type="@wid">
            <comment>Reference to Protocol</comment>
            <foreignKey toColumn="WID" toTable="Parameterizable" name="FK_ProtocolWIDSoftwareWID1"/>
        </column>
        <column required="true" name="SoftwareWID" type="@wid">
            <comment>Reference to Software</comment>
            <foreignKey toColumn="WID" toTable="Parameterizable" name="FK_ProtocolWIDSoftwareWID2"/>
        </column>
        <index name="ProtocolWIDSoftwareWID1" columns="ProtocolWID"/>
        <index name="ProtocolWIDSoftwareWID2" columns="SoftwareWID"/>
    </table>
   <table type="associative" name="ProtocolApplWIDPersonWID">
        <comment>Represents n..n association between ProtocolApplication and Person</comment>
        <comment>The people who performed the protocol.</comment>
        <column required="true" name="ProtocolApplicationWID" type="@wid">
            <comment>Reference to ProtocolApplication</comment>
            <foreignKey toColumn="WID" toTable="ParameterizableApplication"
                     name="FK_ProtocolApplWIDPersonWID1"/>
        </column>
        <column required="true" name="PersonWID" type="@wid">
            <comment>Reference to Person</comment>
            <foreignKey toColumn="WID" toTable="Contact" name="FK_ProtocolApplWIDPersonWID2"/>
        </column>
        <index name="ProtocolApplWIDPersonWID1" columns="ProtocolApplicationWID"/>
        <index name="ProtocolApplWIDPersonWID2" columns="PersonWID"/>
    </table>
   <table type="associative" name="SoftwareWIDSoftwareWID">
        <comment>Represents n..n association between Software and Software</comment>
        <comment>Software packages this software uses, i.e. operating system, 3rd party software packages, etc.</comment>
        <column required="true" name="SoftwareWID1" type="@wid">
            <comment>Reference to Software</comment>
            <foreignKey toColumn="WID" toTable="Parameterizable" name="FK_SoftwareWIDSoftwareWID1"/>
        </column>
        <column required="true" name="SoftwareWID2" type="@wid">
            <comment>Reference to Software</comment>
            <foreignKey toColumn="WID" toTable="Parameterizable" name="FK_SoftwareWIDSoftwareWID2"/>
        </column>
        <index name="SoftwareWIDSoftwareWID1" columns="SoftwareWID1"/>
        <index name="SoftwareWIDSoftwareWID2" columns="SoftwareWID2"/>
    </table>
   <table type="associative" name="SoftwareWIDContactWID">
        <comment>Represents n..n association between Software and Contact</comment>
        <comment>Contact for information on the software.</comment>
        <column required="true" name="SoftwareWID" type="@wid">
            <comment>Reference to Software</comment>
            <foreignKey toColumn="WID" toTable="Parameterizable" name="FK_SoftwareWIDContactWID1"/>
        </column>
        <column required="true" name="ContactWID" type="@wid">
            <comment>Reference to Contact</comment>
            <foreignKey toColumn="WID" toTable="Contact" name="FK_SoftwareWIDContactWID2"/>
        </column>
        <index name="SoftwareWIDContactWID1" columns="SoftwareWID"/>
        <index name="SoftwareWIDContactWID2" columns="ContactWID"/>
    </table>
</schema>