<!--
	MAGE-ML.dtd
	
	URLs: http://schema.omg.org/lsr/gene_expression/1.1/MAGE-ML.dtd
	      http://mged.sourceforge.net/dtd/1.1/MAGE-ML.dtd
	
	(c) Copyright 2001 by
	EMBL-EBI (European Bioinformatics Institute)
	Rosetta Inpharmatics

	The organizations listed above hereby grant a royalty-free license to the 
	Object Management Group, Inc. (OMG) for world-wide distribution of this document 
	or any derivative works thereof, so long as the OMG reproduces the copyright 
	notices and the below paragraphs on all distributed copies.

	The material in this document is submitted to the OMG for evaluation.  
	Submission of this document does not represent a commitment to implement any portion 
	of this specification in the products of the submitters.
	WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE, THE COMPANIES 
	LISTED ABOVE MAKE NO WARRANTY OF ANY KIND WITH REGARD TO THIS MATERIAL INCLUDING 
	BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
	PARTICULAR PURPOSE.  The companies listed above shall not be liable for errors 
	contained herein or for incidental or consequential damages in connection with the 
	furnishing, performance or use of this material.  The information contained in this 
	document is subject to change without notice.
	This document contains information, which is protected by copyright.  
	All Rights Reserved.  
	Except as otherwise provided herein, no part of this work may be reproduced or used 
	in any form or by any means graphic, electronic, or mechanical, including photocopying, 
	recording, taping, or information storage and retrieval systems without the permission 
	of one of the copyright owners.  All copies of this document must include the copyright 
	and other information contained on this page.

	The copyright owners grant member companies of the OMG permission to make a limited 
	number of copies of this document (up to fifty copies) for their internal use as part 
	of the OMG evaluation process.

	RESTRICTED RIGHTS LEGEND.  Use, duplication, or disclosure by government is subject to 
	restrictions as set forth in subdivision (c) (1) (ii) of the Right in Technical Data 
	and Computer Software Clause at DFARS 252.227.7013.

	CORBA, OMG and Object Request Broker are trademarks of Object Management Group.
-->
<!--
    Entities for Extendable
    
    Abstract class that specifies for subclasses an association to 
    NameValueTypes.  These can be used, for instance, to specify 
    proprietary properties and in-house processing hints.
    
    Associations
        propertySets: Allows specification of name/value pairs.  Meant 
    to primarily help in-house, pipeline processing of instances by 
    providing a place for values that aren't part of the specification 
    proper.
-->
<!ENTITY % Extendable_content "PropertySets_assnlist?" >
<!ENTITY % Extendable_attrs "" >

<!--
    Entities for Describable
    
    Abstract class that allows subclasses to inherit the association to 
    Description, for detailed annotations such as Ontology entries and 
    Database references, the association to Audit, for tracking changes, 
    and the association to Security for indicating permissions.
    
    Associations
        Inherites associations from base class Extendable.
    
        descriptions: Free hand text descriptions.  Makes available the 
    associations of Description to an instance of Describable.
    
        auditTrail: A list of Audit instances that track changes to the 
    instance of Describable.
    
        security: Information on the security for the instance of the 
    class.
    
    Attributes
        Inherites attributes from base class Extendable.
-->
<!ENTITY % Describable_content "(%Extendable_content;),
		Descriptions_assnlist?,
		AuditTrail_assnlist?,
		Security_assnref?" >
<!ENTITY % Describable_attrs "%Extendable_attrs;" >

<!--
    Entities for Identifiable
    
    An Identifiable class is one that has an unambiguous reference 
    within the scope.  It also has a potentially ambiguous name.
    
    Associations
        Inherites associations from base class Describable.
    
    Attributes
        Inherites attributes from base class Describable.
    
        identifier: 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.
    
        name: The potentially ambiguous common identifier.
-->
<!ENTITY % Identifiable_content "(%Describable_content;)" >
<!ENTITY % Identifiable_attrs "%Describable_attrs;
		identifier CDATA #REQUIRED
		name CDATA #IMPLIED" >

<!--
    QuantitationType_package
    
    Entities for classes in this package.
-->
<!--
    Entities for QuantitationType
    
    A method for calculating a single datum of the matrix (e.g. raw 
    intensity, background, error).
    
    
    Associations
        Inherites associations from base class Identifiable.
    
        channel: The optional channel associated with the 
    QuantitationType.
    
        scale: Indication of how to interpret the value.  From a 
    suggested vocabulary of {LINEAR | LN | LOG2 |LOG10 | FOLD_CHANGE | 
    OTHER} 
    
        dataType: The specific type for the quantitations.  From a 
    controlled vocabulary of {float, int, boolean, etc.}
    
        confidenceIndicators: The association between a 
    ConfidenceIndicator and the QuantitationType its is an indicator 
    for.
    
        quantitationTypeMaps: The QuantitationType whose value will be 
    produced from the values of the source QuantitationType according to 
    the Protocol.
    
    Attributes
        Inherites attributes from base class Identifiable.
    
        isBackground: Indicates whether the quantitation has been 
    measured from the background or from the feature itself.
-->
<!ENTITY % QuantitationType_classes "SpecializedQuantitationType |
		DerivedSignal |
		MeasuredSignal |
		Error |
		PValue |
		ExpectedValue |
		Ratio |
		PresentAbsent |
		Failed" >
<!ENTITY % QuantitationType_ref "SpecializedQuantitationType_ref |
		DerivedSignal_ref |
		MeasuredSignal_ref |
		Error_ref |
		PValue_ref |
		ExpectedValue_ref |
		Ratio_ref |
		PresentAbsent_ref |
		Failed_ref" >
<!ENTITY % QuantitationType_content "(%Identifiable_content;),
		Channel_assnref?,
		Scale_assn,
		DataType_assn,
		ConfidenceIndicators_assnreflist?,
		QuantitationTypeMaps_assnreflist?" >
<!ENTITY % QuantitationType_attrs "%Identifiable_attrs;
		isBackground CDATA #REQUIRED" >

<!--
    Entities for StandardQuantitationType
    
    Superclass for the named quantitation type.  Useful for mapping to 
    those languages that can use a fly-weight for processing the 
    subclasses.
    
    Associations
        Inherites associations from base class QuantitationType.
    
    Attributes
        Inherites attributes from base class QuantitationType.
-->
<!ENTITY % StandardQuantitationType_content "(%QuantitationType_content;)" >
<!ENTITY % StandardQuantitationType_attrs "%QuantitationType_attrs;" >

<!--
    Entities for ConfidenceIndicator
    
    Indication of some measure of confidence for a standard quantitation 
    type.
    
    Associations
        Inherites associations from base class StandardQuantitationType.
    
        targetQuantitationType: The association between a 
    ConfidenceIndicator and the QuantitationType its is an indicator 
    for.
    
    Attributes
        Inherites attributes from base class StandardQuantitationType.
-->
<!ENTITY % ConfidenceIndicator_classes "Error |
		PValue |
		ExpectedValue" >
<!ENTITY % ConfidenceIndicator_ref "Error_ref |
		PValue_ref |
		ExpectedValue_ref" >
<!ENTITY % ConfidenceIndicator_content "(%StandardQuantitationType_content;),
		TargetQuantitationType_assnref" >
<!ENTITY % ConfidenceIndicator_attrs "%StandardQuantitationType_attrs;" >

<!--
    Description_package
    
    Entities for classes in this package.
-->
<!--
    ArrayDesign_package
    
    Entities for classes in this package.
-->
<!--
    Entities for ArrayDesign
    
    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.
    
    Associations
        Inherites associations from base class Identifiable.
    
        protocolApplications: Describes the application of any 
    protocols, such as the methodology used to pick oligos, in the 
    design of the array.
    
        featureGroups: 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.
    
        reporterGroups: 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.
    
        compositeGroups: 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.
    
        designProviders: The primary contact for information on the 
    array design
    
    Attributes
        Inherites attributes from base class Identifiable.
    
        version: The version of this design.
    
        numberOfFeatures: The number of features for this array
-->
<!ENTITY % ArrayDesign_classes "ArrayDesign |
		PhysicalArrayDesign" >
<!ENTITY % ArrayDesign_ref "ArrayDesign_ref |
		PhysicalArrayDesign_ref" >
<!ENTITY % ArrayDesign_content "(%Identifiable_content;),
		ProtocolApplications_assnlist?,
		FeatureGroups_assnlist?,
		ReporterGroups_assnreflist?,
		CompositeGroups_assnreflist?,
		DesignProviders_assnreflist?" >
<!ENTITY % ArrayDesign_attrs "%Identifiable_attrs;
		version CDATA #IMPLIED
		numberOfFeatures CDATA #IMPLIED" >

<!--
    Entities for DesignElementGroup
    
    The DesignElementGroup holds information on either features, 
    reporters, or compositeSequences, particularly that information that 
    is common between all of the DesignElements contained.
    
    Associations
        Inherites associations from base class Identifiable.
    
        types: The specific type of a feature, reporter, or composite.  
    A composite type might be a gene while a reporter type might be a 
    cDNA clone or an oligo.
    
        species: The organism from which the biosequences of this group 
    are from.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ENTITY % DesignElementGroup_content "(%Identifiable_content;),
		Types_assnlist?,
		Species_assn?" >
<!ENTITY % DesignElementGroup_attrs "%Identifiable_attrs;" >

<!--
    AuditAndSecurity_package
    
    Entities for classes in this package.
-->
<!--
    Entities for Contact
    
    A contact is either a person or an organization.
    
    Associations
        Inherites associations from base class Identifiable.
    
        roles: The roles (lab equipment sales, contractor, etc.) the 
    contact fills.
    
    Attributes
        Inherites attributes from base class Identifiable.
    
        URI: null
    
        address: null
    
        phone: null
    
        tollFreePhone: null
    
        email: null
    
        fax: null
-->
<!ENTITY % Contact_classes "Person |
		Organization" >
<!ENTITY % Contact_ref "Person_ref |
		Organization_ref" >
<!ENTITY % Contact_content "(%Identifiable_content;),
		Roles_assnlist?" >
<!ENTITY % Contact_attrs "%Identifiable_attrs;
		URI CDATA #IMPLIED
		address CDATA #IMPLIED
		phone CDATA #IMPLIED
		tollFreePhone CDATA #IMPLIED
		email CDATA #IMPLIED
		fax CDATA #IMPLIED" >

<!--
    Measurement_package
    
    Entities for classes in this package.
-->
<!--
    Entities for Unit
    
    The unit is a strict enumeration of types.
    
    Associations
        Inherites associations from base class Extendable.
    
    Attributes
        Inherites attributes from base class Extendable.
    
        unitName: The name of the unit.
-->
<!ENTITY % Unit_classes "TimeUnit |
		DistanceUnit |
		TemperatureUnit |
		QuantityUnit |
		MassUnit |
		VolumeUnit |
		ConcentrationUnit" >
<!ENTITY % Unit_content "(%Extendable_content;)" >
<!ENTITY % Unit_attrs "%Extendable_attrs;
		unitName CDATA #IMPLIED" >

<!--
    Experiment_package
    
    Entities for classes in this package.
-->
<!--
    Array_package
    
    Entities for classes in this package.
-->
<!--
    Entities for ManufactureLIMS
    
    Information on the physical production of arrays within the 
    laboratory.
    
    Associations
        Inherites associations from base class Describable.
    
        feature: The feature whose LIMS information is being described.
    
        bioMaterial: The BioMaterial used for the feature.
    
        identifierLIMS: Association to a LIMS data source for further 
    information on the manufacturing process.
    
    Attributes
        Inherites attributes from base class Describable.
    
        quality: A brief description of the quality of the array 
    manufacture process.
-->
<!ENTITY % ManufactureLIMS_classes "ManufactureLIMS |
		ManufactureLIMSBiomaterial" >
<!ENTITY % ManufactureLIMS_content "(%Describable_content;),
		Feature_assnref,
		BioMaterial_assnref?,
		IdentifierLIMS_assn?" >
<!ENTITY % ManufactureLIMS_attrs "%Describable_attrs;
		quality CDATA #IMPLIED" >

<!--
    HigherLevelAnalysis_package
    
    Entities for classes in this package.
-->
<!--
    Protocol_package
    
    Entities for classes in this package.
-->
<!--
    Entities for Parameterizable
    
    The Parameterizable interface encapsulates the association of 
    Parameters with ParameterValues.
    
    Associations
        Inherites associations from base class Identifiable.
    
        parameterTypes: The description of the parameters for the 
    Parameterizable class instance.
    
    Attributes
        Inherites attributes from base class Identifiable.
    
        URI: Where an instantiated Parameterizable is located.
-->
<!ENTITY % Parameterizable_content "(%Identifiable_content;),
		ParameterTypes_assnlist?" >
<!ENTITY % Parameterizable_attrs "%Identifiable_attrs;
		URI CDATA #IMPLIED" >

<!--
    Entities for ParameterizableApplication
    
    The interface that is the use of a Parameterizable class.
    
    Associations
        Inherites associations from base class Describable.
    
        parameterValues: The parameter values for this Parameterizable 
    Application.
    
    Attributes
        Inherites attributes from base class Describable.
-->
<!ENTITY % ParameterizableApplication_content "(%Describable_content;),
		ParameterValues_assnlist?" >
<!ENTITY % ParameterizableApplication_attrs "%Describable_attrs;" >

<!--
    BioSequence_package
    
    Entities for classes in this package.
-->
<!--
    Entities for SequencePosition
    
    Designates the position of the Feature in its BioSequence.
    
    Associations
        Inherites associations from base class Extendable.
    
    Attributes
        Inherites attributes from base class Extendable.
    
        start: The location of the base, for nucleotides, that the 
    SeqFeature starts. 
    
        end: The location of the base, for nucleotides, that the 
    SeqFeature ends.
-->
<!ENTITY % SequencePosition_classes "SequencePosition |
		ReporterPosition |
		CompositePosition" >
<!ENTITY % SequencePosition_content "(%Extendable_content;)" >
<!ENTITY % SequencePosition_attrs "%Extendable_attrs;
		start CDATA #IMPLIED
		end CDATA #IMPLIED" >

<!--
    BQS_package
    
    Entities for classes in this package.
-->
<!--
    BioEvent_package
    
    Entities for classes in this package.
-->
<!--
    Entities for BioEvent
    
    An abstract class to capture the concept of an event (either in the 
    laboratory or a computational analysis).
    
    Associations
        Inherites associations from base class Identifiable.
    
        protocolApplications: The applied protocols to the BioEvent.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ENTITY % BioEvent_content "(%Identifiable_content;),
		ProtocolApplications_assnlist?" >
<!ENTITY % BioEvent_attrs "%Identifiable_attrs;" >

<!--
    Entities for Map
    
    A Map is the description of how sources are transformed into a 
    target.  Provides an abstarct base class that separates the mapping 
    BioEvents from the transforming.
    
    Associations
        Inherites associations from base class BioEvent.
    
    Attributes
        Inherites attributes from base class BioEvent.
-->
<!ENTITY % Map_content "(%BioEvent_content;)" >
<!ENTITY % Map_attrs "%BioEvent_attrs;" >

<!--
    BioMaterial_package
    
    Entities for classes in this package.
-->
<!--
    Entities for BioMaterial
    
    BioMaterial is an abstract class that represents the important 
    substances such as cells, tissues, DNA, proteins, etc...  
    Biomaterials can be related to other biomaterial through a directed 
    acyclic graph (represented by treatment(s)).
    
    Associations
        Inherites associations from base class Identifiable.
    
        qualityControlStatistics: Measures of the quality of the 
    BioMaterial.
    
        characteristics: Innate properties of the biosource, such as 
    genotype, cultivar, tissue type, cell type, ploidy, etc.
    
        materialType: The type of material used, i.e. rna, dna, lipid, 
    phosphoprotein, etc.
    
        treatments: 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.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ENTITY % BioMaterial_classes "BioSource |
		LabeledExtract |
		BioSample" >
<!ENTITY % BioMaterial_ref "BioSource_ref |
		LabeledExtract_ref |
		BioSample_ref" >
<!ENTITY % BioMaterial_content "(%Identifiable_content;),
		QualityControlStatistics_assnlist?,
		Characteristics_assnlist?,
		MaterialType_assn,
		Treatments_assnlist?" >
<!ENTITY % BioMaterial_attrs "%Identifiable_attrs;" >

<!--
    BioAssay_package
    
    Entities for classes in this package.
-->
<!--
    Entities for BioAssay
    
    An abstract class which represents both physical and computational 
    groupings of arrays and biomaterials.
    
    
    Associations
        Inherites associations from base class Identifiable.
    
        channels: Channels can be non-null for all subclasses.  For 
    instance, collapsing across replicate features will create a 
    DerivedBioAssay that will potentially reference channels.
    
        bioAssayFactorValues: The values that this BioAssay is 
    associated with for the experiment.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ENTITY % BioAssay_classes "PhysicalBioAssay |
		DerivedBioAssay |
		MeasuredBioAssay" >
<!ENTITY % BioAssay_ref "PhysicalBioAssay_ref |
		DerivedBioAssay_ref |
		MeasuredBioAssay_ref" >
<!ENTITY % BioAssay_content "(%Identifiable_content;),
		Channels_assnreflist?,
		BioAssayFactorValues_assnreflist?" >
<!ENTITY % BioAssay_attrs "%Identifiable_attrs;" >

<!--
    Entities for BioAssayCreation
    
    The process by which an array and one or more biomaterials are 
    combined to create a bioAssayCreation.
    
    Associations
        Inherites associations from base class BioEvent.
    
        sourceBioMaterialMeasurements: The BioSample and its amount used 
    in the BioAssayCreation event.
    
        array: The array used in the BioAssayCreation event.
    
        physicalBioAssayTarget: The association between the 
    BioAssayCreation event (typically Hybridization) and the 
    PhysicalBioAssay and its annotation of this event.
    
    Attributes
        Inherites attributes from base class BioEvent.
-->
<!ENTITY % BioAssayCreation_classes "BioAssayCreation |
		Hybridization" >
<!ENTITY % BioAssayCreation_content "(%BioEvent_content;),
		SourceBioMaterialMeasurements_assnlist?,
		Array_assnref" >
<!ENTITY % BioAssayCreation_attrs "%BioEvent_attrs;" >

<!--
    Entities for BioAssayTreatment
    
    The event which records the process by which PhysicalBioAssays are 
    processed (typically washing, blocking, etc...).
    
    Associations
        Inherites associations from base class BioEvent.
    
        physicalBioAssay: The set of treatments undergone by this 
    PhysicalBioAssay.
    
        target: The PhysicalBioAssay that was treated.
    
    Attributes
        Inherites attributes from base class BioEvent.
-->
<!ENTITY % BioAssayTreatment_classes "BioAssayTreatment |
		ImageAcquisition" >
<!ENTITY % BioAssayTreatment_content "(%BioEvent_content;),
		Target_assnref" >
<!ENTITY % BioAssayTreatment_attrs "%BioEvent_attrs;" >

<!--
    BioAssayData_package
    
    Entities for classes in this package.
-->
<!--
    Entities for BioAssayData
    
    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.
    
    Associations
        Inherites associations from base class Identifiable.
    
        summaryStatistics: Statistics on the Quality of the 
    BioAssayData.
    
        bioAssayDimension: The BioAssays of the BioAssayData.
    
        designElementDimension: The DesignElements of the BioAssayData.
    
        quantitationTypeDimension: The QuantitationTypes of the 
    BioAssayData.
    
        bioDataValues: The data values of the BioAssayData.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ENTITY % BioAssayData_classes "DerivedBioAssayData |
		MeasuredBioAssayData" >
<!ENTITY % BioAssayData_ref "DerivedBioAssayData_ref |
		MeasuredBioAssayData_ref" >
<!ENTITY % BioAssayData_content "(%Identifiable_content;),
		SummaryStatistics_assnlist?,
		BioAssayDimension_assnref?,
		DesignElementDimension_assnref?,
		QuantitationTypeDimension_assnref?,
		BioDataValues_assn?" >
<!ENTITY % BioAssayData_attrs "%Identifiable_attrs;" >

<!--
    Entities for BioDataValues
    
    The actual values for the BioAssayCube. 
    
    Associations
        Inherites associations from base class Extendable.
    
    Attributes
        Inherites attributes from base class Extendable.
-->
<!ENTITY % BioDataValues_classes "BioDataCube |
		BioDataTuples" >
<!ENTITY % BioDataValues_content "(%Extendable_content;)" >
<!ENTITY % BioDataValues_attrs "%Extendable_attrs;" >

<!--
    Entities for DesignElementDimension
    
    An ordered list of designElements. It will be realized as one of its 
    three subclasses.
    
    Associations
        Inherites associations from base class Identifiable.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ENTITY % DesignElementDimension_classes "CompositeSequenceDimension |
		ReporterDimension |
		FeatureDimension" >
<!ENTITY % DesignElementDimension_ref "CompositeSequenceDimension_ref |
		ReporterDimension_ref |
		FeatureDimension_ref" >
<!ENTITY % DesignElementDimension_content "(%Identifiable_content;)" >
<!ENTITY % DesignElementDimension_attrs "%Identifiable_attrs;" >

<!--
    Entities for DesignElementMap
    
    A DesignElementMap is the description of how source DesignElements 
    are transformed into a target DesignElement.
    
    Associations
        Inherites associations from base class Map.
    
    Attributes
        Inherites attributes from base class Map.
-->
<!ENTITY % DesignElementMap_classes "CompositeCompositeMap |
		FeatureReporterMap |
		ReporterCompositeMap" >
<!ENTITY % DesignElementMap_ref "CompositeCompositeMap_ref |
		FeatureReporterMap_ref |
		ReporterCompositeMap_ref" >
<!ENTITY % DesignElementMap_content "(%Map_content;)" >
<!ENTITY % DesignElementMap_attrs "%Map_attrs;" >

<!--
    DesignElement_package
    
    Entities for classes in this package.
-->
<!--
    Entities for DesignElement
    
    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.
    
    Associations
        Inherites associations from base class Identifiable.
    
        controlType: If the design element represents a control, the 
    type of control it is (normalization, deletion, negative, positive, 
    etc.)
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ENTITY % DesignElement_classes "Reporter |
		CompositeSequence |
		Feature" >
<!ENTITY % DesignElement_ref "Reporter_ref |
		CompositeSequence_ref |
		Feature_ref" >
<!ENTITY % DesignElement_content "(%Identifiable_content;),
		ControlType_assn?" >
<!ENTITY % DesignElement_attrs "%Identifiable_attrs;" >

<!--
    MAGE-ML
    
    The top-level element that contains the packages.  Each of the 
    package elements contain the lists of independent elements in that 
    package.
-->
<!ELEMENT MAGE-ML ((%Identifiable_content;),
		AuditAndSecurity_package?,
		Description_package?,
		Measurement_package?,
		BQS_package?,
		BioEvent_package?,
		Protocol_package?,
		BioMaterial_package?,
		BioSequence_package?,
		DesignElement_package?,
		ArrayDesign_package?,
		Array_package?,
		BioAssay_package?,
		QuantitationType_package?,
		BioAssayData_package?,
		Experiment_package?,
		HigherLevelAnalysis_package?) >
<!ATTLIST MAGE-ML %Identifiable_attrs; >

<!--
    Element and Attlist declarations for NameValueType
    
    A tuple designed to store data, keyed by a name and type.
    
    Associations
        propertySets: Allows nested specification of name/value pairs
    
    Attributes
        name: The name of the key.
    
        value: The value of the name.
    
        type: The type of the key.
-->
<!ELEMENT PropertySets_assnlist (NameValueType+) >
<!ELEMENT QualityControlStatistics_assnlist (NameValueType+) >
<!ELEMENT SummaryStatistics_assnlist (NameValueType+) >

<!ELEMENT NameValueType (PropertySets_assnlist?) >
<!ATTLIST NameValueType name CDATA #IMPLIED
		value CDATA #IMPLIED
		type CDATA #IMPLIED >

<!--
    QuantitationType_package
    
    This Package defines the classes for quantitations, such as measured 
    and derived signal, error, and pvalue.  The subclasses of 
    StandardQuantitationType will be the best fit from FeatureExtraction 
    or Transformation Protocol for the values obtained.  Other values 
    can be specified using SpecializedQuantitationType.
-->
<!ELEMENT QuantitationType_package (QuantitationType_assnlist?) >

<!--
    Element and Attlist declarations for QuantitationType
    
    A method for calculating a single datum of the matrix (e.g. raw 
    intensity, background, error).
    
    
    Associations
        Inherites associations from base class Identifiable.
    
        channel: The optional channel associated with the 
    QuantitationType.
    
        scale: Indication of how to interpret the value.  From a 
    suggested vocabulary of {LINEAR | LN | LOG2 |LOG10 | FOLD_CHANGE | 
    OTHER} 
    
        dataType: The specific type for the quantitations.  From a 
    controlled vocabulary of {float, int, boolean, etc.}
    
        confidenceIndicators: The association between a 
    ConfidenceIndicator and the QuantitationType its is an indicator 
    for.
    
        quantitationTypeMaps: The QuantitationType whose value will be 
    produced from the values of the source QuantitationType according to 
    the Protocol.
    
    Attributes
        Inherites attributes from base class Identifiable.
    
        isBackground: Indicates whether the quantitation has been 
    measured from the background or from the feature itself.
-->
<!ELEMENT QuantitationType_assnlist ((%QuantitationType_classes;)+) >

<!ELEMENT QuantitationType_assnref ((%QuantitationType_ref;)) >
<!ELEMENT QuantitationTypes_assnreflist ((%QuantitationType_ref;)+) >
<!ELEMENT SourcesQuantitationType_assnreflist ((%QuantitationType_ref;)+) >
<!ELEMENT TargetQuantitationType_assnref ((%QuantitationType_ref;)) >

<!ELEMENT QuantitationType_ref EMPTY >
<!ATTLIST QuantitationType_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >


<!--
    Element and Attlist declarations for SpecializedQuantitationType
    
    User defined quantitation type.
    
    Associations
        Inherites associations from base class QuantitationType.
    
    Attributes
        Inherites attributes from base class QuantitationType.
-->
<!ELEMENT SpecializedQuantitationType_ref EMPTY >
<!ATTLIST SpecializedQuantitationType_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT SpecializedQuantitationType ((%QuantitationType_content;)) >
<!ATTLIST SpecializedQuantitationType %QuantitationType_attrs; >

<!--
    Element and Attlist declarations for StandardQuantitationType
    
    Superclass for the named quantitation type.  Useful for mapping to 
    those languages that can use a fly-weight for processing the 
    subclasses.
    
    Associations
        Inherites associations from base class QuantitationType.
    
    Attributes
        Inherites attributes from base class QuantitationType.
-->
<!ELEMENT StandardQuantitationType_ref EMPTY >
<!ATTLIST StandardQuantitationType_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >


<!--
    Element and Attlist declarations for ConfidenceIndicator
    
    Indication of some measure of confidence for a standard quantitation 
    type.
    
    Associations
        Inherites associations from base class StandardQuantitationType.
    
        targetQuantitationType: The association between a 
    ConfidenceIndicator and the QuantitationType its is an indicator 
    for.
    
    Attributes
        Inherites attributes from base class StandardQuantitationType.
-->
<!ELEMENT ConfidenceIndicator_assnlist ((%ConfidenceIndicator_classes;)+) >

<!ELEMENT ConfidenceIndicators_assnreflist ((%ConfidenceIndicator_ref;)+) >

<!ELEMENT ConfidenceIndicator_ref EMPTY >
<!ATTLIST ConfidenceIndicator_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >


<!--
    Element and Attlist declarations for DerivedSignal
    
    A calculated measurement of the intensity of a signal, for example, 
    after a transformation involving normalization and/or replicate 
    DesignElements.  Of type float.
    
    Associations
        Inherites associations from base class StandardQuantitationType.
    
    Attributes
        Inherites attributes from base class StandardQuantitationType.
-->
<!ELEMENT DerivedSignal_ref EMPTY >
<!ATTLIST DerivedSignal_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT DerivedSignal ((%StandardQuantitationType_content;)) >
<!ATTLIST DerivedSignal %StandardQuantitationType_attrs; >

<!--
    Element and Attlist declarations for Error
    
    Error measurement of a quantitation.  Of type float.
    
    Associations
        Inherites associations from base class ConfidenceIndicator.
    
    Attributes
        Inherites attributes from base class ConfidenceIndicator.
-->
<!ELEMENT Error_ref EMPTY >
<!ATTLIST Error_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Error ((%ConfidenceIndicator_content;)) >
<!ATTLIST Error %ConfidenceIndicator_attrs; >

<!--
    Element and Attlist declarations for ExpectedValue
    
    Indication of what value is expected of the associated standard 
    quantitation type.
    
    Associations
        Inherites associations from base class ConfidenceIndicator.
    
    Attributes
        Inherites attributes from base class ConfidenceIndicator.
-->
<!ELEMENT ExpectedValue_ref EMPTY >
<!ATTLIST ExpectedValue_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT ExpectedValue ((%ConfidenceIndicator_content;)) >
<!ATTLIST ExpectedValue %ConfidenceIndicator_attrs; >

<!--
    Element and Attlist declarations for Failed
    
    Values associated with this QuantitationType indicate a failure of 
    some kind for a particular DesignElement for a BioAssay.  Of type 
    boolean.
    
    Associations
        Inherites associations from base class StandardQuantitationType.
    
    Attributes
        Inherites attributes from base class StandardQuantitationType.
-->
<!ELEMENT Failed_ref EMPTY >
<!ATTLIST Failed_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Failed ((%StandardQuantitationType_content;)) >
<!ATTLIST Failed %StandardQuantitationType_attrs; >

<!--
    Element and Attlist declarations for MeasuredSignal
    
    Best measure from feature extraction as to the presence and 
    intensity of the signal.  Of type float.
    
    Associations
        Inherites associations from base class StandardQuantitationType.
    
    Attributes
        Inherites attributes from base class StandardQuantitationType.
-->
<!ELEMENT MeasuredSignal_ref EMPTY >
<!ATTLIST MeasuredSignal_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT MeasuredSignal ((%StandardQuantitationType_content;)) >
<!ATTLIST MeasuredSignal %StandardQuantitationType_attrs; >

<!--
    Element and Attlist declarations for PValue
    
    Measurement of the accuracy of a quantitation.  Of type float.
    
    Associations
        Inherites associations from base class ConfidenceIndicator.
    
    Attributes
        Inherites attributes from base class ConfidenceIndicator.
-->
<!ELEMENT PValue_ref EMPTY >
<!ATTLIST PValue_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT PValue ((%ConfidenceIndicator_content;)) >
<!ATTLIST PValue %ConfidenceIndicator_attrs; >

<!--
    Element and Attlist declarations for PresentAbsent
    
    Indicates relative presence or absence.  From the enumeration 
    AbsoluteCallTypeEnum {Present | Absent | Marginal | No call} or 
    ComparisonCallTypeEnum {Increase I Marginal Increase | Decrease | 
    Marginal Decrease |  No change | No Call | Unknown }, as specified 
    by the dataType.
    
    Associations
        Inherites associations from base class StandardQuantitationType.
    
    Attributes
        Inherites attributes from base class StandardQuantitationType.
-->
<!ELEMENT PresentAbsent_ref EMPTY >
<!ATTLIST PresentAbsent_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT PresentAbsent ((%StandardQuantitationType_content;)) >
<!ATTLIST PresentAbsent %StandardQuantitationType_attrs; >

<!--
    Element and Attlist declarations for Ratio
    
    The ratio of two or more signals, typically between two channels.  
    Of type float.
    
    Associations
        Inherites associations from base class StandardQuantitationType.
    
    Attributes
        Inherites attributes from base class StandardQuantitationType.
-->
<!ELEMENT Ratio_ref EMPTY >
<!ATTLIST Ratio_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Ratio ((%StandardQuantitationType_content;)) >
<!ATTLIST Ratio %StandardQuantitationType_attrs; >

<!--
    Description_package
    
    The classes in this package allow a variety of references to third 
    party annotation and direct annotation by the experimenter.
-->
<!ELEMENT Description_package (Database_assnlist?) >

<!--
    Element and Attlist declarations for Database
    
    An address to a repository.
    
    Associations
        Inherites associations from base class Identifiable.
    
        contacts: Information on the contacts for the database
    
    Attributes
        Inherites attributes from base class Identifiable.
    
        version: The version for which a DatabaseReference applies.
    
        URI: The location of the Database.
-->
<!ELEMENT Database_assnlist (Database+) >

<!ELEMENT Database_assnref (Database_ref) >

<!ELEMENT Database_ref EMPTY >
<!ATTLIST Database_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Database ((%Identifiable_content;),
		Contacts_assnreflist?) >
<!ATTLIST Database %Identifiable_attrs;
		version CDATA #IMPLIED
		URI CDATA #IMPLIED >

<!--
    Element and Attlist declarations for DatabaseEntry
    
    A reference to a record in a database.
    
    Associations
        Inherites associations from base class Extendable.
    
        type: The type of record (e.g. a protein in SwissProt, or a 
    yeast strain in SGD).
    
        database: Reference to the database where the DataEntry instance 
    can be found.
    
    Attributes
        Inherites attributes from base class Extendable.
    
        accession: The identifier used to look up the record.
    
        accessionVersion: The appropriate version of the accession (if 
    applicable).
    
        URI: The location of the record.
-->
<!ELEMENT Accessions_assnlist (DatabaseEntry+) >
<!ELEMENT DatabaseReferences_assnlist (DatabaseEntry+) >
<!ELEMENT ExternalLIMS_assn (DatabaseEntry) >
<!ELEMENT IdentifierLIMS_assn (DatabaseEntry) >
<!ELEMENT OntologyReference_assn (DatabaseEntry) >
<!ELEMENT SequenceDatabases_assnlist (DatabaseEntry+) >

<!ELEMENT DatabaseEntry ((%Extendable_content;),
		Type_assn?,
		Database_assnref) >
<!ATTLIST DatabaseEntry %Extendable_attrs;
		accession CDATA #REQUIRED
		accessionVersion CDATA #IMPLIED
		URI CDATA #IMPLIED >

<!--
    Element and Attlist declarations for Description
    
    A free text description of an object.
    
    Associations
        Inherites associations from base class Describable.
    
        externalReference: Specifies where the described instance was 
    originally obtained from.
    
        annotations: Allows specification of ontology entries related to 
    the instance being described.
    
        databaseReferences: References to entries in databases.
    
        bibliographicReferences: References to existing literature.
    
    Attributes
        Inherites attributes from base class Describable.
    
        text: The description.
    
        URI: A reference to the location and type of an outside 
    resource.
-->
<!ELEMENT Descriptions_assnlist (Description+) >
<!ELEMENT NormalizationDescription_assn (Description) >
<!ELEMENT QualityControlDescription_assn (Description) >
<!ELEMENT ReplicateDescription_assn (Description) >

<!ELEMENT Description ((%Describable_content;),
		ExternalReference_assn?,
		Annotations_assnlist?,
		DatabaseReferences_assnlist?,
		BibliographicReferences_assnlist?) >
<!ATTLIST Description %Describable_attrs;
		text CDATA #IMPLIED
		URI CDATA #IMPLIED >

<!--
    Element and Attlist declarations for ExternalReference
    
    A reference to the originating source for the object.
    
    Associations
        Inherites associations from base class Extendable.
    
    Attributes
        Inherites attributes from base class Extendable.
    
        exportedFromServer: The originating server for the object, a 
    network address or common name.
    
        exportedFromDB: Name of the database, if applicable, that the 
    object was exported from.
    
        exportID: The identifier of the object at the originating 
    source.
    
        exportName: The name of the object at the originating source.
-->
<!ELEMENT ExternalReference_assn (ExternalReference) >

<!ELEMENT ExternalReference ((%Extendable_content;)) >
<!ATTLIST ExternalReference %Extendable_attrs;
		exportedFromServer CDATA #IMPLIED
		exportedFromDB CDATA #IMPLIED
		exportID CDATA #IMPLIED
		exportName CDATA #IMPLIED >

<!--
    Element and Attlist declarations for OntologyEntry
    
    A single entry from an ontology or a controlled vocabulary.  For 
    instance, category could be 'species name', value could be 'homo 
    sapiens' and ontology would  be taxonomy database, NCBI.
    
    Associations
        Inherites associations from base class Extendable.
    
        ontologyReference: Many ontology entries will not yet have 
    formalized ontologies.  In those cases, they will not have a 
    database reference to the ontology.
    
    In the future it is highly encouraged that these ontologies be 
    developed and ontologyEntry be subclassed from DatabaseReference.
    
        associations: Allows an instance of an OntologyEntry to be 
    further qualified.
    
    Attributes
        Inherites attributes from base class Extendable.
    
        category: The category to which this entry belongs.
    
        value: The value for this entry in this category.  
    
        description: The description of the meaning for this entry.
-->
<!ELEMENT Action_assn (OntologyEntry) >
<!ELEMENT Annotations_assnlist (OntologyEntry+) >
<!ELEMENT Associations_assnlist (OntologyEntry+) >
<!ELEMENT Category_assn (OntologyEntry) >
<!ELEMENT Characteristics_assnlist (OntologyEntry+) >
<!ELEMENT CompoundIndices_assnlist (OntologyEntry+) >
<!ELEMENT ControlType_assn (OntologyEntry) >
<!ELEMENT DataType_assn (OntologyEntry) >
<!ELEMENT DefectType_assn (OntologyEntry) >
<!ELEMENT FailTypes_assnlist (OntologyEntry+) >
<!ELEMENT FeatureShape_assn (OntologyEntry) >
<!ELEMENT FiducialType_assn (OntologyEntry) >
<!ELEMENT Format_assn (OntologyEntry) >
<!ELEMENT MaterialType_assn (OntologyEntry) >
<!ELEMENT OntologyEntries_assnlist (OntologyEntry+) >
<!ELEMENT Parameters_assnlist (OntologyEntry+) >
<!ELEMENT PolymerType_assn (OntologyEntry) >
<!ELEMENT Roles_assnlist (OntologyEntry+) >
<!ELEMENT Scale_assn (OntologyEntry) >
<!ELEMENT Species_assn (OntologyEntry) >
<!ELEMENT SubstrateType_assn (OntologyEntry) >
<!ELEMENT SurfaceType_assn (OntologyEntry) >
<!ELEMENT TechnologyType_assn (OntologyEntry) >
<!ELEMENT Type_assn (OntologyEntry) >
<!ELEMENT Types_assnlist (OntologyEntry+) >
<!ELEMENT Value_assn (OntologyEntry) >
<!ELEMENT WarningType_assn (OntologyEntry) >

<!ELEMENT OntologyEntry ((%Extendable_content;),
		OntologyReference_assn?,
		Associations_assnlist?) >
<!ATTLIST OntologyEntry %Extendable_attrs;
		category CDATA #REQUIRED
		value CDATA #REQUIRED
		description CDATA #IMPLIED >

<!--
    ArrayDesign_package
    
    Describes a microarray design that can be printed and then, in the 
    case of gene expression,  hybridized.  An array design consists of 
    several features (also called spots) in which reporter sequences are 
    placed.  Many features may have the same reporter replicated and a 
    reporter may be specified in one or more array designs.  
    
    The nature of the reporter's biosequence placed on a spot will 
    depend on the technology.  Two well-known technologies differ 
    significantly-spotter arrays draw material from a well and place a 
    spot on the array whereas in situ oligo arrays are created through 
    the synthesis of many, short (~20-100mer) nucleotide sequences onto 
    the features.
    
    Reporters can be grouped together into CompositeSequences, typically 
    representing a gene or one or more splice variants in gene 
    expression experiments. 
    
    There are then two distinct ways that DesignElements are grouped.  
    The one described in the ArrayDesign package by FeatureGroup, 
    ReporterGroup and CompositeGroup is by technology type, that is, one 
    might want to segregate the controls to a Group and all the 
    non-controls to another.   Or if PCR Product and Oligos are both 
    used on an array they would likely be in different groups.  The 
    grouping described in the DesignElement package by the mappings 
    relates the Features to the Reporter, the Reporters to 
    CompositeSequence, and at higher levels, CompositeSequences to 
    CompositeSequence.
-->
<!ELEMENT ArrayDesign_package (ReporterGroup_assnlist?,
		CompositeGroup_assnlist?,
		ArrayDesign_assnlist?) >

<!--
    Element and Attlist declarations for ArrayDesign
    
    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.
    
    Associations
        Inherites associations from base class Identifiable.
    
        protocolApplications: Describes the application of any 
    protocols, such as the methodology used to pick oligos, in the 
    design of the array.
    
        featureGroups: 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.
    
        reporterGroups: 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.
    
        compositeGroups: 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.
    
        designProviders: The primary contact for information on the 
    array design
    
    Attributes
        Inherites attributes from base class Identifiable.
    
        version: The version of this design.
    
        numberOfFeatures: The number of features for this array
-->
<!ELEMENT ArrayDesign_assnlist ((%ArrayDesign_classes;)+) >

<!ELEMENT ArrayDesign_assnref ((%ArrayDesign_ref;)) >

<!ELEMENT ArrayDesign_ref EMPTY >
<!ATTLIST ArrayDesign_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT ArrayDesign ((%ArrayDesign_content;)) >
<!ATTLIST ArrayDesign %ArrayDesign_attrs; >

<!--
    Element and Attlist declarations for CompositeGroup
    
    Allows specification of the type of Composite Design Element.
    
    Associations
        Inherites associations from base class DesignElementGroup.
    
        compositeSequences: The compositeSequences that belong to this 
    group.
    
    Attributes
        Inherites attributes from base class DesignElementGroup.
-->
<!ELEMENT CompositeGroup_assnlist (CompositeGroup+) >

<!ELEMENT CompositeGroups_assnreflist (CompositeGroup_ref+) >

<!ELEMENT CompositeGroup_ref EMPTY >
<!ATTLIST CompositeGroup_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT CompositeGroup ((%DesignElementGroup_content;),
		CompositeSequences_assnreflist) >
<!ATTLIST CompositeGroup %DesignElementGroup_attrs; >

<!--
    Element and Attlist declarations for FeatureGroup
    
    A collection of like features.
    
    Associations
        Inherites associations from base class DesignElementGroup.
    
        technologyType: 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.
    
        featureShape: The expected shape of the feature on the array: 
    circular, oval, square, etc.
    
        distanceUnit: The unit for the feature measures.
    
        features: The features that belong to this group.
    
    Attributes
        Inherites attributes from base class DesignElementGroup.
    
        featureWidth: The width of the feature.
    
        featureLength: The length of the feature.
    
        featureHeight: The height of the feature.
-->
<!ELEMENT FeatureGroup_assnref (FeatureGroup_ref) >
<!ELEMENT FeatureGroups_assnlist (FeatureGroup+) >

<!ELEMENT FeatureGroup_ref EMPTY >
<!ATTLIST FeatureGroup_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT FeatureGroup ((%DesignElementGroup_content;),
		TechnologyType_assn?,
		FeatureShape_assn?,
		DistanceUnit_assn?,
		Features_assnlist) >
<!ATTLIST FeatureGroup %DesignElementGroup_attrs;
		featureWidth CDATA #IMPLIED
		featureLength CDATA #IMPLIED
		featureHeight CDATA #IMPLIED >

<!--
    Element and Attlist declarations for PhysicalArrayDesign
    
    A design that is expected to be used to manufacture physical arrays.
    
    Associations
        Inherites associations from base class ArrayDesign.
    
        surfaceType: The type of surface from a controlled vocabulary 
    that would include terms such as non-absorptive, absorptive, etc.
    
        zoneGroups: In the case where the array design is specified by 
    one or more zones, allows specifying where those zones are located.
    
    Attributes
        Inherites attributes from base class ArrayDesign.
-->
<!ELEMENT PhysicalArrayDesign_ref EMPTY >
<!ATTLIST PhysicalArrayDesign_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT PhysicalArrayDesign ((%ArrayDesign_content;),
		SurfaceType_assn?,
		ZoneGroups_assnlist?) >
<!ATTLIST PhysicalArrayDesign %ArrayDesign_attrs; >

<!--
    Element and Attlist declarations for ReporterGroup
    
    Allows specification of the type of Reporter Design Element.
    
    
    Associations
        Inherites associations from base class DesignElementGroup.
    
        reporters: The reporters that belong to this group.
    
    Attributes
        Inherites attributes from base class DesignElementGroup.
-->
<!ELEMENT ReporterGroup_assnlist (ReporterGroup+) >

<!ELEMENT ReporterGroups_assnreflist (ReporterGroup_ref+) >

<!ELEMENT ReporterGroup_ref EMPTY >
<!ATTLIST ReporterGroup_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT ReporterGroup ((%DesignElementGroup_content;),
		Reporters_assnreflist) >
<!ATTLIST ReporterGroup %DesignElementGroup_attrs; >

<!--
    Element and Attlist declarations for Zone
    
    Specifies the location of a zone on an array.
    
    Associations
        Inherites associations from base class Identifiable.
    
        distanceUnit: Unit for the Zone attributes.
    
    Attributes
        Inherites attributes from base class Identifiable.
    
        row: row position in the ZoneGroup
    
        column: column position in the ZoneGroup.
    
        upperLeftX: Boundary vertical upper left position relative to 
    (0,0).
    
        upperLeftY: Boundary horizontal upper left position relative to 
    (0,0).
    
        lowerRightX: Boundary vertical lower right position relative to 
    (0,0).
    
        lowerRightY: Boundary horizontal lower right position relative 
    to (0,0).
-->
<!ELEMENT Zone_assnref (Zone_ref) >
<!ELEMENT ZoneLocations_assnlist (Zone+) >

<!ELEMENT Zone_ref EMPTY >
<!ATTLIST Zone_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Zone ((%Identifiable_content;),
		DistanceUnit_assn?) >
<!ATTLIST Zone %Identifiable_attrs;
		row CDATA #IMPLIED
		column CDATA #IMPLIED
		upperLeftX CDATA #IMPLIED
		upperLeftY CDATA #IMPLIED
		lowerRightX CDATA #IMPLIED
		lowerRightY CDATA #IMPLIED >

<!--
    Element and Attlist declarations for ZoneGroup
    
    Specifies a repeating area on an array.  This is useful for printing 
    when the same pattern is repeated in a regular fashion.
    
    Associations
        Inherites associations from base class Extendable.
    
        distanceUnit: Unit for the ZoneGroup attributes.
    
        zoneLayout: Describes the rectangular layout of features in the 
    array design. 
    
        zoneLocations: Describes the location of different zones within 
    the array design.
    
    Attributes
        Inherites attributes from base class Extendable.
    
        spacingsBetweenZonesX: Spacing between zones, if applicable.
    
        spacingsBetweenZonesY: Spacing between zones, if applicable.
    
        zonesPerX: The number of zones on the x-axis.
    
        zonesPerY: The number of zones on the y-axis.
-->
<!ELEMENT ZoneGroups_assnlist (ZoneGroup+) >

<!ELEMENT ZoneGroup ((%Extendable_content;),
		DistanceUnit_assn?,
		ZoneLayout_assn?,
		ZoneLocations_assnlist?) >
<!ATTLIST ZoneGroup %Extendable_attrs;
		spacingsBetweenZonesX CDATA #IMPLIED
		spacingsBetweenZonesY CDATA #IMPLIED
		zonesPerX CDATA #IMPLIED
		zonesPerY CDATA #IMPLIED >

<!--
    Element and Attlist declarations for ZoneLayout
    
    Specifies the layout of features in a rectangular grid.
    
    Associations
        Inherites associations from base class Extendable.
    
        distanceUnit: Unit of the ZoneLayout attributes.
    
    Attributes
        Inherites attributes from base class Extendable.
    
        numFeaturesPerRow: The number of features from left to right.
    
        numFeaturesPerCol: The number of features from top to bottom of 
    the grid.
    
        spacingBetweenRows: Spacing between the rows.
    
        spacingBetweenCols: Spacing between the columns.
-->
<!ELEMENT ZoneLayout_assn (ZoneLayout) >

<!ELEMENT ZoneLayout ((%Extendable_content;),
		DistanceUnit_assn?) >
<!ATTLIST ZoneLayout %Extendable_attrs;
		numFeaturesPerRow CDATA #IMPLIED
		numFeaturesPerCol CDATA #IMPLIED
		spacingBetweenRows CDATA #IMPLIED
		spacingBetweenCols CDATA #IMPLIED >

<!--
    AuditAndSecurity_package
    
    Specifies classes that allow tracking of changes and information on 
    user permissions to view the data and annotation.
-->
<!ELEMENT AuditAndSecurity_package (Contact_assnlist?,
		SecurityGroup_assnlist?,
		Security_assnlist?) >

<!--
    Element and Attlist declarations for Audit
    
    Tracks information on the contact that creates or modifies an 
    object.
    
    Associations
        Inherites associations from base class Describable.
    
        performer: The contact for creating or changing the instance 
    referred to by the Audit.
    
    Attributes
        Inherites attributes from base class Describable.
    
        date: The date of a change.
    
        action: Indicates whether an action is a creation or a 
    modification.
-->
<!ELEMENT AuditTrail_assnlist (Audit+) >

<!ELEMENT Audit ((%Describable_content;),
		Performer_assnref?) >
<!ATTLIST Audit %Describable_attrs;
		date CDATA #REQUIRED
		action (creation|
			modification) #REQUIRED >

<!--
    Element and Attlist declarations for Contact
    
    A contact is either a person or an organization.
    
    Associations
        Inherites associations from base class Identifiable.
    
        roles: The roles (lab equipment sales, contractor, etc.) the 
    contact fills.
    
    Attributes
        Inherites attributes from base class Identifiable.
    
        URI: null
    
        address: null
    
        phone: null
    
        tollFreePhone: null
    
        email: null
    
        fax: null
-->
<!ELEMENT Contact_assnlist ((%Contact_classes;)+) >

<!ELEMENT ArrayManufacturers_assnreflist ((%Contact_ref;)+) >
<!ELEMENT Contacts_assnreflist ((%Contact_ref;)+) >
<!ELEMENT DesignProviders_assnreflist ((%Contact_ref;)+) >
<!ELEMENT HardwareManufacturers_assnreflist ((%Contact_ref;)+) >
<!ELEMENT Members_assnreflist ((%Contact_ref;)+) >
<!ELEMENT Owner_assnreflist ((%Contact_ref;)+) >
<!ELEMENT Performer_assnref ((%Contact_ref;)) >
<!ELEMENT Providers_assnreflist ((%Contact_ref;)+) >
<!ELEMENT SoftwareManufacturers_assnreflist ((%Contact_ref;)+) >
<!ELEMENT SourceContact_assnreflist ((%Contact_ref;)+) >

<!ELEMENT Contact_ref EMPTY >
<!ATTLIST Contact_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >


<!--
    Element and Attlist declarations for Organization
    
    Organizations are entities like companies, universities, government 
    agencies for which the attributes are self describing.
    
    Associations
        Inherites associations from base class Contact.
    
        parent: The containing organization (the university or business 
    which a lab belongs to, etc.)
    
    Attributes
        Inherites attributes from base class Contact.
-->
<!ELEMENT Organization_assnlist (Organization+) >

<!ELEMENT Affiliation_assnref (Organization_ref) >
<!ELEMENT Parent_assnref (Organization_ref) >

<!ELEMENT Organization_ref EMPTY >
<!ATTLIST Organization_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Organization ((%Contact_content;),
		Parent_assnref?) >
<!ATTLIST Organization %Contact_attrs; >

<!--
    Element and Attlist declarations for Person
    
    A person for which the attributes are self describing.
    
    Associations
        Inherites associations from base class Contact.
    
        affiliation: The organization a person belongs to.
    
    Attributes
        Inherites attributes from base class Contact.
    
        lastName: null
    
        firstName: null
    
        midInitials: null
-->
<!ELEMENT Person_assnlist (Person+) >

<!ELEMENT Performers_assnreflist (Person_ref+) >

<!ELEMENT Person_ref EMPTY >
<!ATTLIST Person_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Person ((%Contact_content;),
		Affiliation_assnref?) >
<!ATTLIST Person %Contact_attrs;
		lastName CDATA #IMPLIED
		firstName CDATA #IMPLIED
		midInitials CDATA #IMPLIED >

<!--
    Element and Attlist declarations for Security
    
    Permission information for an object as to ownership, write and read 
    permissions.
    
    Associations
        Inherites associations from base class Identifiable.
    
        owner: The owner of the security rights.
    
        securityGroups: Specifies which security groups have permission 
    to view the associated object.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ELEMENT Security_assnlist (Security+) >

<!ELEMENT Security_assnref (Security_ref) >

<!ELEMENT Security_ref EMPTY >
<!ATTLIST Security_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Security ((%Identifiable_content;),
		Owner_assnreflist?,
		SecurityGroups_assnreflist?) >
<!ATTLIST Security %Identifiable_attrs; >

<!--
    Element and Attlist declarations for SecurityGroup
    
    Groups contacts together based on their security privileges.
    
    Associations
        Inherites associations from base class Identifiable.
    
        members: The members of the Security Group.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ELEMENT SecurityGroup_assnlist (SecurityGroup+) >

<!ELEMENT SecurityGroups_assnreflist (SecurityGroup_ref+) >

<!ELEMENT SecurityGroup_ref EMPTY >
<!ATTLIST SecurityGroup_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT SecurityGroup ((%Identifiable_content;),
		Members_assnreflist) >
<!ATTLIST SecurityGroup %Identifiable_attrs; >

<!--
    Measurement_package
    
    The classes of this package provide utility information on the 
    quantities of other classes to each other.
-->
<!ELEMENT Measurement_package EMPTY >

<!--
    Element and Attlist declarations for Measurement
    
    A Measurement is a quantity with a unit.
    
    Associations
        Inherites associations from base class Extendable.
    
        unit: The Unit associated with the Measurement.
    
    Attributes
        Inherites attributes from base class Extendable.
    
        type: 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).
    
        value: The value of the measurement.  kindCV (and otherKind) 
    determine with Unit the datatype of value.
    
        kindCV: One of the enumeration values to determine the 
    controlled vocabulary of the value.
    
        otherKind: Name of the controlled vocabulary if it isn't one of 
    the Unit subclasses.
-->
<!ELEMENT ActionMeasurement_assn (Measurement) >
<!ELEMENT DefaultValue_assn (Measurement) >
<!ELEMENT Measurement_assn (Measurement) >

<!ELEMENT Measurement ((%Extendable_content;),
		Unit_assn?) >
<!ATTLIST Measurement %Extendable_attrs;
		type (absolute|
			change) "absolute"
		value CDATA #IMPLIED
		kindCV (time|
			distance|
			temperature|
			quantity|
			mass|
			volume|
			concentration|
			other) "other"
		otherKind CDATA #IMPLIED >

<!--
    Element and Attlist declarations for Unit
    
    The unit is a strict enumeration of types.
    
    Associations
        Inherites associations from base class Extendable.
    
    Attributes
        Inherites attributes from base class Extendable.
    
        unitName: The name of the unit.
-->
<!ELEMENT Unit_assn ((%Unit_classes;)) >


<!--
    Element and Attlist declarations for ConcentrationUnit
    
    Concentration
    
    Associations
        Inherites associations from base class Unit.
    
    Attributes
        Inherites attributes from base class Unit.
    
        unitNameCV: null
-->
<!ELEMENT ConcentrationUnit ((%Unit_content;)) >
<!ATTLIST ConcentrationUnit %Unit_attrs;
		unitNameCV (M|
			mM|
			uM|
			nM|
			pM|
			fM|
			mg_per_mL|
			mL_per_L|
			g_per_L|
			gram_percent|
			mass_per_volume_percent|
			mass_per_mass_percent|
			other) #REQUIRED >

<!--
    Element and Attlist declarations for DistanceUnit
    
    Distance
    
    Associations
        Inherites associations from base class Unit.
    
    Attributes
        Inherites attributes from base class Unit.
    
        unitNameCV: null
-->
<!ELEMENT DistanceUnit_assn (DistanceUnit) >

<!ELEMENT DistanceUnit ((%Unit_content;)) >
<!ATTLIST DistanceUnit %Unit_attrs;
		unitNameCV (fm|
			pm|
			nm|
			um|
			mm|
			cm|
			m|
			other) #REQUIRED >

<!--
    Element and Attlist declarations for MassUnit
    
    Mass
    
    Associations
        Inherites associations from base class Unit.
    
    Attributes
        Inherites attributes from base class Unit.
    
        unitNameCV: null
-->
<!ELEMENT MassUnit ((%Unit_content;)) >
<!ATTLIST MassUnit %Unit_attrs;
		unitNameCV (kg|
			g|
			mg|
			ug|
			ng|
			pg|
			fg|
			other) #REQUIRED >

<!--
    Element and Attlist declarations for QuantityUnit
    
    Quantity
    
    Associations
        Inherites associations from base class Unit.
    
    Attributes
        Inherites attributes from base class Unit.
    
        unitNameCV: null
-->
<!ELEMENT QuantityUnit ((%Unit_content;)) >
<!ATTLIST QuantityUnit %Unit_attrs;
		unitNameCV (mol|
			amol|
			fmol|
			pmol|
			nmol|
			umol|
			mmol|
			molecules|
			other) #REQUIRED >

<!--
    Element and Attlist declarations for TemperatureUnit
    
    Temperature
    
    Associations
        Inherites associations from base class Unit.
    
    Attributes
        Inherites attributes from base class Unit.
    
        unitNameCV: null
-->
<!ELEMENT TemperatureUnit ((%Unit_content;)) >
<!ATTLIST TemperatureUnit %Unit_attrs;
		unitNameCV (degree_C|
			degree_F|
			K) #REQUIRED >

<!--
    Element and Attlist declarations for TimeUnit
    
    Time
    
    Associations
        Inherites associations from base class Unit.
    
    Attributes
        Inherites attributes from base class Unit.
    
        unitNameCV: null
-->
<!ELEMENT TimeUnit ((%Unit_content;)) >
<!ATTLIST TimeUnit %Unit_attrs;
		unitNameCV (years|
			months|
			weeks|
			d|
			h|
			m|
			s|
			us|
			other) #REQUIRED >

<!--
    Element and Attlist declarations for VolumeUnit
    
    Volume
    
    Associations
        Inherites associations from base class Unit.
    
    Attributes
        Inherites attributes from base class Unit.
    
        unitNameCV: null
-->
<!ELEMENT VolumeUnit ((%Unit_content;)) >
<!ATTLIST VolumeUnit %Unit_attrs;
		unitNameCV (mL|
			cc|
			dL|
			L|
			uL|
			nL|
			pL|
			fL|
			other) #REQUIRED >

<!--
    Experiment_package
    
    Represents the container for a hierarchical grouping of BioAssays.  
    Can have the end results of Clustering Analysis specified and, 
    through the ExperimentDesign, a description and annotation of the 
    overall design of the experiment and what it was to show.
-->
<!ELEMENT Experiment_package (Experiment_assnlist?) >

<!--
    Element and Attlist declarations for Experiment
    
    The Experiment is the collection of all the BioAssays that are 
    related by the ExperimentDesign.
    
    Associations
        Inherites associations from base class Identifiable.
    
        providers: The providers of the Experiment, its data and 
    annotation.
    
        analysisResults: The results of analyzing the data, typically 
    with a clustering algorithm.
    
        bioAssayData: The collection of BioAssayDatas for this 
    Experiment.
    
        bioAssays: The collection of BioAssays for this Experiment.
    
        experimentDesigns: The association to the description and 
    annotation of the Experiment, along with the grouping of the 
    top-level BioAssays.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ELEMENT Experiment_assnlist (Experiment+) >


<!ELEMENT Experiment ((%Identifiable_content;),
		Providers_assnreflist?,
		AnalysisResults_assnreflist?,
		BioAssayData_assnreflist?,
		BioAssays_assnreflist?,
		ExperimentDesigns_assnlist) >
<!ATTLIST Experiment %Identifiable_attrs; >

<!--
    Element and Attlist declarations for ExperimentDesign
    
    The ExperimentDesign is the description and collection of 
    ExperimentalFactors and the hierarchy of BioAssays to which they 
    pertain.
    
    Associations
        Inherites associations from base class Describable.
    
        types: Classification of an experiment.  For example 'normal vs. 
    diseased', 'treated vs. untreated', 'time course', 'tiling', etc.
    
        topLevelBioAssays: The organization of the BioAssays as 
    specified by the ExperimentDesign (TimeCourse, Dosage, etc.)
    
        experimentalFactors: The description of the factors (TimeCourse, 
    Dosage, etc.) that group the BioAssays.
    
        qualityControlDescription: Description of the quality control 
    aspects of the Experiment.
    
        normalizationDescription: Description of the normalization 
    strategy of the Experiment.
    
        replicateDescription: Description of the replicate strategy of 
    the Experiment.
    
    Attributes
        Inherites attributes from base class Describable.
-->
<!ELEMENT ExperimentDesigns_assnlist (ExperimentDesign+) >

<!ELEMENT ExperimentDesign ((%Describable_content;),
		Types_assnlist?,
		TopLevelBioAssays_assnreflist?,
		ExperimentalFactors_assnlist?,
		QualityControlDescription_assn?,
		NormalizationDescription_assn?,
		ReplicateDescription_assn?) >
<!ATTLIST ExperimentDesign %Describable_attrs; >

<!--
    Element and Attlist declarations for ExperimentalFactor
    
    ExperimentFactors are the dependent variables of an experiment (e.g. 
    time, glucose concentration, ...).
    
    Associations
        Inherites associations from base class Identifiable.
    
        category: The category of an ExperimentalFactor could be 
    biological (time, [glucose]) or a methodological factor (differing 
    cDNA preparation protocols).
    
        factorValues: The pairing of BioAssay FactorValues with the 
    ExperimentDesign ExperimentFactor.
    
        annotations: Allows describing additional information such as 
    concentration of Tamoxafin with a CASRegistry #.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ELEMENT ExperimentalFactor_assnref (ExperimentalFactor_ref) >
<!ELEMENT ExperimentalFactors_assnlist (ExperimentalFactor+) >

<!ELEMENT ExperimentalFactor_ref EMPTY >
<!ATTLIST ExperimentalFactor_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT ExperimentalFactor ((%Identifiable_content;),
		Category_assn?,
		FactorValues_assnlist?,
		Annotations_assnlist?) >
<!ATTLIST ExperimentalFactor %Identifiable_attrs; >

<!--
    Element and Attlist declarations for FactorValue
    
    The value for a ExperimentalFactor
    
    Associations
        Inherites associations from base class Identifiable.
    
        experimentalFactor: The pairing of BioAssay FactorValues with 
    the ExperimentDesign ExperimentFactor.
    
        measurement: The measured value for this factor.
    
        value: Allows a more complex value to be specified for a 
    FactorValue than a simple Measurement.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ELEMENT BioAssayFactorValues_assnreflist (FactorValue_ref+) >
<!ELEMENT FactorValues_assnlist (FactorValue+) >

<!ELEMENT FactorValue_ref EMPTY >
<!ATTLIST FactorValue_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT FactorValue ((%Identifiable_content;),
		(Measurement_assn? | Value_assn?)) >
<!ATTLIST FactorValue %Identifiable_attrs; >

<!--
    Array_package
    
    Describes the process of creating arrays from array designs.  
    Includes information on how arrays are grouped together, if 
    relevant, how an array deviates from its array design both in layout 
    and per feature and potentially contains references to LIMS data 
    that might contain more detail on the BioMaterial used to create the 
    reporters.
-->
<!ELEMENT Array_package (ArrayGroup_assnlist?,
		Array_assnlist?,
		ArrayManufacture_assnlist?) >

<!--
    Element and Attlist declarations for Array
    
    The physical substrate along with its features and their annotation
    
    Associations
        Inherites associations from base class Identifiable.
    
        arrayDesign: The association of a physical array with its array 
    design.
    
        information: Association between the manufactured array and the 
    information on that manufacture.
    
        arrayGroup: 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. 
    
        arrayManufactureDeviations: Association to classes to describe 
    deviations from the ArrayDesign.
    
    Attributes
        Inherites attributes from base class Identifiable.
    
        arrayIdentifier: An identifying string, e.g. a barcode.
    
        arrayXOrigin: This can indicate the x position on a slide, chip, 
    etc. of the first Feature and is usually specified relative to the 
    fiducial.
    
        arrayYOrigin: This can indicate the y position on a slide, chip, 
    etc. of the first Feature and is usually specified relative to the 
    fiducial.
    
        originRelativeTo: What the array origin is relative to, e.g. 
    upper left corner, fiducial, etc.
-->
<!ELEMENT Array_assnlist (Array+) >

<!ELEMENT Array_assnref (Array_ref) >
<!ELEMENT Arrays_assnreflist (Array_ref+) >

<!ELEMENT Array_ref EMPTY >
<!ATTLIST Array_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Array ((%Identifiable_content;),
		ArrayDesign_assnref,
		Information_assnref,
		ArrayGroup_assnref?,
		ArrayManufactureDeviations_assnlist?) >
<!ATTLIST Array %Identifiable_attrs;
		arrayIdentifier CDATA #IMPLIED
		arrayXOrigin CDATA #IMPLIED
		arrayYOrigin CDATA #IMPLIED
		originRelativeTo CDATA #IMPLIED >

<!--
    Element and Attlist declarations for ArrayGroup
    
    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.
    
    Associations
        Inherites associations from base class Identifiable.
    
        fiducials: Association to the marks on the Array for alignment 
    for the scanner.
    
        arrays: 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. 
    
        substrateType: 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.
    
        distanceUnit: The unit of the measurement attributes.
    
    Attributes
        Inherites attributes from base class Identifiable.
    
        barcode: Identifier for the ArrayGroup.
    
        arraySpacingX: 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. 
    
        arraySpacingY: 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. 
    
        numArrays: This attribute defines the number of arrays on a chip 
    or a slide. 
    
        orientationMark: 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.
    
        orientationMarkPosition: One of top, bottom, left or right.
    
        width: The width of the platform
    
        length: The length of the platform.
-->
<!ELEMENT ArrayGroup_assnlist (ArrayGroup+) >

<!ELEMENT ArrayGroup_assnref (ArrayGroup_ref) >

<!ELEMENT ArrayGroup_ref EMPTY >
<!ATTLIST ArrayGroup_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT ArrayGroup ((%Identifiable_content;),
		Fiducials_assnlist?,
		Arrays_assnreflist,
		SubstrateType_assn?,
		DistanceUnit_assn?) >
<!ATTLIST ArrayGroup %Identifiable_attrs;
		barcode CDATA #IMPLIED
		arraySpacingX CDATA #IMPLIED
		arraySpacingY CDATA #IMPLIED
		numArrays CDATA #IMPLIED
		orientationMark CDATA #IMPLIED
		orientationMarkPosition (top|
			bottom|
			left|
			right) #IMPLIED
		width CDATA #IMPLIED
		length CDATA #IMPLIED >

<!--
    Element and Attlist declarations for ArrayManufacture
    
    Describes the process by which arrays are produced.  
    
    Associations
        Inherites associations from base class Identifiable.
    
        arrays: Association between the manufactured array and the 
    information on that manufacture.
    
        arrayManufacturers: The person or organization to contact for 
    information concerning the ArrayManufacture.
    
        qualityControlStatistics: Information on the quality of the 
    ArrayManufacture.
    
        featureLIMSs: Information on the manufacture of the features.
    
        protocolApplications: The protocols followed in the 
    manufacturing of the arrays.
    
    Attributes
        Inherites attributes from base class Identifiable.
    
        manufacturingDate: The date the arrays were manufactured
    
        tolerance: The allowable error of a feature printed to its 
    intended position.
-->
<!ELEMENT ArrayManufacture_assnlist (ArrayManufacture+) >

<!ELEMENT Information_assnref (ArrayManufacture_ref) >

<!ELEMENT ArrayManufacture_ref EMPTY >
<!ATTLIST ArrayManufacture_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT ArrayManufacture ((%Identifiable_content;),
		Arrays_assnreflist,
		ArrayManufacturers_assnreflist?,
		QualityControlStatistics_assnlist?,
		FeatureLIMSs_assnlist?,
		ProtocolApplications_assnlist?) >
<!ATTLIST ArrayManufacture %Identifiable_attrs;
		manufacturingDate CDATA #IMPLIED
		tolerance CDATA #IMPLIED >

<!--
    Element and Attlist declarations for ArrayManufactureDeviation
    
    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).
    
    Associations
        Inherites associations from base class Extendable.
    
        adjustments: Descriptions of how a Zone has been printed 
    differently than specified in the ArrayDesign.
    
        featureDefects: Description on features who are manufactured in 
    a different location than specified in the ArrayDesign.
    
    Attributes
        Inherites attributes from base class Extendable.
-->
<!ELEMENT ArrayManufactureDeviations_assnlist (ArrayManufactureDeviation+) >

<!ELEMENT ArrayManufactureDeviation ((%Extendable_content;),
		Adjustments_assnlist?,
		FeatureDefects_assnlist?) >
<!ATTLIST ArrayManufactureDeviation %Extendable_attrs; >

<!--
    Element and Attlist declarations for FeatureDefect
    
    Stores the defect information for a feature.
    
    Associations
        Inherites associations from base class Extendable.
    
        defectType: Indicates the type of defect (e.g. a missing feature 
    or a moved feature).
    
        positionDelta: How the feature deviates in position from the 
    ArrayDesign.
    
        feature: The feature that was manufactured defectively.
    
    Attributes
        Inherites attributes from base class Extendable.
-->
<!ELEMENT FeatureDefects_assnlist (FeatureDefect+) >

<!ELEMENT FeatureDefect ((%Extendable_content;),
		DefectType_assn,
		PositionDelta_assn?,
		Feature_assnref) >
<!ATTLIST FeatureDefect %Extendable_attrs; >

<!--
    Element and Attlist declarations for Fiducial
    
    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.
    
    Associations
        Inherites associations from base class Describable.
    
        fiducialType: A descriptive string that indicates the type of a 
    fiducial (e.g. the chrome border on an Affymetrix array, a laser 
    ablation mark).
    
        distanceUnit: The units the fiducial is measured in.
    
        position: The position, relative to the upper left corner, of 
    the fiducial
    
    Attributes
        Inherites attributes from base class Describable.
-->
<!ELEMENT Fiducials_assnlist (Fiducial+) >

<!ELEMENT Fiducial ((%Describable_content;),
		FiducialType_assn?,
		DistanceUnit_assn?,
		Position_assn) >
<!ATTLIST Fiducial %Describable_attrs; >

<!--
    Element and Attlist declarations for ManufactureLIMS
    
    Information on the physical production of arrays within the 
    laboratory.
    
    Associations
        Inherites associations from base class Describable.
    
        feature: The feature whose LIMS information is being described.
    
        bioMaterial: The BioMaterial used for the feature.
    
        identifierLIMS: Association to a LIMS data source for further 
    information on the manufacturing process.
    
    Attributes
        Inherites attributes from base class Describable.
    
        quality: A brief description of the quality of the array 
    manufacture process.
-->
<!ELEMENT FeatureLIMSs_assnlist ((%ManufactureLIMS_classes;)+) >

<!ELEMENT ManufactureLIMS ((%ManufactureLIMS_content;)) >
<!ATTLIST ManufactureLIMS %ManufactureLIMS_attrs; >

<!--
    Element and Attlist declarations for ManufactureLIMSBiomaterial
    
    Stores the location from which a biomaterial was obtained.
    
    Associations
        Inherites associations from base class ManufactureLIMS.
    
    Attributes
        Inherites attributes from base class ManufactureLIMS.
    
        bioMaterialPlateIdentifier: The plate from which a biomaterial 
    was obtained.
    
        bioMaterialPlateRow: The plate row from which a biomaterial was 
    obtained.  Specified by a letter.
    
        bioMaterialPlateCol: The plate column from which a biomaterial 
    was obtained.  Specified by a number.
-->
<!ELEMENT ManufactureLIMSBiomaterial ((%ManufactureLIMS_content;)) >
<!ATTLIST ManufactureLIMSBiomaterial %ManufactureLIMS_attrs;
		bioMaterialPlateIdentifier CDATA #IMPLIED
		bioMaterialPlateRow CDATA #IMPLIED
		bioMaterialPlateCol CDATA #IMPLIED >

<!--
    Element and Attlist declarations for PositionDelta
    
    The delta the feature was actually printed on the array from the 
    position specified for the feature in the array design.
    
    Associations
        Inherites associations from base class Extendable.
    
        distanceUnit: The unit for the attributes.
    
    Attributes
        Inherites attributes from base class Extendable.
    
        deltaX: Deviation from the y coordinate of this feature's 
    position.
    
        deltaY: Deviation from the y coordinate of this feature's 
    position.
-->
<!ELEMENT PositionDelta_assn (PositionDelta) >

<!ELEMENT PositionDelta ((%Extendable_content;),
		DistanceUnit_assn?) >
<!ATTLIST PositionDelta %Extendable_attrs;
		deltaX CDATA #REQUIRED
		deltaY CDATA #REQUIRED >

<!--
    Element and Attlist declarations for ZoneDefect
    
    Stores the defect information for a zone.
    
    Associations
        Inherites associations from base class Extendable.
    
        defectType: Indicates the type of defect (e.g. a missing zone or 
    a moved zone).
    
        positionDelta: How the zone deviates in position from the 
    ArrayDesign.
    
        zone: Reference to the Zone that was misprinted.
    
    Attributes
        Inherites attributes from base class Extendable.
-->
<!ELEMENT Adjustments_assnlist (ZoneDefect+) >

<!ELEMENT ZoneDefect ((%Extendable_content;),
		DefectType_assn,
		PositionDelta_assn?,
		Zone_assnref) >
<!ATTLIST ZoneDefect %Extendable_attrs; >

<!--
    HigherLevelAnalysis_package
    
    Describes the results of performing analysis on the result of the 
    BioAssayData from an Experiment.
-->
<!ELEMENT HigherLevelAnalysis_package (BioAssayDataCluster_assnlist?) >

<!--
    Element and Attlist declarations for BioAssayDataCluster
    
    A mathematical method of higher level analysis whereby BioAssayData 
    are grouped together into nodes.
    
    Associations
        Inherites associations from base class Identifiable.
    
        clusterBioAssayData: The BioAssayData whose values were used by 
    the cluster algorithm.
    
        nodes: The nodes of the cluster.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ELEMENT BioAssayDataCluster_assnlist (BioAssayDataCluster+) >

<!ELEMENT AnalysisResults_assnreflist (BioAssayDataCluster_ref+) >

<!ELEMENT BioAssayDataCluster_ref EMPTY >
<!ATTLIST BioAssayDataCluster_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT BioAssayDataCluster ((%Identifiable_content;),
		ClusterBioAssayData_assnref?,
		Nodes_assnlist) >
<!ATTLIST BioAssayDataCluster %Identifiable_attrs; >

<!--
    Element and Attlist declarations for Node
    
    An individual component of a clustering.  May contain other nodes.
    
    Associations
        Inherites associations from base class Describable.
    
        nodes: Nested nodes of the BioAssayDataCluster.
    
        nodeContents: The contents of the node, expressed as either a 
    one, two or three dimensional object.
    
        nodeValue: Values or measurements for this node that may be 
    produced by the clustering algorithm.  Typical are distance values 
    for the nodes.
    
    Attributes
        Inherites attributes from base class Describable.
-->
<!ELEMENT Nodes_assnlist (Node+) >

<!ELEMENT Node ((%Describable_content;),
		Nodes_assnlist?,
		NodeContents_assnlist?,
		NodeValue_assnlist?) >
<!ATTLIST Node %Describable_attrs; >

<!--
    Element and Attlist declarations for NodeContents
    
    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.
    
    Associations
        Inherites associations from base class Describable.
    
        bioAssayDimension: The relevant BioAssays for this NodeContents 
    from the BioAssayData.
    
        designElementDimension: The relevant DesignElements for this 
    NodeContents from the BioAssayData.
    
        quantitationDimension: The relevant QuantitationTypes for this 
    NodeContents from the BioAssayData.
    
    Attributes
        Inherites attributes from base class Describable.
-->
<!ELEMENT NodeContents_assnlist (NodeContents+) >

<!ELEMENT NodeContents ((%Describable_content;),
		BioAssayDimension_assnref?,
		DesignElementDimension_assnref?,
		QuantitationDimension_assnref?) >
<!ATTLIST NodeContents %Describable_attrs; >

<!--
    Element and Attlist declarations for NodeValue
    
    A value associated with the Node that can rank it in relation to the 
    other nodes produced by the clustering algorithm.
    
    Associations
        Inherites associations from base class Extendable.
    
        type: The type of value, distance, etc.
    
        scale: The scale (linear, log10, ln, etc.) of the value.
    
        dataType: The data type of the any element.
    
    Attributes
        Inherites attributes from base class Extendable.
    
        name: The name for this value.
    
        value: The value for this NodeValue.
-->
<!ELEMENT NodeValue_assnlist (NodeValue+) >

<!ELEMENT NodeValue ((%Extendable_content;),
		Type_assn,
		Scale_assn?,
		DataType_assn?) >
<!ATTLIST NodeValue %Extendable_attrs;
		name CDATA #IMPLIED
		value CDATA #REQUIRED >

<!--
    Protocol_package
    
    Provides a relatively immutable class, Protocol, that can describe a 
    generic laboratory procedure or analysis algorithm, for example, and 
    an instance class, ProtocolApplication, which can describe the 
    actual application of a protocol. The ProtocolApplication provides 
    values for the replaceable parameters of the Protocol and, through 
    the Description association of Describable, any variation from the 
    Protocol.
-->
<!ELEMENT Protocol_package (Hardware_assnlist?,
		Software_assnlist?,
		Protocol_assnlist?) >

<!--
    Element and Attlist declarations for Parameter
    
    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.  
    
    Associations
        Inherites associations from base class Identifiable.
    
        defaultValue: Allows the optional specification of a default 
    values and the unit for the Parameter
    
        dataType: The type of data generated by the parameter i.e. 
    Boolean, float, etc...
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ELEMENT ParameterType_assnref (Parameter_ref) >
<!ELEMENT ParameterTypes_assnlist (Parameter+) >

<!ELEMENT Parameter_ref EMPTY >
<!ATTLIST Parameter_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Parameter ((%Identifiable_content;),
		DefaultValue_assn?,
		DataType_assn?) >
<!ATTLIST Parameter %Identifiable_attrs; >

<!--
    Element and Attlist declarations for ParameterValue
    
    The value of a Parameter.
    
    Associations
        Inherites associations from base class Extendable.
    
        parameterType: The parameter this value is for.
    
    Attributes
        Inherites attributes from base class Extendable.
    
        value: The value of the parameter.  Will have the datatype of 
    its associated Parameter.
-->
<!ELEMENT ParameterValues_assnlist (ParameterValue+) >

<!ELEMENT ParameterValue ((%Extendable_content;),
		ParameterType_assnref) >
<!ATTLIST ParameterValue %Extendable_attrs;
		value CDATA #IMPLIED >

<!--
    Element and Attlist declarations for Hardware
    
    Hardware represents the hardware used.  Examples of Hardware 
    include: computers, scanners, wash stations etc...
    
    Associations
        Inherites associations from base class Parameterizable.
    
        type: The type of a piece of Hardware.  Examples include: 
    scanner, wash station...
    
        softwares: Associates Hardware and Software together.
    
        hardwareManufacturers: Contact for information on the Hardware.
    
    Attributes
        Inherites attributes from base class Parameterizable.
    
        model: The model (number) of a piece of hardware.
    
        make: The make of the Hardware (its manufacturer).
-->
<!ELEMENT Hardware_assnlist (Hardware+) >

<!ELEMENT Hardware_assnref (Hardware_ref) >
<!ELEMENT Hardwares_assnreflist (Hardware_ref+) >

<!ELEMENT Hardware_ref EMPTY >
<!ATTLIST Hardware_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Hardware ((%Parameterizable_content;),
		Type_assn?,
		Softwares_assnreflist?,
		HardwareManufacturers_assnreflist?) >
<!ATTLIST Hardware %Parameterizable_attrs;
		model CDATA #IMPLIED
		make CDATA #IMPLIED >

<!--
    Element and Attlist declarations for HardwareApplication
    
    The use of a piece of hardware with the requisite Parameters and 
    ParameterValues.
    
    Associations
        Inherites associations from base class 
    ParameterizableApplication.
    
        hardware: The underlying hardware.
    
    Attributes
        Inherites attributes from base class ParameterizableApplication.
    
        serialNumber: Manufacturer's identifier for the Hardware.
-->
<!ELEMENT HardwareApplications_assnlist (HardwareApplication+) >

<!ELEMENT HardwareApplication ((%ParameterizableApplication_content;),
		Hardware_assnref) >
<!ATTLIST HardwareApplication %ParameterizableApplication_attrs;
		serialNumber CDATA #IMPLIED >

<!--
    Element and Attlist declarations for Protocol
    
    A Protocol is a parameterizable description of a method.  
    ProtocolApplication is used to specify the ParameterValues of it's 
    Protocol's Parameters.
    
    Associations
        Inherites associations from base class Parameterizable.
    
        type: The type of a Protocol,  a user should provide/use a 
    recommended vocabulary.  Examples of types include:  RNA extraction, 
    array washing, etc...
    
        hardwares: Hardware used by this protocol.
    
        softwares: Software used by this Protocol.
    
    Attributes
        Inherites attributes from base class Parameterizable.
    
        text: The text description of the Protocol.
    
        title: The title of the Protocol
-->
<!ELEMENT Protocol_assnlist (Protocol+) >

<!ELEMENT Protocol_assnref (Protocol_ref) >

<!ELEMENT Protocol_ref EMPTY >
<!ATTLIST Protocol_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Protocol ((%Parameterizable_content;),
		Type_assn?,
		Hardwares_assnreflist?,
		Softwares_assnreflist?) >
<!ATTLIST Protocol %Parameterizable_attrs;
		text CDATA #IMPLIED
		title CDATA #IMPLIED >

<!--
    Element and Attlist declarations for ProtocolApplication
    
    The use of a protocol with the requisite Parameters and 
    ParameterValues.
    
    Associations
        Inherites associations from base class 
    ParameterizableApplication.
    
        hardwareApplications: The use of hardware for the application of 
    the protocol.
    
        softwareApplications: The use of software for the application of 
    the protocol.
    
        performers: The people who performed the protocol.
    
        protocol: The protocol that is being used.
    
    Attributes
        Inherites attributes from base class ParameterizableApplication.
    
        activityDate: When the protocol was applied.
-->
<!ELEMENT ProtocolApplications_assnlist (ProtocolApplication+) >

<!ELEMENT ProtocolApplication ((%ParameterizableApplication_content;),
		HardwareApplications_assnlist?,
		SoftwareApplications_assnlist?,
		Performers_assnreflist?,
		Protocol_assnref) >
<!ATTLIST ProtocolApplication %ParameterizableApplication_attrs;
		activityDate CDATA #REQUIRED >

<!--
    Element and Attlist declarations for Software
    
    Software represents the software used.  Examples of Software 
    include: feature extraction software, clustering software, etc...
    
    Associations
        Inherites associations from base class Parameterizable.
    
        type: The type of a piece of Software.  Examples include: 
    feature extractor...
    
        hardware: Associates Hardware and Software together.
    
        softwares: Software packages this software uses, i.e. operating 
    system, 3rd party software packages, etc.
    
        softwareManufacturers: Contact for information on the software.
    
    Attributes
        Inherites attributes from base class Parameterizable.
-->
<!ELEMENT Software_assnlist (Software+) >

<!ELEMENT Software_assnref (Software_ref) >
<!ELEMENT Softwares_assnreflist (Software_ref+) >

<!ELEMENT Software_ref EMPTY >
<!ATTLIST Software_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Software ((%Parameterizable_content;),
		Type_assn?,
		Hardware_assnref?,
		Softwares_assnreflist?,
		SoftwareManufacturers_assnreflist?) >
<!ATTLIST Software %Parameterizable_attrs; >

<!--
    Element and Attlist declarations for SoftwareApplication
    
    The use of a piece of software with the requisite Parameters and 
    ParameterValues.
    
    Associations
        Inherites associations from base class 
    ParameterizableApplication.
    
        software: The underlying software.
    
    Attributes
        Inherites attributes from base class ParameterizableApplication.
    
        version: The version of the software.
    
        releaseDate: When the software was released.
-->
<!ELEMENT SoftwareApplications_assnlist (SoftwareApplication+) >

<!ELEMENT SoftwareApplication ((%ParameterizableApplication_content;),
		Software_assnref) >
<!ATTLIST SoftwareApplication %ParameterizableApplication_attrs;
		version CDATA #IMPLIED
		releaseDate CDATA #IMPLIED >

<!--
    BioSequence_package
    
    Describes a known gene or sequence.  BioAssays typically seek to 
    identify what BioSequences are expressed in a BioMaterial after 
    treatments, the expression level measured from the association 
    between the BioMaterial and the Array.  The Array's Features 
    typically provide known locations for this association to occur.  
    Most often, the Reporter and CompositeSequence are known and the 
    presence or absence of a particular BioSequence in the BioMaterial 
    is based on whether there as been an association to the 
    DesignElement targeted for it.  Some other experiments may not know 
    the DesignElement's target but can discover it with known properties 
    of the BioSequences in the BioMaterial.
-->
<!ELEMENT BioSequence_package (BioSequence_assnlist?) >

<!--
    Element and Attlist declarations for BioSequence
    
    A BioSequence is a representation of a DNA, RNA, or protein 
    sequence.  It can be represented by a Clone, Gene, or the sequence.
    
    Associations
        Inherites associations from base class Identifiable.
    
        sequenceDatabases: References an entry in a species database, 
    like GenBank, UniGene, etc.
    
        ontologyEntries: Ontology entries referring to common values 
    associated with BioSequences, such as gene names, go ids, etc.
    
        polymerType: A choice of protein, RNA, or DNA.
    
        type: The type of biosequence, i.e. gene, exon, UniGene cluster, 
    fragment, BAC, EST, etc.
    
        species: The organism from which this sequence was obtained.
    
        seqFeatures: Association to annotations for subsequences.  
    Corresponds to the GenBank Frame Table.
    
    Attributes
        Inherites attributes from base class Identifiable.
    
        length: The number of residues in the biosequence.
    
        isApproximateLength: If length not positively known will be true
    
        isCircular: Indicates if the BioSequence is circular in nature.
    
        sequence: The actual components of the sequence, for instance, 
    for DNA a string consisting of A,T,C and G.
    
    The attribute is optional and instead of specified here, can be 
    found through the DatabaseEntry.
-->
<!ELEMENT BioSequence_assnlist (BioSequence+) >

<!ELEMENT BiologicalCharacteristics_assnreflist (BioSequence_ref+) >
<!ELEMENT ImmobilizedCharacteristics_assnreflist (BioSequence_ref+) >

<!ELEMENT BioSequence_ref EMPTY >
<!ATTLIST BioSequence_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT BioSequence ((%Identifiable_content;),
		SequenceDatabases_assnlist?,
		OntologyEntries_assnlist?,
		PolymerType_assn,
		Type_assn,
		Species_assn?,
		SeqFeatures_assnlist?) >
<!ATTLIST BioSequence %Identifiable_attrs;
		length CDATA #IMPLIED
		isApproximateLength CDATA #IMPLIED
		isCircular CDATA #IMPLIED
		sequence CDATA #IMPLIED >

<!--
    Element and Attlist declarations for SeqFeature
    
    Represents, in general, what would be a GenBank Feature Table 
    annotation for a sequence.
    
    Associations
        Inherites associations from base class Describable.
    
        regions: Association to classes that describe the location with 
    the sequence of the SeqFeature.
    
    Attributes
        Inherites attributes from base class Describable.
    
        basis: How the evidence for a SeqFeature was determined.
-->
<!ELEMENT SeqFeatures_assnlist (SeqFeature+) >

<!ELEMENT SeqFeature ((%Describable_content;),
		Regions_assnlist?) >
<!ATTLIST SeqFeature %Describable_attrs;
		basis (experimental|
			computational|
			both|
			unknown|
			NA) #REQUIRED >

<!--
    Element and Attlist declarations for SeqFeatureLocation
    
    The location of the SeqFeature annotation.
    
    Associations
        Inherites associations from base class Extendable.
    
        subregions: Regions within the SeqFeature.
    
        coordinate: At which base pairs or amino acid this SeqFeature 
    begins and ends.
    
    Attributes
        Inherites attributes from base class Extendable.
    
        strandType: Indicates the direction and/or type of the 
    SeqFeature, i.e. whether it is in the 5' or 3' direction, is double 
    stranded, etc.
-->
<!ELEMENT Regions_assnlist (SeqFeatureLocation+) >
<!ELEMENT Subregions_assnlist (SeqFeatureLocation+) >

<!ELEMENT SeqFeatureLocation ((%Extendable_content;),
		Subregions_assnlist?,
		Coordinate_assn) >
<!ATTLIST SeqFeatureLocation %Extendable_attrs;
		strandType CDATA #REQUIRED >

<!--
    Element and Attlist declarations for SequencePosition
    
    Designates the position of the Feature in its BioSequence.
    
    Associations
        Inherites associations from base class Extendable.
    
    Attributes
        Inherites attributes from base class Extendable.
    
        start: The location of the base, for nucleotides, that the 
    SeqFeature starts. 
    
        end: The location of the base, for nucleotides, that the 
    SeqFeature ends.
-->
<!ELEMENT Coordinate_assn ((%SequencePosition_classes;)) >

<!ELEMENT SequencePosition ((%SequencePosition_content;)) >
<!ATTLIST SequencePosition %SequencePosition_attrs; >

<!--
    BQS_package
    
    Allows a reference to an article, book or other publication to be 
    specified for searching repositories.
-->
<!ELEMENT BQS_package EMPTY >

<!--
    Element and Attlist declarations for BibliographicReference
    
    Attributes for the most common criteria and association with 
    OntologyEntry allows criteria to be specified for searching for a 
    Bibliographic reference.
    
    
    Associations
        Inherites associations from base class Describable.
    
        parameters: Criteria that can be used to look up the reference 
    in a repository.
    
        accessions: References in publications, eg Medline and PubMed, 
    for this BibliographicReference.
    
    Attributes
        Inherites attributes from base class Describable.
    
        title: null
    
        authors: null
    
        publication: null
    
        publisher: null
    
        editor: null
    
        year: null
    
        volume: null
    
        issue: null
    
        pages: null
    
        URI: null
-->
<!ELEMENT BibliographicReferences_assnlist (BibliographicReference+) >

<!ELEMENT BibliographicReference ((%Describable_content;),
		Parameters_assnlist,
		Accessions_assnlist?) >
<!ATTLIST BibliographicReference %Describable_attrs;
		title CDATA #IMPLIED
		authors CDATA #IMPLIED
		publication CDATA #IMPLIED
		publisher CDATA #IMPLIED
		editor CDATA #IMPLIED
		year CDATA #IMPLIED
		volume CDATA #IMPLIED
		issue CDATA #IMPLIED
		pages CDATA #IMPLIED
		URI CDATA #IMPLIED >

<!--
    BioEvent_package
    
    An abstract class representing an event that takes sources of some 
    type to produce a target of some type.  Each of the realized 
    subclasses determines the type of the sources and the target.  The 
    association to a protocol application allows specification of how 
    the event was performed.
-->
<!ELEMENT BioEvent_package EMPTY >

<!--
    BioMaterial_package
    
    The classes in this package describe how a BioSource is treated to 
    obtain the BioMaterial (typically a LabeledExtract) that is used by 
    a BioAssayCreation in combination with an Array to produce a 
    PhysicalBioAssay.  A set of treatments are typically linear in time 
    but can form a Directed Acyclic Graph.
-->
<!ELEMENT BioMaterial_package (Compound_assnlist?,
		BioMaterial_assnlist?) >

<!--
    Element and Attlist declarations for BioMaterial
    
    BioMaterial is an abstract class that represents the important 
    substances such as cells, tissues, DNA, proteins, etc...  
    Biomaterials can be related to other biomaterial through a directed 
    acyclic graph (represented by treatment(s)).
    
    Associations
        Inherites associations from base class Identifiable.
    
        qualityControlStatistics: Measures of the quality of the 
    BioMaterial.
    
        characteristics: Innate properties of the biosource, such as 
    genotype, cultivar, tissue type, cell type, ploidy, etc.
    
        materialType: The type of material used, i.e. rna, dna, lipid, 
    phosphoprotein, etc.
    
        treatments: 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.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ELEMENT BioMaterial_assnlist ((%BioMaterial_classes;)+) >

<!ELEMENT BioMaterial_assnref ((%BioMaterial_ref;)) >

<!ELEMENT BioMaterial_ref EMPTY >
<!ATTLIST BioMaterial_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >


<!--
    Element and Attlist declarations for BioMaterialMeasurement
    
    A BioMaterialMeasurement is a pairing of a source BioMaterial and an 
    amount (Measurement) of that BioMaterial.
    
    Associations
        Inherites associations from base class Extendable.
    
        bioMaterial: A source BioMaterial for a treatment.
    
        measurement: The amount of the BioMaterial.
    
    Attributes
        Inherites attributes from base class Extendable.
-->
<!ELEMENT SourceBioMaterialMeasurements_assnlist (BioMaterialMeasurement+) >

<!ELEMENT BioMaterialMeasurement ((%Extendable_content;),
		BioMaterial_assnref,
		Measurement_assn?) >
<!ATTLIST BioMaterialMeasurement %Extendable_attrs; >

<!--
    Element and Attlist declarations for BioSample
    
    BioSamples are products of treatments that are of interest.  
    BioSamples are often used as the sources for other biosamples.  The 
    Type attribute describes the role the BioSample holds in the 
    treatment hierarchy.  This type can be an extract.
    
    Associations
        Inherites associations from base class BioMaterial.
    
        type: The Type attribute describes the role the BioSample holds 
    in the treatment hierarchy.  This type can be an extract.
    
    Attributes
        Inherites attributes from base class BioMaterial.
-->
<!ELEMENT BioSample_ref EMPTY >
<!ATTLIST BioSample_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT BioSample ((%BioMaterial_content;),
		Type_assn?) >
<!ATTLIST BioSample %BioMaterial_attrs; >

<!--
    Element and Attlist declarations for BioSource
    
    The BioSource is the original source material before any treatment 
    events.  It is also a top node of the directed acyclic graph 
    generated by treatments.   The association to OntologyEntry allows 
    enumeration of a BioSource's inherent properties.
    
    Associations
        Inherites associations from base class BioMaterial.
    
        sourceContact: 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).
    
    Attributes
        Inherites attributes from base class BioMaterial.
-->
<!ELEMENT BioSource_ref EMPTY >
<!ATTLIST BioSource_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT BioSource ((%BioMaterial_content;),
		SourceContact_assnreflist?) >
<!ATTLIST BioSource %BioMaterial_attrs; >

<!--
    Element and Attlist declarations for Compound
    
    A Compound can be a simple compound such as SDS (sodium dodecyl 
    sulfate).  It may also be made of other Compounds in proportions 
    using CompoundMeasurements to enumerate the Compounds and their 
    amounts such as LB (Luria Broth) Media.
    
    Associations
        Inherites associations from base class Identifiable.
    
        compoundIndices: Indices into common Compound Indices, such as 
    the Merck Index, for this Compound.
    
        componentCompounds: The Compounds and their amounts used to 
    create this Compound.
    
        externalLIMS: Reference to an entry in an external LIMS data 
    source.
    
    Attributes
        Inherites attributes from base class Identifiable.
    
        isSolvent: A Compound may be a special case Solvent.
-->
<!ELEMENT Compound_assnlist (Compound+) >

<!ELEMENT Compound_assnref (Compound_ref) >
<!ELEMENT Labels_assnreflist (Compound_ref+) >

<!ELEMENT Compound_ref EMPTY >
<!ATTLIST Compound_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Compound ((%Identifiable_content;),
		CompoundIndices_assnlist?,
		ComponentCompounds_assnlist?,
		ExternalLIMS_assn?) >
<!ATTLIST Compound %Identifiable_attrs;
		isSolvent CDATA "false" >

<!--
    Element and Attlist declarations for CompoundMeasurement
    
    A CompoundMeasurement is a pairing of a source Compound and an 
    amount (Measurement) of that Compound.
    
    Associations
        Inherites associations from base class Extendable.
    
        compound: A Compound to be used to create another Compound.
    
        measurement: The amount of the Compound.
    
    Attributes
        Inherites attributes from base class Extendable.
-->
<!ELEMENT ComponentCompounds_assnlist (CompoundMeasurement+) >
<!ELEMENT CompoundMeasurements_assnlist (CompoundMeasurement+) >

<!ELEMENT CompoundMeasurement ((%Extendable_content;),
		Compound_assnref,
		Measurement_assn?) >
<!ATTLIST CompoundMeasurement %Extendable_attrs; >

<!--
    Element and Attlist declarations for LabeledExtract
    
    LabeledExtracts are special BioSamples that have Compounds which are 
    detectable (these are often fluorescent or reactive moieties).
    
    Associations
        Inherites associations from base class BioMaterial.
    
        labels: Compound used to label the extract.
    
    Attributes
        Inherites attributes from base class BioMaterial.
-->
<!ELEMENT LabeledExtract_ref EMPTY >
<!ATTLIST LabeledExtract_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT LabeledExtract ((%BioMaterial_content;),
		Labels_assnreflist) >
<!ATTLIST LabeledExtract %BioMaterial_attrs; >

<!--
    Element and Attlist declarations for Treatment
    
    The process by which a biomaterial is created (from source 
    biomaterials).  Treatments have an order and an action.
    
    Associations
        Inherites associations from base class BioEvent.
    
        action: The event that occurred (e.g. grow, wait, add, etc...).  
    The actions should be a recommended vocabulary
    
        actionMeasurement: Measures events like duration, centrifuge 
    speed, etc.
    
        compoundMeasurements: The compounds and their amounts used in 
    the treatment.
    
        sourceBioMaterialMeasurements: The BioMaterials and the amounts 
    used in the treatment
    
    Attributes
        Inherites attributes from base class BioEvent.
    
        order: 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.
-->
<!ELEMENT Treatments_assnlist (Treatment+) >

<!ELEMENT Treatment ((%BioEvent_content;),
		Action_assn,
		ActionMeasurement_assn?,
		CompoundMeasurements_assnlist?,
		SourceBioMaterialMeasurements_assnlist?) >
<!ATTLIST Treatment %BioEvent_attrs;
		order CDATA #IMPLIED >

<!--
    BioAssay_package
    
    Provides classes that contain information and annotation on the 
    event of joining an Array with a BioMaterial preparation, the 
    acquisition of images and the extraction of data on a per feature 
    basis from those images.  The derived classes of BioAssay represent 
    the base PhysicalBioAssays which lead to the production of Images, 
    the MeasuredBioAssay which is associated with the set of 
    quantitations produced by FeatureExtraction, and DerivedBioAssay 
    (see BioAssayData package) which groups together BioAssays that have 
    been analyzed together to produce further refinement of the 
    quantitations.
        
    The design of this package and the related BioAssayData package was 
    driven by the following query considerations and the desire to 
    return as little data as necessary to satisfy a query.   Often, the 
    first set of queries for experiments below the Experiment level will 
    want to discover the why of an experiment and this is captured in 
    the BioAssay class through its FactorValue, BioEvent and Description 
    associations.  This separates it from the data but allows an 
    overview of the experiment hierarchy.  The BioAssayData class 
    association to BioDataValues is optional only to allow queries on 
    them to discover the how of the experiment through the association 
    to the transformation and mappings of the three BioAssayData 
    dimensions and the protocols used.  Once a researcher, for instance, 
    has narrowed down the experiments of interest then the actual data, 
    represented by the BioDataValues, can be downloaded.  Because these 
    data can be in the hundreds of megabytes to gigabytes range, it was 
    considered desirable to be able to return information and annotation 
    on the experiment without the data.
-->
<!ELEMENT BioAssay_package (Channel_assnlist?,
		BioAssay_assnlist?) >

<!--
    Element and Attlist declarations for BioAssay
    
    An abstract class which represents both physical and computational 
    groupings of arrays and biomaterials.
    
    
    Associations
        Inherites associations from base class Identifiable.
    
        channels: Channels can be non-null for all subclasses.  For 
    instance, collapsing across replicate features will create a 
    DerivedBioAssay that will potentially reference channels.
    
        bioAssayFactorValues: The values that this BioAssay is 
    associated with for the experiment.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ELEMENT BioAssay_assnlist ((%BioAssay_classes;)+) >

<!ELEMENT BioAssay_assnref ((%BioAssay_ref;)) >
<!ELEMENT BioAssays_assnreflist ((%BioAssay_ref;)+) >
<!ELEMENT SourceBioAssays_assnreflist ((%BioAssay_ref;)+) >
<!ELEMENT TopLevelBioAssays_assnreflist ((%BioAssay_ref;)+) >

<!ELEMENT BioAssay_ref EMPTY >
<!ATTLIST BioAssay_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >


<!--
    Element and Attlist declarations for BioAssayCreation
    
    The process by which an array and one or more biomaterials are 
    combined to create a bioAssayCreation.
    
    Associations
        Inherites associations from base class BioEvent.
    
        sourceBioMaterialMeasurements: The BioSample and its amount used 
    in the BioAssayCreation event.
    
        array: The array used in the BioAssayCreation event.
    
        physicalBioAssayTarget: The association between the 
    BioAssayCreation event (typically Hybridization) and the 
    PhysicalBioAssay and its annotation of this event.
    
    Attributes
        Inherites attributes from base class BioEvent.
-->
<!ELEMENT BioAssayCreation_assn ((%BioAssayCreation_classes;)) >

<!ELEMENT BioAssayCreation ((%BioAssayCreation_content;)) >
<!ATTLIST BioAssayCreation %BioAssayCreation_attrs; >

<!--
    Element and Attlist declarations for BioAssayTreatment
    
    The event which records the process by which PhysicalBioAssays are 
    processed (typically washing, blocking, etc...).
    
    Associations
        Inherites associations from base class BioEvent.
    
        physicalBioAssay: The set of treatments undergone by this 
    PhysicalBioAssay.
    
        target: The PhysicalBioAssay that was treated.
    
    Attributes
        Inherites attributes from base class BioEvent.
-->
<!ELEMENT BioAssayTreatments_assnlist ((%BioAssayTreatment_classes;)+) >

<!ELEMENT BioAssayTreatment ((%BioAssayTreatment_content;)) >
<!ATTLIST BioAssayTreatment %BioAssayTreatment_attrs; >

<!--
    Element and Attlist declarations for Channel
    
    A channel represents an independent acquisition scheme for the 
    ImageAcquisition event, typically a wavelength.
    
    Associations
        Inherites associations from base class Identifiable.
    
        labels: The compound used to label the extract.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ELEMENT Channel_assnlist (Channel+) >

<!ELEMENT Channel_assnref (Channel_ref) >
<!ELEMENT Channels_assnreflist (Channel_ref+) >

<!ELEMENT Channel_ref EMPTY >
<!ATTLIST Channel_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Channel ((%Identifiable_content;),
		Labels_assnreflist?) >
<!ATTLIST Channel %Identifiable_attrs; >

<!--
    Element and Attlist declarations for DerivedBioAssay
    
    A BioAssay that is created by the Transformation BioEvent from one 
    or more MeasuredBioAssays or DerivedBioAssays.
    
    Associations
        Inherites associations from base class BioAssay.
    
        type: The derivation type, for instance collapsed spot 
    replicate, ratio, averaged intensity, bioassay replicates, etc.
    
        derivedBioAssayData: The data associated with the 
    DerivedBioAssay.
    
        derivedBioAssayMap: The DerivedBioAssay that is produced by the 
    sources of the BioAssayMap.
    
    Attributes
        Inherites attributes from base class BioAssay.
-->
<!ELEMENT DerivedBioAssay_assnlist (DerivedBioAssay+) >

<!ELEMENT BioAssayMapTarget_assnref (DerivedBioAssay_ref) >

<!ELEMENT DerivedBioAssay_ref EMPTY >
<!ATTLIST DerivedBioAssay_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT DerivedBioAssay ((%BioAssay_content;),
		Type_assn?,
		DerivedBioAssayData_assnreflist?,
		DerivedBioAssayMap_assnreflist?) >
<!ATTLIST DerivedBioAssay %BioAssay_attrs; >

<!--
    Element and Attlist declarations for FeatureExtraction
    
    The process by which data is extracted from an image producing a 
    measuredBioAssayData and a measuredBioAssay.
    
    Associations
        Inherites associations from base class BioEvent.
    
        physicalBioAssaySource: The PhysicalBioAssay used in the 
    FeatureExtraction event.
    
        measuredBioAssayTarget: The association between the 
    MeasuredBioAssay and the FeatureExtraction Event.
    
    Attributes
        Inherites attributes from base class BioEvent.
-->
<!ELEMENT FeatureExtraction_assn (FeatureExtraction) >

<!ELEMENT FeatureExtraction ((%BioEvent_content;),
		PhysicalBioAssaySource_assnref) >
<!ATTLIST FeatureExtraction %BioEvent_attrs; >

<!--
    Element and Attlist declarations for Hybridization
    
    The archetypal bioAssayCreation event, whereby biomaterials are 
    hybridized to an array.
    
    Associations
        Inherites associations from base class BioAssayCreation.
    
    Attributes
        Inherites attributes from base class BioAssayCreation.
-->
<!ELEMENT Hybridization ((%BioAssayCreation_content;)) >
<!ATTLIST Hybridization %BioAssayCreation_attrs; >

<!--
    Element and Attlist declarations for Image
    
    An image is created by an imageAcquisition event, typically by 
    scanning the hybridized array (the PhysicalBioAssay).
    
    
    Associations
        Inherites associations from base class Identifiable.
    
        channels: The channels captured in this image.
    
        format: The file format of the image typically a TIF or a JPEG.
    
    Attributes
        Inherites attributes from base class Identifiable.
    
        URI: The file location in which an image may be found.
-->
<!ELEMENT Images_assnreflist (Image_ref+) >
<!ELEMENT PhysicalBioAssayData_assnlist (Image+) >

<!ELEMENT Image_ref EMPTY >
<!ATTLIST Image_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Image ((%Identifiable_content;),
		Channels_assnreflist?,
		Format_assn) >
<!ATTLIST Image %Identifiable_attrs;
		URI CDATA #IMPLIED >

<!--
    Element and Attlist declarations for ImageAcquisition
    
    The process by which an image is generated (typically scanning).
    
    Associations
        Inherites associations from base class BioAssayTreatment.
    
        images: The images produced by the ImageAcquisition event.
    
    Attributes
        Inherites attributes from base class BioAssayTreatment.
-->
<!ELEMENT ImageAcquisition ((%BioAssayTreatment_content;),
		Images_assnreflist?) >
<!ATTLIST ImageAcquisition %BioAssayTreatment_attrs; >

<!--
    Element and Attlist declarations for MeasuredBioAssay
    
    A measured bioAssay is the direct processing of information in a 
    physical bioAssay by the featureExtraction event.  Often uses images 
    which are referenced through the physical bioAssay.
    
    Associations
        Inherites associations from base class BioAssay.
    
        featureExtraction: The association between the MeasuredBioAssay 
    and the FeatureExtraction Event.
    
        measuredBioAssayData: The data associated with the 
    MeasuredBioAssay.
    
    Attributes
        Inherites attributes from base class BioAssay.
-->
<!ELEMENT MeasuredBioAssay_assnlist (MeasuredBioAssay+) >

<!ELEMENT MeasuredBioAssayTarget_assnref (MeasuredBioAssay_ref) >

<!ELEMENT MeasuredBioAssay_ref EMPTY >
<!ATTLIST MeasuredBioAssay_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT MeasuredBioAssay ((%BioAssay_content;),
		FeatureExtraction_assn?,
		MeasuredBioAssayData_assnreflist?) >
<!ATTLIST MeasuredBioAssay %BioAssay_attrs; >

<!--
    Element and Attlist declarations for PhysicalBioAssay
    
    A bioAssay created by the bioAssayCreation event (e.g. in gene 
    expression analysis this event is represented by the hybridization 
    event).
    
    Associations
        Inherites associations from base class BioAssay.
    
        physicalBioAssayData: The Images associated with this 
    PhysicalBioAssay by ImageAcquisition.
    
        bioAssayCreation: The association between the BioAssayCreation 
    event (typically Hybridization) and the PhysicalBioAssay and its 
    annotation of this event.
    
        bioAssayTreatments: The set of treatments undergone by this 
    PhysicalBioAssay.
    
    Attributes
        Inherites attributes from base class BioAssay.
-->
<!ELEMENT PhysicalBioAssay_assnlist (PhysicalBioAssay+) >

<!ELEMENT PhysicalBioAssay_assnref (PhysicalBioAssay_ref) >
<!ELEMENT PhysicalBioAssaySource_assnref (PhysicalBioAssay_ref) >
<!ELEMENT PhysicalBioAssayTarget_assnref (PhysicalBioAssay_ref) >
<!ELEMENT Target_assnref (PhysicalBioAssay_ref) >

<!ELEMENT PhysicalBioAssay_ref EMPTY >
<!ATTLIST PhysicalBioAssay_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT PhysicalBioAssay ((%BioAssay_content;),
		PhysicalBioAssayData_assnlist?,
		BioAssayCreation_assn?,
		BioAssayTreatments_assnlist?) >
<!ATTLIST PhysicalBioAssay %BioAssay_attrs; >

<!--
    BioAssayData_package
    
    The classes defined here provide data and the information and 
    annotation on the derivation of that data.  Some of the scenarios 
    that might occur are the following.
    
    FeatureExtraction of a single PhysicalBioAssay produces 
    MeasuredBioAssayData that has a single BioAssay on the 
    BioAssayDimension, typically the Features described in the 
    ArrayDesign on the DesignElementDimension, and the Quantitations 
    associated with the application of a  FeatureExtraction protocol on 
    the QuantitationDimension.
    
    An error model transformation might be applied that doesn't change 
    the BioAssayDimension or the DesignElementDimension but likely 
    changes the QuantitationDimension.  A transformation on replicate 
    Reporters or CompositeSequences might be applied on the single 
    BioAssay that would change the DesignElementDimension and the 
    QuantitationDimension both.  Replicate and Control BioAssays might 
    be added to the BioAssayDimension and a transformation could change 
    the BioAssayDimension and the QuantitationDimension but not change 
    the DesignElementDimension to produce a new DerivedBioAssayData.  Or 
    some combination of the above transformations could be performed at 
    once to change all three dimensions.
    
    Because the classes derive from Describable, the Experimenter can 
    provide as much detail at each level of the class hierarchy as 
    desired.
-->
<!ELEMENT BioAssayData_package (BioAssayDimension_assnlist?,
		DesignElementDimension_assnlist?,
		QuantitationTypeDimension_assnlist?,
		BioAssayMap_assnlist?,
		QuantitationTypeMap_assnlist?,
		BioAssayData_assnlist?) >

<!--
    Element and Attlist declarations for BioAssayData
    
    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.
    
    Associations
        Inherites associations from base class Identifiable.
    
        summaryStatistics: Statistics on the Quality of the 
    BioAssayData.
    
        bioAssayDimension: The BioAssays of the BioAssayData.
    
        designElementDimension: The DesignElements of the BioAssayData.
    
        quantitationTypeDimension: The QuantitationTypes of the 
    BioAssayData.
    
        bioDataValues: The data values of the BioAssayData.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ELEMENT BioAssayData_assnlist ((%BioAssayData_classes;)+) >

<!ELEMENT BioAssayData_assnreflist ((%BioAssayData_ref;)+) >
<!ELEMENT BioAssayDataSources_assnreflist ((%BioAssayData_ref;)+) >
<!ELEMENT ClusterBioAssayData_assnref ((%BioAssayData_ref;)) >

<!ELEMENT BioAssayData_ref EMPTY >
<!ATTLIST BioAssayData_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >


<!--
    Element and Attlist declarations for BioAssayDimension
    
    An ordered list of bioAssays.
    
    Associations
        Inherites associations from base class Identifiable.
    
        bioAssays: The BioAssays for this Dimension
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ELEMENT BioAssayDimension_assnlist (BioAssayDimension+) >

<!ELEMENT BioAssayDimension_assnref (BioAssayDimension_ref) >

<!ELEMENT BioAssayDimension_ref EMPTY >
<!ATTLIST BioAssayDimension_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT BioAssayDimension ((%Identifiable_content;),
		BioAssays_assnreflist?) >
<!ATTLIST BioAssayDimension %Identifiable_attrs; >

<!--
    Element and Attlist declarations for BioAssayMap
    
    The BioAssayMap is the description of how source MeasuredBioAssays 
    and/or DerivedBioAssays are manipulated (mathematically) to produce 
    DerivedBioAssays.
    
    Associations
        Inherites associations from base class Map.
    
        bioAssayMapTarget: The DerivedBioAssay that is produced by the 
    sources of the BioAssayMap.
    
        sourceBioAssays: The sources of the BioAssayMap that are used to 
    produce a target DerivedBioAssay.
    
    Attributes
        Inherites attributes from base class Map.
-->
<!ELEMENT BioAssayMap_assnlist (BioAssayMap+) >

<!ELEMENT BioAssayMaps_assnreflist (BioAssayMap_ref+) >
<!ELEMENT DerivedBioAssayMap_assnreflist (BioAssayMap_ref+) >

<!ELEMENT BioAssayMap_ref EMPTY >
<!ATTLIST BioAssayMap_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT BioAssayMap ((%Map_content;),
		BioAssayMapTarget_assnref,
		SourceBioAssays_assnreflist?) >
<!ATTLIST BioAssayMap %Map_attrs; >

<!--
    Element and Attlist declarations for BioAssayMapping
    
    Container of the mappings of the input BioAssay dimensions to the 
    output BioAssay dimension.
    
    Associations
        Inherites associations from base class Extendable.
    
        bioAssayMaps: The maps for the BioAssays.
    
    Attributes
        Inherites attributes from base class Extendable.
-->
<!ELEMENT BioAssayMapping_assn (BioAssayMapping) >

<!ELEMENT BioAssayMapping ((%Extendable_content;),
		BioAssayMaps_assnreflist) >
<!ATTLIST BioAssayMapping %Extendable_attrs; >

<!--
    Element and Attlist declarations for BioAssayTuple
    
    Transformed container to specify a BioAssay and the Design Elements 
    and their data for that BioAssay.
    
    Associations
        bioAssay: The BioAssay associated with the value of the 
    BioAssayDatum.
    
        designElementTuples: DesignElement with the QuantitationTypes 
    and their values for this BioAssay
-->
<!ELEMENT BioAssayTuples_assnlist (BioAssayTuple+) >

<!ELEMENT BioAssayTuple (BioAssay_assnref,
		DesignElementTuples_assnlist) >

<!--
    Element and Attlist declarations for BioDataValues
    
    The actual values for the BioAssayCube. 
    
    Associations
        Inherites associations from base class Extendable.
    
    Attributes
        Inherites attributes from base class Extendable.
-->
<!ELEMENT BioDataValues_assn ((%BioDataValues_classes;)) >


<!--
    Element and Attlist declarations for BioDataCube
    
    A three-dimensional cube representation of the data.
    
    Associations
        Inherites associations from base class BioDataValues.
    
        dataInternal: Transformed class to associate white spaced 
    delimited data to the BioAssayDataCube
    
        dataExternal: Transformed class to associate external data to 
    the BioAssayDataCube
    
    Attributes
        Inherites attributes from base class BioDataValues.
    
        order: The order to expect the dimension.  The enumeration uses 
    the first letter of the three dimensions to represent the six 
    possible orderings.
-->
<!ELEMENT BioDataCube ((%BioDataValues_content;),
		(DataInternal_assn | DataExternal_assn)) >
<!ATTLIST BioDataCube %BioDataValues_attrs;
		order (BDQ|
			BQD|
			DBQ|
			DQB|
			QBD|
			QDB) "BDQ" >

<!--
    Element and Attlist declarations for BioDataTuples
    
    A relational, tuple representation of the data.
    
    Associations
        Inherites associations from base class BioDataValues.
    
        bioAssayTuples: Each BioAssayTuple contains the the Data for a 
    BioAssay.
    
    Attributes
        Inherites attributes from base class BioDataValues.
-->
<!ELEMENT BioDataTuples ((%BioDataValues_content;),
		BioAssayTuples_assnlist?) >
<!ATTLIST BioDataTuples %BioDataValues_attrs; >

<!--
    Element and Attlist declarations for DataExternal
    
    Transformed class to associate external data to the BioAssayDataCube
    
    Attributes
        dataFormat: The format of the external file, whitespace 
    delimited, tab delimited, netcdf, etc...
    
        dataFormatInfoURI: Location for documentation on the data format
    
        filenameURI: The name and location of the file containing the 
    external data
-->
<!ELEMENT DataExternal_assn (DataExternal) >

<!ELEMENT DataExternal EMPTY >
<!ATTLIST DataExternal dataFormat CDATA "whitespace"
		dataFormatInfoURI CDATA #IMPLIED
		filenameURI CDATA #REQUIRED >

<!--
    Element and Attlist declarations for DataInternal
    
    Transformed class to associate whitespaced delimited data to the 
    BioAssayDataCube
    
    Associations
        #PCDATA: The tab delimited data.
-->
<!ELEMENT DataInternal_assn (DataInternal) >

<!ELEMENT DataInternal (#PCDATA) >

<!--
    Element and Attlist declarations for Datum
    
    Transformed container to hold a value.  QuantitationType will 
    determine the type of this value.
    
    Attributes
        value: Value for the BioAssay, DesignElement and 
    QuantitationType specified by the parent tuple elements.
-->
<!ELEMENT Datum_assn (Datum) >

<!ELEMENT Datum EMPTY >
<!ATTLIST Datum value CDATA #REQUIRED >

<!--
    Element and Attlist declarations for DerivedBioAssayData
    
    The output of a transformation event.
    
    Associations
        Inherites associations from base class BioAssayData.
    
        producerTransformation: The association between the 
    DerivedBioAssayData and the Transformation event that produced it.
    
    Attributes
        Inherites attributes from base class BioAssayData.
-->
<!ELEMENT DerivedBioAssayData_assnlist (DerivedBioAssayData+) >

<!ELEMENT DerivedBioAssayData_assnreflist (DerivedBioAssayData_ref+) >
<!ELEMENT DerivedBioAssayDataTarget_assnref (DerivedBioAssayData_ref) >

<!ELEMENT DerivedBioAssayData_ref EMPTY >
<!ATTLIST DerivedBioAssayData_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT DerivedBioAssayData ((%BioAssayData_content;),
		ProducerTransformation_assn?) >
<!ATTLIST DerivedBioAssayData %BioAssayData_attrs; >

<!--
    Element and Attlist declarations for DesignElementDimension
    
    An ordered list of designElements. It will be realized as one of its 
    three subclasses.
    
    Associations
        Inherites associations from base class Identifiable.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ELEMENT DesignElementDimension_assnlist ((%DesignElementDimension_classes;)+) >

<!ELEMENT DesignElementDimension_assnref ((%DesignElementDimension_ref;)) >

<!ELEMENT DesignElementDimension_ref EMPTY >
<!ATTLIST DesignElementDimension_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >


<!--
    Element and Attlist declarations for CompositeSequenceDimension
    
    Specialized DesignElementDimension to hold CompositeSequences.
    
    Associations
        Inherites associations from base class DesignElementDimension.
    
        compositeSequences: The CompositeSequences for this Dimension.
    
    Attributes
        Inherites attributes from base class DesignElementDimension.
-->
<!ELEMENT CompositeSequenceDimension_ref EMPTY >
<!ATTLIST CompositeSequenceDimension_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT CompositeSequenceDimension ((%DesignElementDimension_content;),
		CompositeSequences_assnreflist?) >
<!ATTLIST CompositeSequenceDimension %DesignElementDimension_attrs; >

<!--
    Element and Attlist declarations for DesignElementMap
    
    A DesignElementMap is the description of how source DesignElements 
    are transformed into a target DesignElement.
    
    Associations
        Inherites associations from base class Map.
    
    Attributes
        Inherites attributes from base class Map.
-->
<!ELEMENT DesignElementMap_assnlist ((%DesignElementMap_classes;)+) >

<!ELEMENT DesignElementMaps_assnreflist ((%DesignElementMap_ref;)+) >

<!ELEMENT DesignElementMap_ref EMPTY >
<!ATTLIST DesignElementMap_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >


<!--
    Element and Attlist declarations for DesignElementMapping
    
    Container of the mappings of the input DesignElement dimensions to 
    the output DesignElement dimension.
    
    Associations
        Inherites associations from base class Extendable.
    
        designElementMaps: The maps for the DesignElements.
    
    Attributes
        Inherites attributes from base class Extendable.
-->
<!ELEMENT DesignElementMapping_assn (DesignElementMapping) >

<!ELEMENT DesignElementMapping ((%Extendable_content;),
		DesignElementMaps_assnreflist) >
<!ATTLIST DesignElementMapping %Extendable_attrs; >

<!--
    Element and Attlist declarations for DesignElementTuple
    
    Transformed container to specify a DesignElement and 
    QuantitationTypes for that Element.
    
    Associations
        designElement: The DesignElement associated with the value of 
    the BioAssayDatum.
    
        quantitationTypeTuples: A QuantitationType and the value 
    associated with it
-->
<!ELEMENT DesignElementTuples_assnlist (DesignElementTuple+) >

<!ELEMENT DesignElementTuple (DesignElement_assnref,
		QuantitationTypeTuples_assnlist) >

<!--
    Element and Attlist declarations for FeatureDimension
    
    Specialized DesignElementDimension to hold Features.
    
    Associations
        Inherites associations from base class DesignElementDimension.
    
        containedFeatures: The features for this dimension.
    
    Attributes
        Inherites attributes from base class DesignElementDimension.
-->
<!ELEMENT FeatureDimension_ref EMPTY >
<!ATTLIST FeatureDimension_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT FeatureDimension ((%DesignElementDimension_content;),
		ContainedFeatures_assnreflist?) >
<!ATTLIST FeatureDimension %DesignElementDimension_attrs; >

<!--
    Element and Attlist declarations for MeasuredBioAssayData
    
    The data associated with the MeasuredBioAssay produced by 
    FeatureExtraction.
    
    Associations
        Inherites associations from base class BioAssayData.
    
    Attributes
        Inherites attributes from base class BioAssayData.
-->
<!ELEMENT MeasuredBioAssayData_assnlist (MeasuredBioAssayData+) >

<!ELEMENT MeasuredBioAssayData_assnreflist (MeasuredBioAssayData_ref+) >

<!ELEMENT MeasuredBioAssayData_ref EMPTY >
<!ATTLIST MeasuredBioAssayData_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT MeasuredBioAssayData ((%BioAssayData_content;)) >
<!ATTLIST MeasuredBioAssayData %BioAssayData_attrs; >

<!--
    Element and Attlist declarations for QuantitationTypeDimension
    
    An ordered list of quantitationTypes.
    
    Associations
        Inherites associations from base class Identifiable.
    
        quantitationTypes: The QuantitationTypes for this Dimension.
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ELEMENT QuantitationTypeDimension_assnlist (QuantitationTypeDimension+) >

<!ELEMENT QuantitationDimension_assnref (QuantitationTypeDimension_ref) >
<!ELEMENT QuantitationTypeDimension_assnref (QuantitationTypeDimension_ref) >

<!ELEMENT QuantitationTypeDimension_ref EMPTY >
<!ATTLIST QuantitationTypeDimension_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT QuantitationTypeDimension ((%Identifiable_content;),
		QuantitationTypes_assnreflist?) >
<!ATTLIST QuantitationTypeDimension %Identifiable_attrs; >

<!--
    Element and Attlist declarations for QuantitationTypeMap
    
    A QuantitationTypeMap is the description of how source 
    QuantitationTypes are mathematically transformed into a target 
    QuantitationType.
    
    Associations
        Inherites associations from base class Map.
    
        targetQuantitationType: The QuantitationType whose value will be 
    produced from the values of the source QuantitationType according to 
    the Protocol.
    
        sourcesQuantitationType: The QuantitationType sources for values 
    for the transformation.
    
    Attributes
        Inherites attributes from base class Map.
-->
<!ELEMENT QuantitationTypeMap_assnlist (QuantitationTypeMap+) >

<!ELEMENT QuantitationTypeMaps_assnreflist (QuantitationTypeMap_ref+) >

<!ELEMENT QuantitationTypeMap_ref EMPTY >
<!ATTLIST QuantitationTypeMap_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT QuantitationTypeMap ((%Map_content;),
		TargetQuantitationType_assnref,
		SourcesQuantitationType_assnreflist?) >
<!ATTLIST QuantitationTypeMap %Map_attrs; >

<!--
    Element and Attlist declarations for QuantitationTypeMapping
    
    Container of the mappings of the input QuantitationType dimensions 
    to the output QuantitationType dimension.
    
    Associations
        Inherites associations from base class Extendable.
    
        quantitationTypeMaps: The maps for the QuantitationTypes.
    
    Attributes
        Inherites attributes from base class Extendable.
-->
<!ELEMENT QuantitationTypeMapping_assn (QuantitationTypeMapping) >

<!ELEMENT QuantitationTypeMapping ((%Extendable_content;),
		QuantitationTypeMaps_assnreflist) >
<!ATTLIST QuantitationTypeMapping %Extendable_attrs; >

<!--
    Element and Attlist declarations for QuantitationTypeTuple
    
    Transformed container to specify a Quantitation Type and the value 
    for that Type.
    
    Associations
        quantitationType: The QuantitationType associated with the value 
    of the BioAssayDatum.
    
        datum: The value to associate with the Quantitation Type.
-->
<!ELEMENT QuantitationTypeTuples_assnlist (QuantitationTypeTuple+) >

<!ELEMENT QuantitationTypeTuple (QuantitationType_assnref,
		Datum_assn) >

<!--
    Element and Attlist declarations for ReporterDimension
    
    Specialized DesignElementDimension to hold Reporters.
    
    Associations
        Inherites associations from base class DesignElementDimension.
    
        reporters: The reporters for this dimension.
    
    Attributes
        Inherites attributes from base class DesignElementDimension.
-->
<!ELEMENT ReporterDimension_ref EMPTY >
<!ATTLIST ReporterDimension_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT ReporterDimension ((%DesignElementDimension_content;),
		Reporters_assnreflist?) >
<!ATTLIST ReporterDimension %DesignElementDimension_attrs; >

<!--
    Element and Attlist declarations for Transformation
    
    The process by which derivedBioAssays are created from 
    measuredBioAssays and/or derivedBioAssays.  It uses mappings to 
    indicate the input and output dimensions.  
    
    Associations
        Inherites associations from base class BioEvent.
    
        bioAssayDataSources: The BioAssayData sources that the 
    Transformation event uses to produce the target DerivedBioAssayData.
    
        derivedBioAssayDataTarget: The association between the 
    DerivedBioAssayData and the Transformation event that produced it.
    
        quantitationTypeMapping: The collection of mappings for the 
    QuantitationTypes.
    
        designElementMapping: The collection of mappings for the 
    DesignElements.
    
        bioAssayMapping: The collection of mappings for the BioAssays.
    
    Attributes
        Inherites attributes from base class BioEvent.
-->
<!ELEMENT ProducerTransformation_assn (Transformation) >

<!ELEMENT Transformation ((%BioEvent_content;),
		BioAssayDataSources_assnreflist?,
		QuantitationTypeMapping_assn?,
		DesignElementMapping_assn?,
		BioAssayMapping_assn?) >
<!ATTLIST Transformation %BioEvent_attrs; >

<!--
    DesignElement_package
    
    The classes of this package are the contained classes of the 
    ArrayDesign and describe through the DesignElements what is intended 
    to be at each location of the Array.  The Feature describes an 
    intended location on the Array, the Reporter the Oligo, Clone, PCR 
    Product that is on a Feature and the CompositeSequence which 
    combines Reporters or CompositeSequences into what the child 
    DesignElements are meant to represent biologically, e.g. a Gene, 
    Exon, SpliceVariant, etc.
-->
<!ELEMENT DesignElement_package (CompositeSequence_assnlist?,
		Reporter_assnlist?,
		CompositeCompositeMap_assnlist?,
		ReporterCompositeMap_assnlist?,
		FeatureReporterMap_assnlist?) >

<!--
    Element and Attlist declarations for CompositeCompositeMap
    
    A CompositeCompositeMap is the description of how source 
    CompositeSequences are transformed into a target CompositeSequence.  
     For instance, several CompositeSequences could represent different 
    sequence regions for a Gene and could be mapped to different 
    CompositeSequences, each representing a different splice variant for 
    that Gene.
    
    Associations
        Inherites associations from base class DesignElementMap.
    
        compositeSequence: A map to the compositeSequences that compose 
    this CompositeSequence.
    
        compositePositionSources: Association to the CompositeSequences 
    that compose this CompositeSequence and where those 
    CompositeSequences occur.
    
    Attributes
        Inherites attributes from base class DesignElementMap.
-->
<!ELEMENT CompositeCompositeMap_assnlist (CompositeCompositeMap+) >

<!ELEMENT CompositeCompositeMaps_assnreflist (CompositeCompositeMap_ref+) >

<!ELEMENT CompositeCompositeMap_ref EMPTY >
<!ATTLIST CompositeCompositeMap_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT CompositeCompositeMap ((%DesignElementMap_content;),
		CompositeSequence_assnref,
		CompositePositionSources_assnlist) >
<!ATTLIST CompositeCompositeMap %DesignElementMap_attrs; >

<!--
    Element and Attlist declarations for CompositePosition
    
    The location in the compositeSequence target's sequence to which a 
    source compositeSequence maps.  The association to 
    MismatchInformation allows the specification, usually for control 
    purposes, of deviations from the CompositeSequence's BioMaterial.
    
    Associations
        Inherites associations from base class SequencePosition.
    
        composite: A source CompositeSequence that is part of a target 
    CompositeSequence
    
        mismatchInformation: Differences in how the contained 
    compositeSequence matches its target compositeSequence's sequence.
    
    Attributes
        Inherites attributes from base class SequencePosition.
-->
<!ELEMENT CompositePositionSources_assnlist (CompositePosition+) >

<!ELEMENT CompositePosition ((%SequencePosition_content;),
		Composite_assnref,
		MismatchInformation_assnlist?) >
<!ATTLIST CompositePosition %SequencePosition_attrs; >

<!--
    Element and Attlist declarations for DesignElement
    
    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.
    
    Associations
        Inherites associations from base class Identifiable.
    
        controlType: If the design element represents a control, the 
    type of control it is (normalization, deletion, negative, positive, 
    etc.)
    
    Attributes
        Inherites attributes from base class Identifiable.
-->
<!ELEMENT DesignElement_assnlist ((%DesignElement_classes;)+) >

<!ELEMENT DesignElement_assnref ((%DesignElement_ref;)) >

<!ELEMENT DesignElement_ref EMPTY >
<!ATTLIST DesignElement_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >


<!--
    Element and Attlist declarations for CompositeSequence
    
    A collection of Reporter or CompositeSequence Design Elements, 
    annotated through the association to BioSequence. 
    
    
    Associations
        Inherites associations from base class DesignElement.
    
        biologicalCharacteristics: The annotation on the BioSequence 
    this CompositeSequence represents.  Typically the sequences will be 
    a Genes, Exons, or SpliceVariants.
    
        reporterCompositeMaps: A map to the reporters that compose this 
    CompositeSequence.
    
        compositeCompositeMaps: A map to the compositeSequences that 
    compose this CompositeSequence.
    
    Attributes
        Inherites attributes from base class DesignElement.
-->
<!ELEMENT CompositeSequence_assnlist (CompositeSequence+) >

<!ELEMENT Composite_assnref (CompositeSequence_ref) >
<!ELEMENT CompositeSequence_assnref (CompositeSequence_ref) >
<!ELEMENT CompositeSequences_assnreflist (CompositeSequence_ref+) >

<!ELEMENT CompositeSequence_ref EMPTY >
<!ATTLIST CompositeSequence_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT CompositeSequence ((%DesignElement_content;),
		BiologicalCharacteristics_assnreflist?,
		(ReporterCompositeMaps_assnreflist? | CompositeCompositeMaps_assnreflist?)) >
<!ATTLIST CompositeSequence %DesignElement_attrs; >

<!--
    Element and Attlist declarations for Feature
    
    An intended  position on an array.
    
    
    Associations
        Inherites associations from base class DesignElement.
    
        controlFeatures: Associates features with their control 
    features.
    
        controlledFeatures: Associates features with their control 
    features.
    
        position: The position of the feature on the array, relative to 
    the top, left corner.
    
        zone: A reference to the zone this feature is in.
    
        featureLocation: Location of this feature relative to a grid.
    
        featureGroup: The features that belong to this group.
    
    Attributes
        Inherites attributes from base class DesignElement.
-->
<!ELEMENT ContainedFeatures_assnreflist (Feature_ref+) >
<!ELEMENT ControlFeatures_assnreflist (Feature_ref+) >
<!ELEMENT ControlledFeatures_assnreflist (Feature_ref+) >
<!ELEMENT Feature_assnref (Feature_ref) >
<!ELEMENT Features_assnlist (Feature+) >

<!ELEMENT Feature_ref EMPTY >
<!ATTLIST Feature_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Feature ((%DesignElement_content;),
		ControlFeatures_assnreflist?,
		ControlledFeatures_assnreflist?,
		Position_assn?,
		Zone_assnref?,
		FeatureLocation_assn?) >
<!ATTLIST Feature %DesignElement_attrs; >

<!--
    Element and Attlist declarations for FeatureInformation
    
    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. 
    
    Associations
        Inherites associations from base class Extendable.
    
        feature: The feature the FeatureInformation is supplying 
    information for.
    
        mismatchInformation: 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.
    
    Attributes
        Inherites attributes from base class Extendable.
-->
<!ELEMENT FeatureInformationSources_assnlist (FeatureInformation+) >

<!ELEMENT FeatureInformation ((%Extendable_content;),
		Feature_assnref,
		MismatchInformation_assnlist?) >
<!ATTLIST FeatureInformation %Extendable_attrs; >

<!--
    Element and Attlist declarations for FeatureLocation
    
    Specifies where a feature is located relative to a grid.
    
    Associations
        Inherites associations from base class Extendable.
    
    Attributes
        Inherites attributes from base class Extendable.
    
        row: row position in the Zone
    
        column: column position in the Zone.
-->
<!ELEMENT FeatureLocation_assn (FeatureLocation) >

<!ELEMENT FeatureLocation ((%Extendable_content;)) >
<!ATTLIST FeatureLocation %Extendable_attrs;
		row CDATA #REQUIRED
		column CDATA #REQUIRED >

<!--
    Element and Attlist declarations for FeatureReporterMap
    
    A FeatureReporterMap is the description of how source features are 
    transformed into a target reporter.  These would map replicate 
    features for a reporter to the reporter.
    
    Associations
        Inherites associations from base class DesignElementMap.
    
        reporter: Associates features with their reporter.
    
        featureInformationSources: Typically, the features on an array 
    that are manufactured with this reporter's BioSequence.
    
    Attributes
        Inherites attributes from base class DesignElementMap.
-->
<!ELEMENT FeatureReporterMap_assnlist (FeatureReporterMap+) >

<!ELEMENT FeatureReporterMaps_assnreflist (FeatureReporterMap_ref+) >

<!ELEMENT FeatureReporterMap_ref EMPTY >
<!ATTLIST FeatureReporterMap_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT FeatureReporterMap ((%DesignElementMap_content;),
		Reporter_assnref,
		FeatureInformationSources_assnlist) >
<!ATTLIST FeatureReporterMap %DesignElementMap_attrs; >

<!--
    Element and Attlist declarations for MismatchInformation
    
    Describes how a reporter varies from its ReporterCharacteristics 
    sequence(s) or how a Feature varies from its Reporter sequence.
    
    Associations
        Inherites associations from base class Extendable.
    
    Attributes
        Inherites attributes from base class Extendable.
    
        startCoord: Offset into the sequence that the mismatch occurs.
    
        newSequence: The sequence that replaces the specified sequence 
    starting at start_coord.
    
        replacedLength: Length of the original sequence that is 
    replaced.  A deletion is specified when the length of the 
    newSequence is less than the replacedLength.
-->
<!ELEMENT MismatchInformation_assnlist (MismatchInformation+) >

<!ELEMENT MismatchInformation ((%Extendable_content;)) >
<!ATTLIST MismatchInformation %Extendable_attrs;
		startCoord CDATA #REQUIRED
		newSequence CDATA #IMPLIED
		replacedLength CDATA #REQUIRED >

<!--
    Element and Attlist declarations for Position
    
    Specifies a position on an array.
    
    Associations
        Inherites associations from base class Extendable.
    
        distanceUnit: The units of the x, y positions.
    
    Attributes
        Inherites attributes from base class Extendable.
    
        x: The horizontal distance from the upper left corner of the 
    array.
    
        y: The vertical distance from the upper left corner of the 
    array.
-->
<!ELEMENT Position_assn (Position) >

<!ELEMENT Position ((%Extendable_content;),
		DistanceUnit_assn?) >
<!ATTLIST Position %Extendable_attrs;
		x CDATA #REQUIRED
		y CDATA #REQUIRED >

<!--
    Element and Attlist declarations for Reporter
    
    A Design Element that represents some biological material (clone, 
    oligo, etc.) on an array which will report on some biosequence or 
    biosequences.  The derived data from the measured data of its 
    Features represents the presence or absence of the biosequence or 
    biosequences it is reporting on in the BioAssay.
    
    Reporters are Identifiable and several Features on the same array 
    can be mapped to the same reporter as can Features from a different 
    ArrayDesign.  The granularity of the Reporters independence is 
    dependent on the technology and the intent of the ArrayDesign.  
    Oligos using mature technologies can in general be assumed to be 
    safely replicated on many features where as with PCR Products there 
    might be the desire for quality assurence to make reporters one to 
    one with features and use the mappings to CompositeSequences for 
    replication purposes.
    
    Associations
        Inherites associations from base class DesignElement.
    
        immobilizedCharacteristics: The sequence annotation on the 
    BioMaterial this reporter represents.  Typically the sequences will 
    be an Oligo Sequence, Clone or PCR Primer.
    
        warningType: Similar to failType but indicates a warning rather 
    than a failure.
    
        failTypes: If at some time the reporter is determined to be 
    failed this indicts the failure (doesn't report on what it was 
    intended to report on, etc.)
    
        featureReporterMaps: Associates features with their reporter.
    
    Attributes
        Inherites attributes from base class DesignElement.
-->
<!ELEMENT Reporter_assnlist (Reporter+) >

<!ELEMENT Reporter_assnref (Reporter_ref) >
<!ELEMENT Reporters_assnreflist (Reporter_ref+) >

<!ELEMENT Reporter_ref EMPTY >
<!ATTLIST Reporter_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT Reporter ((%DesignElement_content;),
		ImmobilizedCharacteristics_assnreflist?,
		WarningType_assn?,
		FailTypes_assnlist?,
		FeatureReporterMaps_assnreflist?) >
<!ATTLIST Reporter %DesignElement_attrs; >

<!--
    Element and Attlist declarations for ReporterCompositeMap
    
    A ReporterCompositeMap is the description of how source Reporters 
    are transformed into a target CompositeSequences.  For instance, 
    several reporters that tile across a section of a chromosome could 
    be mapped to a CompositeSequence.
    
    Associations
        Inherites associations from base class DesignElementMap.
    
        compositeSequence: A map to the reporters that compose this 
    CompositeSequence.
    
        reporterPositionSources: Association to the reporters that 
    compose this CompositeSequence and where those reporters occur.
    
    Attributes
        Inherites attributes from base class DesignElementMap.
-->
<!ELEMENT ReporterCompositeMap_assnlist (ReporterCompositeMap+) >

<!ELEMENT ReporterCompositeMaps_assnreflist (ReporterCompositeMap_ref+) >

<!ELEMENT ReporterCompositeMap_ref EMPTY >
<!ATTLIST ReporterCompositeMap_ref identifier CDATA #REQUIRED 
		name CDATA #IMPLIED >

<!ELEMENT ReporterCompositeMap ((%DesignElementMap_content;),
		CompositeSequence_assnref,
		ReporterPositionSources_assnlist) >
<!ATTLIST ReporterCompositeMap %DesignElementMap_attrs; >

<!--
    Element and Attlist declarations for ReporterPosition
    
    The location in the composite target's sequence to which a source 
    reporter maps.  The association to MismatchInformation allows the 
    specification, usually for control purposes, of deviations from the 
    CompositeSequence's BioMaterial.
    
    Associations
        Inherites associations from base class SequencePosition.
    
        reporter: A reporter that comprises part of a CompositeSequence.
    
        mismatchInformation: Differences in how the reporter matches its 
    compositeSequence's sequence.
    
    Attributes
        Inherites attributes from base class SequencePosition.
-->
<!ELEMENT ReporterPositionSources_assnlist (ReporterPosition+) >

<!ELEMENT ReporterPosition ((%SequencePosition_content;),
		Reporter_assnref,
		MismatchInformation_assnlist?) >
<!ATTLIST ReporterPosition %SequencePosition_attrs; >

