#
SCHEMA hgd
  DATABASE: hgd
  DESCRIPTION: "Human Genome Database (Version 6.2) "
  PROPERTIES:
	"OB_AdminGroupID" "-5"

FOREIGN_DATABASES
  { ( "registry", "Genome Registry Data Base" ) }

CONTROLLED VALUE CLASS AdminAnnotationTypeDict
  { ( "Include in Annual Report", IncludeInReport ),
    ( "Checked by CC", checkedByCC ) }
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS AliasTypeDict
  { ( "PrimaryName", 0 ),
    ( "Alias", 1 ),
    ( "DNA Segment Number", 2),
    ( "DNA Segment Number - Obsolete", 3) }
  DEFAULT: "Alias"
  CODE_TYPE: SMALLINT
  DESCRIPTION: "Specifies alias type (primary or alias name)"

CONTROLLED VALUE CLASS AminoAcidDict
  { ( "Alanine", ala ),
    ( "Arginine", arg ),
    ( "Asparagine", asn ),
    ( "Aspartic acid", asp ),
    ( "Cysteine", cys ),
    ( "Glutamine", gln ),
    ( "Glutamic acid", glu ),
    ( "Glycine", gly ),
    ( "Histidine", his ),
    ( "Isoleucine", ile ),
    ( "Leucine", leu ),
    ( "Lysine", lys ),
    ( "Methionine", met ),
    ( "Phenylalanine", phe ),
    ( "Proline", pro ),
    ( "Serine", ser ),
    ( "Threonine", thr ),
    ( "Tryptophan", trp ),
    ( "Tyrosine", tyr ),
    ( "Valine", val ) }
  CODE_TYPE: VARCHAR(3)
  DESCRIPTION: "Amino acid dictionary"

CONTROLLED VALUE CLASS AnnotationTypeDict
  { ( "Comment", Comment ) ,
    ( "Data Change Request", ChangeRequest ),
    ( "GDB 5.x history", GDB5.x ),
    ( "Deletion Request", DeleteRequest ),
    ( "Cascade Deleted", CascadeDeleted ),
    ( "Request Owner Change", ChangeOwner)  }
  DEFAULT: "Comment"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS ASOTypeDict
  { ( "Wild Type", WildType ),
    ( "Mutant", Mutant ),
    ( "Unknown", Unknown ) }
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS AvailabilityDict
  { ( "Unknown", Unknown ) ,
    ( "Freely available", FreelyAvailable ),
    ( "For collaborators", Collaborators ),
    ( "In the future", Future ),
    ( "Not available", Unavailable ),
    ( "With restrictions", Restrictions ) }
  DEFAULT: "Unknown"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS BreakpointCauseDict
  { ( "Unknown", Unknown ),
    ( "Natural", Natural ),
    ( "Experimental", Experimental ) }
  DEFAULT: "Unknown"
  CODE_TYPE: VARCHAR(20)
  DESCRIPTION: "Breakpoint cause type description"

CONTROLLED VALUE CLASS CellLineTypeDict
  { ( "Unknown", Unknown ),
    ( "Somatic Cell Hybrid", SCH ),
    ( "Lymphoblast", Lymphoblast ),
    ( "Lymphocyte", Lymphocyte ),
    ( "Fibroblast", Fibroblast ),
    ( "Tumor cell line", Tumor ),
    ( "Radiation Hybrid", RH ),
    ( "Other", Other ) }
  DEFAULT: "Unknown"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS ChimerismBasisDict
  { ( "Fluorescence In Situ Hybridization (FISH)", FISH ),
    ( "PCR with somatic cell hybrids", Hybrids ),
    ( "Restriction mapping", RestrictionMapping ),
    ( "Inferred from map position and insert size", Inferred ) }
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS CompartmentDict
  { ( "Nucleus", Nucleus ),
    ( "Mitochondrion", Mitochondrion ) }
  DEFAULT: "Nucleus"
  CODE_TYPE: VARCHAR(20)
  DESCRIPTION: "Organelle compartment dictionary"

CONTROLLED VALUE CLASS CytogeneticBandDict
  { ( "R-Band", RBand ),
    ( "G-Band", GBand ),
    ( "Satellite", Satellite ),
    ( "Telomere", Telomere ),
    ( "Centromere", Centromere ) }
  CODE_TYPE: VARCHAR(20)
  DESCRIPTION: "Cytogenetic band dictionary"

CONTROLLED VALUE CLASS CytogeneticResolutionDict
  { ( "400", 400 ),
    ( "550", 550 ),
    ( "850", 850 ) }
  CODE_TYPE: VARCHAR(10)

CONTROLLED VALUE CLASS DBObjectStatusDict
  { ( "Active", Active, "Active" ),
    ( "Merged", Merged, "Merged" ),
    ( "Split", Split, "Split" ),
    ( "Ambiguous", Ambig, "Ambiguous" ),
	( "Conflict", Conflict, "Conflict" ),
    ( "Deactivated", Deactivated, "Deactivated" ) }
  DEFAULT: "Active"
  CODE_TYPE: VARCHAR(20)
  DESCRIPTION: "Description of the status of an object with respect to splits and merges"

CONTROLLED VALUE CLASS DNATypeDict
  { ( "Unknown", Unknown, "Unknown" ),
    ( "Genomic DNA", Genomic, "Genomic DNA" ),
    ( "Synthetic DNA", Synthetic, "Synthetic DNA" ),
    ( "Viral DNA", Viral, "Viral DNA" ),
    ( "cDNA", cDNA, "cDNA" ) }
  DEFAULT: "Unknown"
  CODE_TYPE: VARCHAR(20)
  DESCRIPTION: "DNA type dictionary"

CONTROLLED VALUE CLASS EndpointDict
  { ( "Entire", Entire ),
    ( "Start", Start ),
    ( "End", End ) }
  DEFAULT: "Entire"
  CODE_TYPE: VARCHAR(20)
  DESCRIPTION: "Specifies end of GenomicSegment that constraint applies to. Start and end are relative to the frame of reference in which the term appears."

CONTROLLED VALUE CLASS EnzymeUseDict
  { ( "Single Digest", SingleDigest ),
    ( "Double Digest", DoubleDigest ),
    ( "Alternate Digest", AlternateDigest ) }
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS ErrorTypeDict
  { ( "Standard error", StdErr ),
    ( "LOD", LOD ) }
  DEFAULT: "Standard error"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS FragileSiteAgentDict
  { ( "Unclassified", Unclassified ),
    ( "5-Azacytidine type", Azacytidine5 ),
    ( "BrdU type", BrdU ),
    ( "Aphidicolin type", Aphidicolin ),
    ( "Distamycin A type", DistamycinA ),
    ( "Folic acid type", FolicAcid ) }
  DEFAULT: "Unclassified"
  CODE_TYPE: VARCHAR(20)
  DESCRIPTION: "Chemical agents that produces a fragile site"

CONTROLLED VALUE CLASS FontStyleDict
  { ( "Normal", Normal ),
    ( "Bold", Bold ),
    ( "Italic", Italic ),
    ( "Underlined", Underlined ) }
  DEFAULT: "Normal"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS GeneElementTypeDict
  { ( "Other", Other ),
    ( "Intron", Intron ),
    ( "Exon", Exon ),
    ( "Transcription Start Site", TranscriptionStart ),
    ( "Polyadenylation site", Polyadenylation ) }
  DEFAULT: "Other"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS GeneEvidenceDict
  { ( "Resolved phenotype", Phenotype, "Resolved phenotype -- genetic mapping of a factor influencing a heritable phenotype" ),
    ( "Computational Analysis", CompAnalysis, "Predicted based on computational analysis with gene finding algorithm e.g., GRAIL" ),
    ( "DNA sequence-based similarity", SeqSimilarity, "DNA sequence-based similarity" ),
    ( "Peptide sequence-based homology", PeptideHomology, "Peptide sequence-based homology" ),
    ( "Structure homology", StructHomology, "Structure homology" ),
    ( "Exon trapping", ExonTrapping, "Clone isolated by in vitro trapping of splice sites or other sequence motifs" ),
    ( "Mutations associated with phenotype", Mutation, "Putative gene contains mutations found only in individuals expressing a phenotype" ),
    ( "Association with a cDNA", cDNAAssoc, "Association with a cDNA" ),
    ( "Cross-species conservation", CrossSpeciesCons, "Cross-species conservation" ) }
  CODE_TYPE: VARCHAR(20)
  DESCRIPTION: "Justifications for calling this genomic segment a gene."

CONTROLLED VALUE CLASS GrowthStageDict
  { ( "Unknown", Unknown, "Unknown" ),
    ( "Fetal", Fetal, "Fetal" ),
    ( "Adult", Adult, "Adult" ),
    ( "Infant", Infant, "Infant" ),
    ( "Child", Child, "Child" ) }
  DEFAULT: "Unknown"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS IsolationMethodDict
  { ( "Flow Sorted", Flowsorted ),
    ( "Other", Other ) }
  DEFAULT: "Flow Sorted"
  CODE_TYPE: VARCHAR(20)
  DESCRIPTION: "Methods of isolating chromosomal reagents."

CONTROLLED VALUE CLASS LibLocationTypeDict
  { ( "Original", Original, "Original library location" ),
    ( "Replated", Replated, "Replated library location" ) }
  DEFAULT: "Original"
  CODE_TYPE: VARCHAR(20)
  DESCRIPTION: "Valid library location type for clones"

CONTROLLED VALUE CLASS LineStyleDict
  { ( "Solid", Solid ),
    ( "Dashed", Dashed ),
    ( "Dotted", Dotted ) }
  DEFAULT: "Solid"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS MapSexDict
  { ( "Unknown", Unknown, "Unknown" ) ,
    ( "Male", Male, "Male" ),
    ( "Female", Female, "Female" ),
    ( "Sex-averaged", SexAveraged, "Sex-averaged" ) }
  DEFAULT: "Unknown"
  CODE_TYPE: VARCHAR(20)
  DESCRIPTION: "Gender dictionary"

CONTROLLED VALUE CLASS ObservationTypeDict
  { ( "Unknown", Unknown ),
    ( "Amplifies from", Amplifies ),
    ( "Hybridizes with", Hybridizes ),
    ( "Subcloned from end of", EndClone ),
    ( "Subcloned from", Subclone ),
    ( "Sequenced from end of", EndSeq ),
    ( "Sequenced from", Seq ),
    ( "Shares sequence identity with", SeqIdent ),
    ( "Copied from", Copy ),
    ( "Shares Fingerprint with", Fingerprint ) }
  DEFAULT: "Unknown"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS ObservationTypePlusDict
  { ( "Unknown", Unknown ),
    ( "Amplifies from", Amplifies ),
    ( "Is template for", TemplateFor ),
    ( "Hybridizes with", Hybridizes ),
    ( "Subcloned from end of", EndClone ),
    ( "Has end clone", HasEndClone ),
    ( "Subcloned from", Subclone ),
    ( "Has subclone", HasSubclone ),
    ( "Sequenced from end of", EndSeq ),
    ( "Source of end sequence for", SourceEndSeq ),
    ( "Sequenced from", Seq ),
    ( "Source of sequence for", SourceSeq ),
    ( "Shares sequence identity with", SeqIdent ),
    ( "Copied from", Copy ),
    ( "Has copy", HasCopy ),
    ( "Shares Fingerprint with", Fingerprint ) }
  DEFAULT: "Unknown"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS OccurrenceFreqDict
  { ( "Common", Common, "Common" ),
    ( "Rare", Rare, "Rare" ) }
  CODE_TYPE: VARCHAR(20)
  DESCRIPTION: "Fragile Site Type dictionary"

CONTROLLED VALUE CLASS OrderLikelihoodTypeDict
  { ( "LOD", LOD ),
    ( "P-Value", Pvalue),
    ( "Likelihood", Like ) }
  DEFAULT: "LOD"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS OrderRelationshipDict
  { ( "Overlaps", Overlaps ),
    ( "No Overlap", Gap ),
    ( "Inconsistent", Inconsistent ),
    ( "First Overhangs Left", OverlapLeft ),
    ( "Both Overhang", OverlapBoth ),
    ( "Before", Before ),
    ( "Abuts", Abuts ),
    ( "Contained In", ContainedIn ),
    ( "Contained Left", ContainedLeft ),
    ( "Contained Right", ContainedRight ),
    ( "Identical", Identical ) }
  DEFAULT: "Overlaps"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS OrderRelationshipPlusDict
  { ( "Overlaps", Overlaps ),
    ( "No Overlap", Gap ),
    ( "Inconsistent", Inconsistent ),
    ( "First Overhangs Left", OverlapLeft ),
    ( "First Overhangs Right", OverlapRight ),
    ( "Both Overhang", OverlapBoth ),
    ( "Before", Before ),
    ( "After", After ),
    ( "Abuts", Abuts ),
    ( "Contained In", ContainedIn ),
    ( "Contains", Contains ),
    ( "Contained Left", ContainedLeft ),
    ( "Contains Left", ContainsLeft ),
    ( "Contained Right", ContainedRight ),
    ( "Contains Right", ContainsRight ),
    ( "Identical", Identical ) }
  DEFAULT: "Overlaps"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS PloidyDict
  { ( "Haploid", Haploid, "Haploid" ),
    ( "Diploid", Diploid, "Diploid" ),
    ( "Unknown", Unknown, "Unknown" ) }
  CODE_TYPE: VARCHAR(20)
  DESCRIPTION: "Cell ploidy dictionary"

CONTROLLED VALUE CLASS PopulationSpecDict
  { ( "Race", 0, "Race" ),
    ( "Subgeographic region", 1, "Continental subregion" ),
    ( "Directional", 2, "Compass directions" ),
    ( "Relatedness", 3, "Familial relationships" ),
    ( "Disease", 4, "Clinical phenotype" ),
    ( "Sex", 5, "Gender" ),
    ( "Study Group", 6, "Reference individuals from a research project" ),
    ( "Ethnic isolate", 7, "Ethnic group" ),
    ( "Continent", 8, "Continent" ),
    ( "Country", 9, "Country" ),
    ( "State", 10, "State" ),
    ( "City", 11, "City" ) }
   CODE_TYPE: INTEGER
  DESCRIPTION: "Population specification description"

CONTROLLED VALUE CLASS RNATypeDict
  { ( "Transfer", tRNA ),
    ( "Ribosomal", rRNA ),
    ( "Small nuclear", snRNA ),
    ( "Messenger", mRNA ),
    ( "Heterogenous nuclear", hnRNA ) }
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS RearrangementTypeDict
  { ( "Unknown", Unknown ),
    ( "Deletion", Deletion ),
    ( "Duplication", Duplication ),
    ( "Translocation", Translocation ),
    ( "Inversion", Inversion ),
    ( "Recurrent", Recurrent ),
    ( "Fragment", Fragment ),
    ( "Complex", Complex ),
    ( "Spontaneous", Spontaneous ) }
  DEFAULT: "Unknown"
  CODE_TYPE: VARCHAR(20)
  DESCRIPTION: "Rearrangement types"

CONTROLLED VALUE CLASS RegulatoryEffectDict
  { ( "Unknown", Unknown ) ,
    ( "Promoter", Promoter ),
    ( "Enhancer", Enhancer ),
    ( "Repressor", Repressor ),
    ( "Silencer", Silencer ) }
  DEFAULT: "Unknown"
  CODE_TYPE: VARCHAR(20)
  DESCRIPTION: "Regulatory effect dictionary"

CONTROLLED VALUE CLASS RelativeOrientationDict
  { ( "Unknown", Unknown ) ,
    ( "Same", Same ),
    ( "Reverse", Reverse ) }
  DEFAULT: "Unknown"
  CODE_TYPE: VARCHAR(20)
  DESCRIPTION: "Describes relative orientation of two ordering frames of reference."

CONTROLLED VALUE CLASS RepeatTypeDict
  { ( "ALU short interspersed element", ALU ),
    ( "L1 long interspersed element", L1 ),
    ( "SINE - other short interspersed elements, not ALU", SINE ),
    ( "LINE - other long interspersed elements, not L1", LINE ),
    ( "TELO - telomeric repeat", TELO ),
    ( "SUBTELO - subtelomeric repeat", SUBTELO ),
    ( "MINISAT - minisatellite repeats", MINISAT ),
    ( "ALPHA - alpha satellite repeats", ALPHA ),
    ( "Other", OTHER ) }
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS SepMethodDict
  { ( "Unknown", Unknown ) ,
    ( "Polyacrylamide gel electrophoresis", Polyacralamide ),
    ( "Agarose gel electrophoresis", Agarose ),
    ( "Denaturation", Denaturation ),
    ( "Denaturing gradient polyacralamide gel", Gradient ),
    ( "Pulse-Field gel electrophoresis", PFGE ),
    ( "Other", Other ) }
  DEFAULT: "Unknown"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS ShapeDict
  { ( "Rectangle", Rectangle ),
    ( "Round start rectangle", RoundStartRect ),
    ( "Round end rectangle", RoundEndRect ),
    ( "Circle", Circle ),
    ( "Square", Square ),
    ( "Triangle", Triangle ) }
  DEFAULT: "Rectangle"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS UnitsDict
  { ( "Haldane centiMorgans", HcM, "Haldane centiMorgans" ),
    ( "Kosambi centiMorgans", KcM, "Kosambi centiMorgans" ),
    ( "CentiRays", cR, "centiRays" ),
    ( "Fractional length from pter", ln, "Fractional Length from pter" ),
    ( "Recombination fraction", rf, "Recombination fraction" ),
    ( "Percent overlap", ov, "Percent overlap" ),
    ( "Ordinal", ord, "Arbitrary order-only units" ),
    ( "Dustin units", du, "Coordinates for cytogenetic maps." ),
    ( "Kilobases", kb, "Kilo base pairs" ) }
  CODE_TYPE: VARCHAR(5)
  DESCRIPTION: "Map distance units dictionary"

CONTROLLED VALUE CLASS VectorTypeDict
  { ( "Unknown", UNKNOWN, "Unknown" ),
    ( "YAC", YAC, "Yeast Artificial Chromosome" ),
    ( "BAC", BAC, "Bacterial Artificial Chromosome" ),
    ( "PAC", PAC, "P1 Artificial Chromosome" ),
    ( "Cosmid", COSMID, "Cosmid" ),
    ( "Plasmid", PLASMID, "Plasmid" ),
    ( "Phagemid", PHAGEMID, "Phagemid" ),
    ( "M13", M13, "M13" ),
    ( "P1", P1, "P1" ),
    ( "Phage", PHAGE, "Phage" ) }
  DEFAULT: "Unknown"
  CODE_TYPE: VARCHAR(20)
  DESCRIPTION: "Vector type dictionary"

CONTROLLED VALUE CLASS VisualMethodDict
  { ( "Unknown", Unknown ) ,
    ( "Radioactive Labelling", Radiolabelling ),
    ( "DNA Staining", DNAStaining ),
    ( "Allele Specific Oligonucleotide", ASO ),
    ( "Direct Sequencing", Sequencing ),
    ( "Locus Specific Probe", LSP ),
    ( "Repeat Specific Probe", RSP ) }
  DEFAULT: "Unknown"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS YesNoUnknown_UnkDict
  { ( "Unknown", Unknown ) ,
    ( "No", No ),
    ( "Yes", Yes ) }
  DEFAULT: "Unknown"
  CODE_TYPE: VARCHAR(30)

CONTROLLED VALUE CLASS YesNoUnknown_YesDict
  { ( "Yes", Yes ),
    ( "No", No ),
    ( "Unknown", Unknown ) }
  DEFAULT: "Yes"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS YesUnknown_UnkDict
  { ( "Unknown", Unknown ),
    ( "Yes", Yes ) }
  DEFAULT: "Unknown"
  CODE_TYPE: VARCHAR(20)

CONTROLLED VALUE CLASS YesNo_NoDict
  { ( "No", No ),
    ( "Yes", Yes ) }
  DEFAULT: "No"
  CODE_TYPE: VARCHAR(5)
  DESCRIPTION: "Controlled vocabulary for boolean values YES and NO"

CONTROLLED VALUE CLASS YesNo_YesDict
  { ( "Yes", Yes ) ,
    ( "No", No ) }
  DEFAULT: "Yes"
  CODE_TYPE: VARCHAR(5)
  DESCRIPTION: "Controlled vocabulary for boolean values YES and NO"

OBJECT CLASS AdminAnnotation
             isa* AnnotationObject
  DESCRIPTION: "Annotation used by GDB data curation staff to mark objects in various ways. Only administrative staff can create or view AdminAnnotations."
  PROPERTIES:
      "FE_Editable" "No",
      "Admin/FE_Editable" "Yes",
      "FE_Visible" "No",
      "Admin/FE_Visible" "Yes",
      "Admin/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      "Admin/FE_ObjectMenu" "{{parentmenu}}",
      "GDB_Rule" "only editable by the admin group [ implemented in GDBI_AdminAnnotation]"
  ATTRIBUTE client: [0,1] Contact
            DELETE NULLIFIES
            DESCRIPTION: "Person for whom this annotation was created. E.g. submitter."
            PROPERTIES:
	        "GDB_Rule" "not modifiable on updates"
  ATTRIBUTE dBObjects: set-of [1,] DBObject
	    ORDER BY dBObjects.displayName ASC, dBObjects.modDate DESC
            DELETE CASCADES
            DESCRIPTION: "The object(s) being annotated."
            PROPERTIES:
		"GDB_Rule" "dBObjects must be unique within the AdminAnnotation"
  ATTRIBUTE annotation: list-of [1,] VARCHAR(255)
            PROPERTIES:
                "OB_Pack" "Yes",
		"FE_Preformatted" "Yes"
  ATTRIBUTE annoTypes: set-of [1,] AdminAnnotationTypeDict
            PROPERTIES:
		"GDB_Rule" "<ul><li>Leading and trailing spaces are removed<li>annoTypes must be unique within the AdminAnnotation<li>GDB5.6 History and Cascade Deleted are not valid annotTypes for direct inserts by the user<li>default to 'Comment' when not supplied,</ul>"

OBJECT CLASS Allele
             isa* VariationObject
  DESCRIPTION: "One form of the variation at a polymorphic site."
  PROPERTIES:
      "FE_Queryable" "No"
      "FE_Order" "1",
      "FE_DefaultSummary" "accessionID*, displayName",
      "FE_Editable:displayName" "No",
      "GDB_Rule.displayName" "Derive from Allele.number",
      "GDB_Note" "<ul><li>Allele exists only in the context of AlleleSet. Allele should not be top level editable. But users must be able to edit thru the links from AlleleSet. <li> Schema problem: Why have Allele as a seperate DBO class, instead of a primitive attribute of AlleleSet. Reason: Alleles cannot exist independent of AlleleSets. Since 5.x Alleles have gdb_id, we are forced to carry them over</ul>"
  ATTRIBUTE alleleSets
            DERIVATION: ! allele [ AlleleSet ]
	    ORDER BY alleleSets [AlleleSet] displayName ASC
            DESCRIPTION: "Allele sets containing this allele."
	    PROPERTIES:
		"GDB_Rule" "All allele sets must belong to the same polymorphism"
  ATTRIBUTE number: [1,1] SMALLINT
	    DESCRIPTION: "Ordinal designation of the allele within the polymorphism."
            PROPERTIES:
		"GDB_Rule" "must be greater than 0 [implemented in GDBV_Allele]"

OBJECT CLASS AlleleFrequency
             isa* VariationObject
  DESCRIPTION: "Frequencies of each allele within the associated populations."
  PROPERTIES:
      "FE_PrintName" "Allele Frequency",
      "FE_Visible:alias" "No",
      "FE_Visible:source_" "No",
      "FE_DefaultSummary" "accessionID*, displayName",
      "FE_Editable:displayName" "No",
        "FE_ObjectMenu" "<a href=/gdb-bin/genera/history/historyquery?obkey={{key}}>View History</a>",
      	"SRW/FE_QueryMenu" "{{parentmenu}} | <a href={{uptodir}}/SetOwnerGroup>Change Owner Group</a>",
      	"SRW/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      	"SRW/FE_DeleteOption" "<a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=DeleteRequest>Delete</a>",
      	"SRW/FE_ObjectMenu" "{{Edit}} | {{Delete}} | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=ChangeOwner>Request Owner Change</a> | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodb}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodb}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}>View History</a>",
      	"PRW/FE_ObjectMenu" "| <a href={{uptodir}}/restrict/{{script}}/{{db}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodir}}/restrict/{{script}}/{{db}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodir}}/restrict/{{script}}/{{db}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/history/historyquery?obkey={{key}}>View History</a>",
      	"Admin/FE_QueryMenu" "{{parentmenu}} | <a href={{uptodir}}/SetOwnerGroup>Change Owner Group</a>",
      	"Admin/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      	"Admin/FE_DeleteOption" "<a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=DeleteRequest>Delete</a>",
      	"Admin/FE_ObjectMenu" "{{Edit}} | {{Delete}} | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=ChangeOwner>Request Owner Change</a> | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodb}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodb}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}>View History</a>",
      "GDB_Rule.displayName" "'Frequencies for Population: ' + populations. If no populations, append 'Undefined'; if multiple populations, colon-delimited list.",
      "GDB_Note" "AlleleFrequency exists only in the context of AlleleSet. AlleleFrequency should not be top level editable. But users must be able to edit thru the links from AlleleSet"
  ATTRIBUTE calculatedHet: [0,1] FLOAT
            DESCRIPTION: "Heterozygosity, calculated based on the allele frequency distribution."
            PROPERTIES:
		"FE_Editable" "No",
		"GDB_Rule" "<ul><li>Heterozygosity is calculated as 1-(sum of (freqs^2)). <li>Heterozygosity should not be calculated for polymorphisms on the Y chromosome, if not in the pseudoautosomal regions.</ul>"
  ATTRIBUTE numberOfChrom: [0,1] SMALLINT
            DESCRIPTION: "Number of chromosomes studied, from which the frequencies were calculated."
            PROPERTIES:
		"GDB_Rule" "must be >= 0"
  ATTRIBUTE observedHet: [0,1] FLOAT
            DESCRIPTION: "Heterozygosity, observed in the population."
            PROPERTIES:
		"GDB_Rule" "0 <= observedHet <= 1"
  ATTRIBUTE populations: set-of [1,] Population
	    ORDER BY populations [Population] displayName ASC
            DELETE CASCADES
	    DESCRIPTION: "Group of individuals in which the polymorphism was typed."
            PROPERTIES:
		"GDB_Rule" "populations must be unique within the AlleleFrequency"
  ATTRIBUTE alleleSet: [1,1] AlleleSet
            DELETE CASCADES
            DESCRIPTION: "The allele set in which the alleles exist."
  ATTRIBUTE frequencies (frequency, allele, stdDev):
            set-of [0,] ([0,1] FLOAT, [1,1] Allele, [0,1] FLOAT)
            DELETE NULLIFIES
            DESCRIPTION: "Frequency of each allele."
		PROPERTIES:
		  "OB_Key" "allele"
            COMPONENT frequency
              PROPERTIES:
		  "FE_Order" "2",
		  "GDB_Rule" "0 <= frequency <= 1",
		  "GDB_Note" "Sum of frequencies in allele set should equal 1. Need to work out an algorithm that allows some room for error and disallows obvious mistakes - possibly 6.1"
            COMPONENT allele
              PROPERTIES:
		  "FE_Order" "1"
                  "GDB_Rule" "Must be in the alleles of the alleleSet."
            COMPONENT stdDev
              PROPERTIES:
		  "FE_Order" "3"

OBJECT CLASS AlleleSet
             isa* VariationObject
  DESCRIPTION: "A set of alleles of a given polymorphism which are observed using a given detection method."
  PROPERTIES:
      "FE_PrintName" "Allele sets",
      "FE_Queryable" "No",
      "FE_DefaultSummary" "accessionID*, displayName",
      "FE_Editable:displayName" "No",
      "WAIS_Class" "Yes",
      "GDB_Rule.displayName" "AlleleSet.polymorphism + ' ' + ' Allele Set accessionId'.",
      "GDB_Note" "Semantically AlleleSet exists only in the context of Polymorphism."
  ATTRIBUTE detectMethod: [1,1] DetectMethod
            DELETE CASCADES
            DESCRIPTION: "Method by which the polymorphism was detected."
  ATTRIBUTE polymorphism: [1,1] Polymorphism
            DELETE CASCADES
            DESCRIPTION: "Polymorphism described by the allele set."
  ATTRIBUTE constantFragments: set-of [0,] VARCHAR(255)
	    ORDER BY constantFragments ASC
	    DESCRIPTION: "Set of fragments which are detected with each allele in the allele set."
            PROPERTIES:
		"GDB_rule" "if a fragment value is entered as .value - modify it to 0.value"
  ATTRIBUTE alleleFragments (fragment, allele):
            list-of [1,] ([1,1] VARCHAR(255), [1,1] Allele)
            DELETE CASCADES
	    DESCRIPTION: "Set of fragments which are variable for the alleles in the allele set."
            PROPERTIES:
            COMPONENT fragment
              PROPERTIES:
		  "FE_Order" "2",
		  "GDB_rule" "if a fragment value is entered as .value - modify it to 0.value"
            COMPONENT allele
              PROPERTIES:
		  "FE_Order" "1",
		  "GDB_rule" "Allele.number must be unique within the AlleleSet"
  ATTRIBUTE populations
	DERIVATION: ! alleleSet [ AlleleFrequency ]
	    ORDER BY populations [AlleleFrequency] displayName ASC
	    DESCRIPTION: "Set of frequencies exhibited for the alleles in one or more populations."
            PROPERTIES:
		"FE_PrintName" "Allele Frequencies"

OBJECT CLASS AlleleSpecificOligomer
             isa* VariationObject
  DESCRIPTION: "Short oligonucleotides which detect point variations."
  PROPERTIES:
      "FE_Order" "-1",
      "FE_DefaultSummary" "accessionID*, displayName",
      "WAIS_Class" "Yes"
  ATTRIBUTE sequences (sequence, ASOType):
            set-of [1,] ([1,1] VARCHAR(255), [1,1] ASOTypeDict)
            DESCRIPTION: "Oligonucleotide sequences."
            COMPONENT sequence
              PROPERTIES:
		  "GDB_Rule" "<ul><li>the sequence/ASOType must be unique within the AlleleSpecificOligomer<li>should only contain characters [A-Z]</ul>"
            COMPONENT ASOType
		PROPERTIES:
		"FE_PrintName" "ASO Type"
  ATTRIBUTE variations
            DERIVATION: ! ASO [ Variation ]
	    ORDER BY variations [Variation] displayName ASC
            DESCRIPTION: "Variations which may be detected by this ASO."
  ATTRIBUTE genes: set-of [0,] Gene
	    ORDER BY genes [Gene] displayName ASC
            DELETE CASCADES
            DESCRIPTION: "Genes which may be detected by this ASO."
            PROPERTIES:
		"GDB_Rule" "<ul><li>genes must be unique within the AlleleSpecificOligomer<li>the release date of the ASO cannot be any earlier than the max releaseDate of the gene members</ul>"

OBJECT CLASS Amplimer
             isa* GenomicSegment
  DESCRIPTION: "PCR-amplified segment of the genome (including STSs and ESTs)"
  PROPERTIES:
      "FE_Order" "-1",
      "FE_DefaultSummary" "accessionID*, displayName, alias, LFM, RFM, DNAType",
      "PRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodir}}/restrict/{{script}}/{{db}}/ReagentSource?!action=insertform&reagent={{key}}>Add Reagent Source</a>",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodb}}/ReagentSource?!action=insertform&reagent={{key}}>Add Reagent Source</a> | <a href=/gdb-bin/genera/restrict/dseg/dsegquery?accessionID={{key}}&objectClass={{class}}>Generate DNA Segment Number</a> | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a>"
  ATTRIBUTE availableFrom
            DERIVATION: ! reagent [ ReagentSource ]
	    ORDER BY availableFrom [ReagentSource] displayName ASC
            DESCRIPTION: "Third party editable list of sources from which this clone may be obtained."
  ATTRIBUTE singleCopy: [1,1] YesNoUnknown_YesDict
            DESCRIPTION: "Does this amplimer amplify one unique region in the genome (is it an STS) ?"
            PROPERTIES:
		"GDB_Rule" "on insert, if not supplied, set to 'Yes'"
  ATTRIBUTE isExpressed: [1,1] YesNoUnknown_UnkDict
            DESCRIPTION: "Does this amplify an EST?"
            PROPERTIES:
		"GDB_Rule" "on insert, if not supplied, set to 'Unknown'"
  ATTRIBUTE DNAType: [1,1] DNATypeDict
            DESCRIPTION: "Type of DNA amplified."
            PROPERTIES:
		"GDB_Rule" "on insert, if not supplied, set to 'Unknown'"
  ATTRIBUTE primers (primerSequence, primerName):
            set-of [1,2] ([1,1] VARCHAR(200), [1,1] VARCHAR(200))
	    ORDER BY primerName ASC
            DESCRIPTION: "The two primer sequences in 5'-3' orientation"
	    COMPONENT primerSequence
		PROPERTIES:
		"FE_Order" "2",
		"FE_MatchCase" "Upper",
		"GDB_Rule" "<ul><li>primerName must be unique within the Amplimer<li>primerSequence should contain no spaces<li>Convert primerSequence to upper case.<li>Characters in sequence should be in range [A-Z]<li>add the primer names as aliases to the Amplimer</ul>"
	    COMPONENT primerName
		PROPERTIES:
		"FE_Order" "1"
  ATTRIBUTE amplifiedSeqMinLength: [0,1] FLOAT
            DESCRIPTION: "Minimum of the range of amplified sequence lengths (in kilobases)."
            PROPERTIES:
		"GDB_Rule" "if supplied, value must be greater than 0"
  ATTRIBUTE amplifiedSeqMaxLength: [0,1] FLOAT
            DESCRIPTION: "Maximum of the range of amplified sequence lengths (in kilobases)."
            PROPERTIES:
		"GDB_Rule" "If amplifiedSeqMinLength is NULL, must be NULL. If not null, must be greater than amplifiedSeqMinLength. If supplied, must be greater than 0"
  ATTRIBUTE ampConditions
            DERIVATION: ! amplimers [ PCRCondition ]
	    ORDER BY ampConditions [PCRCondition] displayName ASC
            DESCRIPTION: "Amplification conditions"
  ATTRIBUTE sequence: list-of [0,] VARCHAR(255)
            DESCRIPTION: "DNA sequence which is amplified."
            PROPERTIES:
		"FE_MatchCase" "Upper",
                "OB_Pack" "Yes",
		"FE_Preformatted" "Yes",
		"GDB_Rule" "<ul><li>sequence should contain no spaces. <li>Convert sequence to upper case. <li>Characters in sequence should be in range [A-Z]</ul>"
  ATTRIBUTE mutations
            DERIVATION: ! genomicSegments [ Mutation ]
	    ORDER BY mutations [Mutation] displayName ASC
            DESCRIPTION: "Mutations of this region."
  ATTRIBUTE homologies
            DERIVATION: ! segment [ HomologyLink ]
	    ORDER BY homologies [HomologyLink] displayName ASC
            DESCRIPTION: "Homologous regions in other genomic databases."

OBJECT CLASS Annotation
             isa* AnnotationObject
  DESCRIPTION: "Annotation created by any GDB user and associated with database objects"
  PROPERTIES:
      "FE_Editable:displayName" "No",
      "FE_Editable:releaseDate" "Yes",
      "GDB_Rule" "<ul><li>Name is owner. ModDate. prefix of text.<li>If annoType is 'DeleteRequest','ChangeOwner','ChangeRequest' then append this to the displayName<li>The readonly User cannot annotate any objects.<li>Notify the dBObject owner when other users annotate the object<li>Do not allow duplicates, check based on: owner+annoType+dBObject+text</ul>"
  ATTRIBUTE dBObjects: set-of [1,] DBObject
	    ORDER BY dBObjects.displayName ASC, dBObjects.modDate DESC
            DELETE CASCADES
            DESCRIPTION: "Database objects linked to the annotation."
            PROPERTIES:
		"FE_Order" "2",
		"GDB_Rule" "must be unique with the current Annotation [implemented in GDBI_Annotation_dBObjects]"
  ATTRIBUTE annoType: [1,1] AnnotationTypeDict
	    DESCRIPTION: "Type of annotation."
            PROPERTIES:
		"FE_Order" "3",
		"GDB_Rule" "<ul><li>Default: 'Comment<li>Annotation types 'GDB5.6 and Cascade Deleted are not permitted for direct inserts, they are for internal use only</ul>' "
  ATTRIBUTE annotation: list-of [1,] VARCHAR(255)
            DESCRIPTION: "Text of the annotation."
            PROPERTIES:
		"FE_Order" "4",
                "OB_Pack" "Yes",
		"FE_Preformatted" "Yes",
		"GDB_Rule" "For cascade deletes etc., construct a pre-canned annotation"

OBJECT CLASS AnnotationObject
  DESCRIPTION: "Any annotation associated with an accessionable database object."
  PROPERTIES:
      "FE_Editable" "No",
      "FE_Order" "-1",
      "FE_ClassAttr" "objectClass",
      "FE_DisplayAttr" "displayName",
      "FE_ObjectMenu" "<a href=/gdb-bin/genera/history/historyquery?obkey={{key}}>View History</a>",
      "PRW/FE_ObjectMenu" "<a href=/gdb-bin/genera/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      "Admin/FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      "OB_Key" "_oid",
      "OB_Restrict" "Yes",
      "OB_DBRoot" "Yes",
      "OB_SearchKey" "searchName"
  REP: displayName
  ATTRIBUTE modDate: [1,1] DATETIME
            DESCRIPTION: "Date when the annotation was last modified."
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
                "GDB_Rule" "Set by insert/update procs - set to current date."
  ATTRIBUTE displayName: [1,1] VARCHAR(200)
	    DESCRIPTION: "Value displayed when referring to this annotation in query results or in detail displays of objects linked to it. The name is automatically derived from the owner, mod date, and text."
            PROPERTIES:
		"FE_Order" "1",
                "FE_Queryable" "Yes",
		"FE_Search" "searchName",
		"FE_PrintName" "Name"
  ATTRIBUTE searchName: [1,1] VARCHAR(200)
            DESCRIPTION: "Corresponds to lower(displayName). Denormalized to aid searching"
            PROPERTIES:
                "FE_Editable" "No",
                "FE_Queryable" "Yes",
                "FE_PrintName" "Name",
                "FE_Order" "1",
                "FE_Visible" "No",
                "FE_MatchCase" "Lower",
                "GDB_Rule" "Always set to lower(displayName) on insert/update"
  ATTRIBUTE owner: [1,1] Contact
            DELETE CASCADES
            DESCRIPTION: "The single Person or group of Persons (Owner Group) responsible for the content of the annotation. This person or group has editing access to the annotation and can view it before release to the public. Only GDB staff can change the ownership of an annotation."
            PROPERTIES:
                "FE_Editable" "No",
		"FE_Order" "2"
  ATTRIBUTE isReleased: [1,1] YesNo_YesDict
            DESCRIPTION: "Released status."
            PROPERTIES:
                "FE_Editable" "No",
		"FE_Order" "-3",
		"GDB_Rule" "Set to 'Yes' if releaseDate <= today, set to 'No' if releaseDate is greater than today"
  ATTRIBUTE releaseDate: [1,1] DATETIME
            DESCRIPTION: "Date the annotation became or will become publicly available. Annotations can be unpublished for up to 6 months after submission. Once a release date has been assigned, it can be changed to an earlier date within that six-month period, but not earlier than the current date."
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
		"FE_Order" "-4",
		"FE_AllowNULL" "Yes",
		"FE_Editable" "No",
		"GDB_Rule" "<ul><li>The releasedness of the ExternalLink is dictated by the DBObjects linked to this.<li>The submissions releaseDate cannot be < this objects release Date<li>Cannot be < max(releaseDate) for all Annotation_dBObjects or AdminAnnotation_dBObjects [implemented in GDBsC_Annotation & GDBsC_AdminAnnotation]<li>User-supplied initial value cannot be more than six months from current date [implemented in GDBI_AnnotationObject]<li>If NULL set to current date [implemented in GDBI_AnnotationObject]<li>New value cannot be > old value [implemented in GDBU_AnnotationObject].</ul>" 
  ATTRIBUTE submissions: set-of [0,] Submission
            DESCRIPTION: "Associated EDS submission information for this object"
            PROPERTIES:
                "FE_Editable" "No",
                "GDB_Note" "Set by EDS submission processor",
		"GDB_Rule" "must be unique within the dBObject"
   ATTRIBUTE objectClass: [1,1] VARCHAR(30)
            DESCRIPTION: "Invisible attribute holding the name of the leaf class in the ISA-hierarchy pertaining to this object."
            PROPERTIES:
                "FE_Editable" "No",
                "FE_Visible" "No",
                "GDB_Rule" "<ul><li>GDBI<Class> sets to classname<li>cannot be modified on update</ul>"
  ATTRIBUTE version: [1,1] INTEGER
            DESCRIPTION: "Current version number of the annotation."
            PROPERTIES:
                "FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
		"FE_Order" "-1",
                "GDB_Rule" "Set by insert/update procs"
  ATTRIBUTE history: set-of [0,] ObjectHistory
        ORDER BY history.modDate DESC
            DESCRIPTION: "History records created by updates"
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Order" "-1",
                "FE_Editable" "No",
                "FE_Queryable" "No",
                "opm_derive" "user SQL"

OBJECT CLASS Bin
             isa* GenomicSegment
  DESCRIPTION: "Segment used to group markers whose relative order may be unknown, but whose order relative to markers in another bin may be known. Typically defined as the segment between adjacent breakpoints or high-resolution probes, or sometimes simply by a threshold order likelihood."
  PROPERTIES:
      "FE_DefaultSummary" "accessionID*, displayName, alias, LFM, RFM",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a>",
      "FE_Order" "-2"
      "FE_Visible:distanceData" "No",
      "FE_Visible:polymorphisms" "No",
      "WAIS_Class" "No"

OBJECT CLASS BiologicalObject
             isa* DBObject
  DESCRIPTION: "Groups objects representing broad biological concepts."
  PROPERTIES:
      "FE_Editable" "No",
      "FE_Order" "1",
      "WAIS_Class" "Yes"

OBJECT CLASS Breakpoint
             isa* GenomicSegment
  DESCRIPTION: "A chromosomal location at which a break has occurred, resulting in a stable rearrangement."
  PROPERTIES:
      "FE_DefaultSummary" "accessionID*, displayName, alias, LFM, RFM",
      "FE_Editable:displayName" "No",
      "FE_Visible:polymorphisms" "No",
      "FE_PrintName:displayName" "Symbol",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href=http://www.gene.ucl.ac.uk/nomenclature/>The Nomenclature Web Page</a> | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a>",
      "SRW/FE_InsertMenu" "{{parentmenu}} | <a href=http://www.gene.ucl.ac.uk/nomenclature/>The Nomenclature Web Page</a>",
      "SRW/FE_UpdateMenu" "{{parentmenu}} | <a href=http://www.gene.ucl.ac.uk/nomenclature/>The Nomenclature Web Page</a>",
      "GDB_Rule.displayName" "on insert, displayName will be the format: B0PXXXX where XXXX is generated from SerialNumber",
      "GDB_Note" "displayName will be updated when the breakpoint is referenced from MapElement.segment, the name will be recalculated to be B#PXXXX where # is the chromosome number of the map.",
  ATTRIBUTE rearrangements
            DERIVATION: ! breakpoints [ Rearrangement ]
	    ORDER BY rearrangements [Rearrangement] displayName ASC
            DESCRIPTION: "Rearrangements involving this breakpoint."
  ATTRIBUTE mutations
            DERIVATION: ! genomicSegments [ Mutation ]
	    ORDER BY mutations [Mutation] displayName ASC
            DESCRIPTION: "Mutations of this region."
  ATTRIBUTE phenotypes
            DERIVATION: ! segment [ PhenotypeLink ]
	    ORDER BY phenotypes [PhenotypeLink] displayName ASC
            DESCRIPTION: "Phenotypes associated with this region"

OBJECT CLASS CellLine
             isa* GenomicSegment
  DESCRIPTION: "An immortalized cell culture of known karyotype, used for mapping."
  PROPERTIES:
      "FE_Order" "1",
      "FE_Visible:distanceData" "No",
      "FE_Visible:polymorphisms" "No",
      "FE_DefaultSummary" "accessionID*,displayName,alias,LFM, RFM, cellLineType",
      "PRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodir}}/restrict/{{script}}/{{db}}/ReagentSource?!action=insertform&reagent={{key}}>Add Reagent Source</a>",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodb}}/ReagentSource?!action=insertform&reagent={{key}}>Add Reagent Source</a> | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a>",
      "GDB_Rule.displayName" "User defined",
  ATTRIBUTE availableFrom
            DERIVATION: ! reagent [ ReagentSource ]
	    ORDER BY availableFrom [ReagentSource] displayName ASC
            DESCRIPTION: "List of sources from which this cell line can be obtained."
  ATTRIBUTE rearrangements: set-of [0,] Rearrangement
	    ORDER BY rearrangements [Rearrangement] displayName ASC
            DELETE CASCADES
            DESCRIPTION: "Chromosomal rearrangements found in this line."
            PROPERTIES:
		"GDB_Rule" "<ul><li>rearrangements must be unique within the CellLine. <li>the release date of the CellLine cannot be any earlier than the max releaseDate of the rearrangements</ul>"
  ATTRIBUTE pathology: [0,1] VARCHAR(255)
            DESCRIPTION: "Description of a pathology associated with the tissue from which this cell line was derived."
  ATTRIBUTE cytoRegions (from_, to_):
            set-of [0,] ([1,1] CytogeneticMarker, [1,1] CytogeneticMarker)
            DELETE NULLIFIES
            DESCRIPTION: "Human cytogenetic regions contained within this cell line. These regions are defined by pairs of cytogenetic markers."
            COMPONENT from_
              PROPERTIES:
		"FE_PrintName" "From"
            COMPONENT to_
              PROPERTIES:
		  "FE_PrintName" "To",
		  "GDB_Rule" "<ul><li>cytogeneticMarker.chromosome should be the same for from_ and to_ [implemented in GDBV_CellLine]. <li>the MapElement.coordinate for the from_ must be <= the MapElement.coordinate for to_ [implemented in GDBV_CellLine]</ul>"
  ATTRIBUTE growthStage: [1,1] GrowthStageDict
            DESCRIPTION: "Growth stage of the tissue from which this cell line was derived."
  ATTRIBUTE karyotype: [0,1] VARCHAR(255)
            DESCRIPTION: "Human chromosomal constitution of the cell line, as defined by ISCN 1995 nomenclature."
            PROPERTIES:
		"GDB_Note" "Future Rules for nomenclature should be derived from ISCN [NOT implemented in gdb 6.0]"
  ATTRIBUTE cellLineType: [1,1] CellLineTypeDict
            DESCRIPTION: "Type of cell line (such as Somatic cell hybrid, lymphoblast)."
            PROPERTIES:
		"GDB_Rule" "on insert, if not supplied, set to 'Unknown'"
  ATTRIBUTE numberOfPassages: [0,1] INTEGER
            DESCRIPTION: "Number of times the cell line has been regrown."
            PROPERTIES:
		"GDB_Rule" "numberOfPassages must be >= 0"
  ATTRIBUTE libraries
            DERIVATION: ! source [ Library ]
	    ORDER BY libraries [Library] displayName ASC
            DESCRIPTION: "Clone libraries derived from the cell line."
  ATTRIBUTE phenotypes
            DERIVATION: ! segment [ PhenotypeLink ]
	    ORDER BY phenotypes [PhenotypeLink] displayName ASC
            DESCRIPTION: "Phenotypes associated with this region"

OBJECT CLASS Chromosome
             isa* GenomicSegment
  DESCRIPTION: "A single continuous replicating unit of genomic DNA"
  PROPERTIES:
      "FE_Editable" "No",
      "Admin/FE_Editable" "Yes",
      "FE_Visible:distanceData" "No",
      "FE_Visible:polymorphisms" "No",
      "FE_Visible:owner" "No",
      "FE_Visible:addDate" "No",
      "FE_Visible:modDate" "No",
      "FE_Visible:lastModifiedBy" "No",
      "FE_Visible:version" "No",
      "FE_Visible:alias" "No",
      "FE_Visible:source_" "No",
      "FE_Visible:chromosome_" "No",
      "FE_Visible:LFM" "No",
      "FE_Visible:RFM" "No",
      "FE_Visible:mapElement_" "No",
      "FE_Visible:cytoMap" "No",
      "FE_Visible:chromosome_2" "No",
      "FE_Visible:mapElement_2" "No",
      "FE_Visible:map" "No",
      "FE_Visible:coordinate" "No",
      "FE_Visible:units_" "No",
      "FE_Visible:marker_1" "No",
      "FE_Visible:marker_2" "No",
      "FE_Visible:relationship" "No",
      "FE_Visible:observationType" "No",
      "FE_Visible:position" "No",
      "FE_Visible:orderID" "No",
      "FE_Visible:segment_1" "No",
      "FE_Visible:endPoint_1" "No",
      "FE_Visible:segment_2" "No",
      "FE_Visible:endPoint_2" "No",
      "FE_Visible:distance" "No",
      "FE_Visible:units" "No",
      "FE_Visible:distanceID "No",
      "FE_DefaultSummary" "accessionID*, displayName*",
      "FE_ObjectMenu" "<a href=/gdb-bin/mqp/mqp.pl?ID={{key}}>View Maps Containing this Segment </a> | <a href=/gdb-bin/genera/history/historyquery?obkey={{key}}>View History</a>",
      "SRW/FE_ObjectMenu" "<a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=ChangeOwner>Request Owner Change</a> | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodb}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodb}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}>View History</a>",
      "PRW/FE_ObjectMenu" "<a href={{uptodir}}/restrict/{{script}}/{{db}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodir}}/restrict/{{script}}/{{db}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodir}}/restrict/{{script}}/{{db}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/history/historyquery?obkey={{key}}>View History</a>",
      "Admin/FE_ObjectMenu" "{{Edit}} | {{Delete}} | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=ChangeOwner>Request Owner Change</a> | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodb}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodb}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}>View History</a>",
      "GDB_Note" "Owned and seeded by GDB",
      "GDB_Rule" "only the admin group can insert/update Chromsome entries",
  ATTRIBUTE cellularCompartment: [1,1] CompartmentDict
            DESCRIPTION: "Compartment of the cell where this chromosome can be found (nucleus, mitochondrion, etc.)."
            PROPERTIES:
		"GDB_Rule" "on insert, if not supplied, set to 'Nucleus'"

OBJECT CLASS ChromosomeReagent
             isa* GenomicSegment
  DESCRIPTION: "Whole chromosomes, fragments, mixtures, etc. used directly as mapping reagents, e.g. purified flow-sorted chromosomes. Do not use for somatic cell hybrids containing single human chromosomes: use CellLine for these."
  PROPERTIES:
      "FE_DefaultSummary" "accessionID*, displayName, alias, LFM, RFM",
      "FE_Visible:polymorphisms" "No",
      "PRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodir}}/restrict/{{script}}/{{db}}/ReagentSource?!action=insertform&reagent={{key}}>Add Reagent Source</a>",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodb}}/ReagentSource?!action=insertform&reagent={{key}}>Add Reagent Source</a> | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a>",
      "GDB_Rule" "displayName is user defined"
  ATTRIBUTE availableFrom
            DERIVATION: ! reagent [ ReagentSource ]
	    ORDER BY availableFrom [ReagentSource] displayName ASC
            DESCRIPTION: "List of sources from which this reagent can be obtained."
  ATTRIBUTE isolationMethod: [1,1] IsolationMethodDict
            DESCRIPTION: "isolationMethod for this ChromosomeReagent."
	    PROPERTIES:
		"GDB_Rule" "on insert, if not supplied, set to 'Flow Sorted'"
  ATTRIBUTE cytoRegions (from_, to_):
            set-of [0,] ([1,1] CytogeneticMarker, [1,1] CytogeneticMarker)
            DELETE NULLIFIES
            DESCRIPTION: "Genomic region(s) found in this reagent. Defined by bounding pairs of cytogenetic markers."
	    PROPERTIES:
                  "GDB_Rule" "<ul><li>cytogeneticMarker.chromosome should be the same for from_ and to_ [implemented in GDBV_ChromosomeReagent].<li>The MapElement.coordinate for the from_ must be <= the MapElement.coordinate for to_ [implemented in GDBV_ChromosomeReagent]</ul>"

OBJECT CLASS CitationLink
             isa* ExternalLink
  DESCRIPTION: "Link to a literature reference in an external DB."
  PROPERTIES:
      "FE_PrintName:accessionID" "Citation Accession ID",
      "FE_MatchCase:accessionID" "Upper",
      "FE_Editable:displayName" "No",
      "FE_Editable:externalDB" "No",
      "FE_Queryable:externalDB" "No",
      "FE_SubqueryURL:accessionID" "{{uptodir}}/{{script}}/citation/Citation?!action=queryform",
      "FE_URL:accessionID" "{{uptodir}}/{{script}}/citation/DBObject?!action=query&accessionID={{value}}",
      "SRW/FE_InsertMenu" "{{parentmenu}} | <a href={{uptodir}}/{{script}}/citation?!action=insertdir>Add Citation</a>",
      "GDB_Rule.displayName" "when the displayName of the Citation is available, set the displayName of the CitationLink to the displayName of the Citation. When not available (ie. the citation db no longer resides at GDB), set it to Cit:accessionNumber GDB:accessionNumber",
      "GDB_Rule" "if externalDB is null, set it to the _oid of 'citation'"
  ATTRIBUTE dBObjects: set-of [1,] DBObject
	    ORDER BY dBObjects.displayName ASC
            DELETE CASCADES
            DESCRIPTION: "The object in this database that is being linked to."
            PROPERTIES:
		"GDB_Rule" "<ul><li>dBObjects must be unique within the CitationLink (unique check based on: externaDB+accessionID+dBObject).<li>permit multiple dBObjects per CitationLink in GDB 6.0</ul>"

OBJECT CLASS Clone
             isa* GenomicSegment
  DESCRIPTION: "A segment of DNA which is replicated within a vector and a host organism; such as cloning human DNA within a Yeast Artificial Chromosome (YAC) vector and a yeast host."
  PROPERTIES:
      "FE_Order" "1",
      "FE_DefaultSummary" "accessionID*, displayName, alias, LFM, RFM, DNAType, vectorType",
      "PRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodir}}/restrict/{{script}}/{{db}}/ReagentSource?!action=insertform&reagent={{key}}>Add Reagent Source</a>",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodb}}/ReagentSource?!action=insertform&reagent={{key}}>Add Reagent Source</a> | <a href=/gdb-bin/genera/restrict/dseg/dsegquery?accessionID={{key}}&objectClass={{class}}>Generate DNA Segment Number</a> | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a>",
      "GDB_Rule.displayName" "User defined."
  ATTRIBUTE libraryAddresses (library, columnLoc, rowLoc, locationType, plateLoc):
            set-of [0,] ([1,1] Library, [0,1] VARCHAR(20), [0,1] VARCHAR(20), [1,1] LibLocationTypeDict, [0,1] VARCHAR(20))
	    ORDER BY rowLoc ASC, columnLoc ASC
            DELETE NULLIFIES
            DESCRIPTION: "Libraries and addresses at which clone occurs"
            PROPERTIES:
		"OB_Key" "library"
            COMPONENT library
              PROPERTIES:
		  "FE_Order" "1"
            COMPONENT columnLoc
              PROPERTIES:
	          "DESCRIPTION" "Plate column in which the clone is located.",
		  "FE_Order" "4",
		  "FE_PrintName" "Plate Column position"
            COMPONENT rowLoc
              PROPERTIES:
	          "DESCRIPTION" "Plate row in which the clone is located.",
		  "FE_Order" "3",
		  "FE_PrintName" "Plate Row position"
            COMPONENT locationType
              PROPERTIES:
		  "FE_AllowNULL" "Yes",
	          "DESCRIPTION" "Whether the library linked to the clone is its original library or its replated library.",
		  "FE_Order" "5",
		  "GDB_Rule" "on insert, if not supplied, set to 'Original'"
            COMPONENT plateLoc
              PROPERTIES:
	          "DESCRIPTION" "Library plate in which the clone is located.",
		  "FE_Order" "2",
		  "FE_PrintName" "Plate location"
  ATTRIBUTE availableFrom
            DERIVATION: ! reagent [ ReagentSource ]
	    ORDER BY availableFrom [ReagentSource] displayName ASC
            DESCRIPTION: "Third party editable list of sources from which this clone may be obtained."
  ATTRIBUTE multiCopy: [1,1] YesNoUnknown_UnkDict
            DESCRIPTION: "Does any part of this clone hybridize to more than one place in the genome? (Not to be confused with chimerism)."
            PROPERTIES:
		"GDB_Rule" "on insert, if not supplied, set to 'Unknown'"
  ATTRIBUTE DNAType: [1,1] DNATypeDict
            DESCRIPTION: "DNA type of the cloned insert (such as genomic or cDNA)."
            PROPERTIES:
		"GDB_Rule" "on insert, if not supplied, set to 'Unknown'"
  ATTRIBUTE hostOrganism: [0,1] Organism
            DELETE NULLIFIES
            DESCRIPTION: "Host organism in which the clone is maintained."
  ATTRIBUTE insertSize: [0,1] FLOAT
            DESCRIPTION: "Size of the cloned insert in kilobases."
            PROPERTIES:
		"FE_PrintName" "Insert Size (kb)",
		"GDB_Rule" "if supplied, must be >= 0"
  ATTRIBUTE vectorType: [1,1] VectorTypeDict
	    DESCRIPTION: "Type of vector used to clone the inserted DNA fragments (such as YAC or plasmid)."
            PROPERTIES:
		"GDB_Rule" "on insert, if not supplied, set to 'UNKNOWN'"
  ATTRIBUTE vectorName: [0,1] VARCHAR(255)
	    DESCRIPTION: "Name of vector used to clone the inserted DNA fragments ."
  ATTRIBUTE genomeExcisionEnzymes: set-of [0,2] RestrictionEnzyme
	    ORDER BY genomeExcisionEnzymes.displayName ASC
            DELETE CASCADES
	    DESCRIPTION: "Restriction enzyme (or pair of enzymes) used to excise the cloned insert from source DNA.<BR><B>Query and Edit notes:</B> This is a large dictionary. Use the <A HREF=/gdb-bin/genera/genera/hgd/RestrictionEnzyme?!action=queryform>Restriction Enzyme Query form</A> to search for the names of specific restriction enzymes."
  ATTRIBUTE vectorInsertionEnzymes: set-of [0,2] RestrictionEnzyme
	    ORDER BY vectorInsertionEnzymes.displayName ASC
            DELETE CASCADES
	    DESCRIPTION: "Restriction enzyme (or pair of enzymes) used to cut the cloning vector, in preparation for integration of the cloned insert.<BR><B>Query and Edit notes:</B> This is a large dictionary. Use the <A HREF=/gdb-bin/genera/genera/citation/RestrictionEnzyme?!action=queryform>Restriction Enzyme Query form</A> to search for the names of specific restriction enzymes."
  ATTRIBUTE vectorExcisionEnzymes: set-of [0,2] RestrictionEnzyme
	    ORDER BY vectorExcisionEnzymes.displayName ASC
            DELETE CASCADES
	    DESCRIPTION: "Restriction enzyme (or pair of enzymes) used to excise the cloned insert from the cloning vector.<BR><B>Query and Edit notes:</B> This is a large dictionary. Use the <A HREF=/gdb-bin/genera/genera/citation/RestrictionEnzyme?!action=queryform>Restriction Enzyme Query form</A> to search for the names of specific restriction enzymes."
  ATTRIBUTE chimerismData
            DERIVATION: ! segment [ IsChimeric ]
	    ORDER BY chimerismData [ IsChimeric ] displayName ASC
            DESCRIPTION: "Indicates whether or not this segment is known to be chimeric (applies mainly to Clone segments)."
	    PROPERTIES:
		"FE_PrintName" "Chimeric?"
  ATTRIBUTE mutations
            DERIVATION: ! genomicSegments [ Mutation ]
	    ORDER BY mutations.displayName ASC
            DESCRIPTION: "Mutations of this region."
  ATTRIBUTE homologies
            DERIVATION: ! segment [ HomologyLink ]
	    ORDER BY homologies [ HomologyLink ] displayName ASC
            DESCRIPTION: "Homologous regions in other genomic databases."

FOREIGN OBJECT CLASS Contact
  DESCRIPTION: "Individuals, Labs, Commercial Organizations, Projects, Repositories, etc. (Genome registry reference)"
  PROPERTIES:
      "FE_URL" "{{uptoscript}}/registry/DBObject?{{key}}",
      "OB_Key" "accessionID",
      "FE_DisplayAttr" "displayName",
      "FE_Visible" "No",
      "FE_Editable" "No",
      "OB_SearchKey" "searchName",
      "GDB_Note" "Populated automatically when entries are edited in the Registry."
  ID: accessionID
  REP: accessionID, displayName
  DATABASE: "registry"
  ALIAS: "Contact"
  ATTRIBUTE accessionID: [1,1] VARCHAR(50)
            DESCRIPTION: "Unique accession number of the Contact in the Registry Data Base."
            PROPERTIES:
		"FE_Order" "2",
		"FE_MatchCase" "Upper",
		"FE_Editable" "No"
  ATTRIBUTE displayName: [1,1] VARCHAR(200)
            DESCRIPTION: "Contact name as in the registry database"
            PROPERTIES:
		"FE_Order" "1",
                "FE_Editable" "Yes",
                "FE_Queryable" "Yes",
		"FE_Search" "searchName",
                "FE_PrintName" "Name",
                "GDB_Note" "Name denormalized from registry database"
  ATTRIBUTE searchName: [1,1] VARCHAR(200)
            DESCRIPTION: "Corresponds to lower(displayName). Denormalized to aid searching"
            PROPERTIES:
                "FE_Editable" "No",
                "FE_Queryable" "Yes",
                "FE_Order" "1",
                "FE_Visible" "No",
                "FE_MatchCase" "Lower",
                "GDB_Rule" "Always set to lower(displayName) on insert/update"
  ATTRIBUTE modDate: [1,1] DATETIME
            DESCRIPTION: "Date last modified"
            PROPERTIES:
		"FE_Editable" "No",
		"FE_Order" "3"
  ATTRIBUTE version: [1,1] INTEGER
            DESCRIPTION: "Current version number"
            PROPERTIES:
		"FE_Editable" "No",
		"FE_Order" "4"
  ATTRIBUTE objectClass: [1,1] VARCHAR(30)
            DESCRIPTION: "Invisible attribute holding the name of the leaf class in the ISA-hierarchy pertaining to this object."
            PROPERTIES:
                "FE_Editable" "No",
                "FE_Visible" "No",
                "GDB_Rule" "GDBI<Class> sets to classname, assuming downward order of GDBI<Class> calls. GDBD<Class> sets to parent class name, except for DBObject, which does nothing."

OBJECT CLASS ContentContigMap
             isa* Map
  DESCRIPTION: "A map which is based upon testing probe hits (i.e. STSs) against clones, (YACs) resulting in an ordered collection of clones along the chromosome backbone."
  PROPERTIES:
      "FE_Order" "1"
  ATTRIBUTE hits: set-of [0,] Order_
	    ORDER BY hits.displayName ASC
            DELETE CASCADES
            DESCRIPTION: "Associated probe-clone hits."
  	    PROPERTIES:
		"GDB_Rule" "<ul><li>hits must be unique within the ContentContigMap.<li>the release date of the contentcontigmap cannot be any earlier than the max releaseDate of the hits</ul>"

OBJECT CLASS Contig
             isa* GenomicSegment
  DESCRIPTION: "A collection of overlapping clones which span a chromosome segment."
  PROPERTIES:
      "FE_DefaultSummary" "accessionID*, displayName, alias, LFM, RFM",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a>",
      "FE_PrintName" "Contig",
      "FE_Visible:polymorphisms" "No",
      "GDB_Rule.displayName" "User defined",
      "GDB_Note" "<ul><li>Contig names will not be constrained with re. map names or map existence in amy way<li>The class Contig may be a source of confusion for people wanting to enter contig data; its only function is to allow nested maps. May be it should go away</ul>"

OBJECT CLASS CpGIsland
             isa* GenomicSegment
  DESCRIPTION: "CpG islands are commonly defined as regions of DNA of at least 200 bp in length and that have a G+C content above 50% and a ratio of observed vs. expected CpGs close to or above 0.6. ( Ref. Gardiner-Garden and Fromer (1987) ). Sets of CG repeat elements, usually found upstream of transcribed regions of the genome."
  PROPERTIES:
      "FE_DefaultSummary" "accessionID*, displayName, alias, LFM, RFM",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a>",
      "FE_PrintName" "CpG Island",
      "FE_Visible:polymorphisms" "No",
      "GDB_Rule.displayName" "User defined"
  ATTRIBUTE homologies
            DERIVATION: ! segment [ HomologyLink ]
	    ORDER BY homologies [ HomologyLink ] displayName ASC
            DESCRIPTION: "Homologous regions in other genomic databases."

OBJECT CLASS CytogeneticMap
             isa* Map
	DESCRIPTION: "A map representing the localization of GenomicSegments to G-banded chromosomes (i.e. SOD1 is found at 21q22.1). Units for these maps are given as dustin Units, which is an attempt to approximate the order and distance among the cytogenetic band boundaries."

OBJECT CLASS CytogeneticMarker
             isa* GenomicSegment
  DESCRIPTION: "Cytogenetic landmarks (such as 21q22.1), named in accordance with the conventions described in ISCN 1995."
  PROPERTIES:
      "FE_Editable" "No",
      "Admin/FE_Editable" "Yes",
      "FE_Visible:polymorphisms" "No",
      "FE_Visible:owner" "No",
      "FE_Visible:addDate" "No",
      "FE_Visible:modDate" "No",
      "FE_Visible:lastModifiedBy" "No",
      "FE_Visible:version" "No",
      "FE_DefaultSummary" "accessionID*, displayName",
      "Admin/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      "Admin/FE_ObjectMenu" "{{parentmenu}}",
      "GDB_Note" "Owned and seeded by GDB",
      "GDB_Rule" "only editable by admin group [implemented in GDBI_CytogeneticMarker]"
  ATTRIBUTE childBands
            DERIVATION: ! parent [ CytogeneticMarker ]
	    ORDER BY childBands [ CytogeneticMarker ] displayName ASC
            DESCRIPTION: "Sub-bands of this region."
  ATTRIBUTE chromosome: [1,1] Chromosome
            DELETE CASCADES
            DESCRIPTION: "Chromosome on which this marker lies."
  ATTRIBUTE parent: [0,1] CytogeneticMarker
            DELETE NULLIFIES
            DESCRIPTION: "Band of which this is an immediate sub-band."
  ATTRIBUTE bandType: [1,1] CytogeneticBandDict
            DESCRIPTION: "Cytogenetic band type (R band, G band, telomere, centromere etc.)"
  ATTRIBUTE resolutions: set-of [0,] CytogeneticResolutionDict
            DESCRIPTION: "Resolution (number of bands) at which this band is characterized."
            PROPERTIES:
		"GDB_Note" "<ul><li>A given band on a chromosome will go into the database one time, even if it is found in more than one ideogram resolution. The cytogenetic map of each chromosome will still have the highest resoltion bands in the backbone as before.<li>Also, an alias containing the chromosome number in the band name (e.g. 10q11) will be placed in the database for each cytogenetic marker</u>"

OBJECT CLASS DBObject
  DESCRIPTION: "Any accessionable database object."
  PROPERTIES:
      "FE_Editable" "No",
      "FE_PrintName" "Accessioned Object",
      "FE_DefaultSummary" "objectClass, accessionID*, displayName",
      "FE_DefaultSort" "displayName",
      "FE_DisplayAttr" "displayName",
      "FE_ClassAttr" "objectClass",
      "FE_Order" "1",
      "FE_ObjectMenu" "<a href=/gdb-bin/genera/history/historyquery?obkey={{key}}>View History</a>",
      "SRW/FE_QueryMenu" "{{parentmenu}} | <a href={{uptodir}}/SetOwnerGroup>Change Owner Group</a>",
      "SRW/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      "SRW/FE_DeleteOption" "<a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=DeleteRequest>Delete</a>",
      "SRW/FE_ObjectMenu" "{{Edit}} | {{Delete}} | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=ChangeOwner>Request Owner Change</a> | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodb}}/ObjectName?!action=insertform&dBObject={{key}}>Add Alias</a> | <a href={{uptodb}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodb}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}>View History</a>",
      "PRW/FE_ObjectMenu" "| <a href={{uptodir}}/restrict/{{script}}/{{db}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodir}}/restrict/{{script}}/{{db}}/ObjectName?!action=insertform&dBObject={{key}}>Add Alias</a> | <a href={{uptodir}}/restrict/{{script}}/{{db}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodir}}/restrict/{{script}}/{{db}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/history/historyquery?obkey={{key}}>View History</a>",
      "Admin/FE_QueryMenu" "{{parentmenu}} | <a href={{uptodir}}/SetOwnerGroup>Change Owner Group</a>",
      "Admin/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      "Admin/FE_DeleteOption" "<a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=DeleteRequest>Delete</a>",
      "Admin/FE_ObjectMenu" "{{Edit}} | {{Delete}} | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=ChangeOwner>Request Owner Change</a> | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodb}}/ObjectName?!action=insertform&dBObject={{key}}>Add Alias</a> | <a href={{uptodb}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodb}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}>View History</a>",
      "FE_ClassAttr" "objectClass",
      "OB_Key" "accessionID",
      "OB_Restrict" "Yes",
      "OB_DBRoot" "Yes",
      "OB_SearchKey" "aliases.searchAlias"
  ID: accessionID
  REP: accessionID, isReleased, displayName, objectClass
  ATTRIBUTE displayName: [1,1] VARCHAR(200)
            DESCRIPTION: "Value displayed when referring to the object in query results or in detail displays of objects linked to it. If the name is automatically derived from two or more other attributes, it is not editable."
            PROPERTIES:
                "FE_PrintName" "Name",
                "FE_Order" "1",
		"FE_Search" "searchAlias",
                "GDB_Rule" "<ul><li>May be null at insert-time for classes with computed names.<li>At insert time create a PrimaryName object with specified/computed name and owner as authority (and same 'released' information).<li>Update to displayName causes update to PrimaryName for the object. <li>If this object is ultimately a GenomeSegment and the displayName is modified - then all associated Variation->Mutation displayNames must also be updated.<li>If this object is ultimately a Gene and the displayName is modified - then all associated GeneElement displayNames must also be updated.</ul>"
  ATTRIBUTE aliases (alias,source_,searchAlias,aliasType): 
		set-of [0,] ([1,1] ObjectName,[1,1] Contact, [1,1] VARCHAR(200), [1,1] AliasTypeDict)
		ORDER BY searchAlias ASC
	    DESCRIPTION: "Used for searching when synonym matching is required. Includes both primary names and aliases."
		PROPERTIES:
		"FE_Editable" "No",
		"FE_Queryable" "No",
		"opm_derive" "user SQL",
		"GDB_View" "create view DBObject_aliases as select _oid = dBObject, alias = o._oid, source_ = o.owner, searchAlias = o.searchName, aliasType = o.aliasType, owner = dbo.owner, isReleased = dbo.isReleased from  ObjectName o, DBObject dbo where dbo._oid = o.dBObject",
		"GDB_Note" "This is a computed tuple achieved by a view. No sybase table need to be created",
            COMPONENT alias
		PROPERTIES:
		"FE_PrintName" "Alias Name",
		"opm_derive" "user SQL"
	    COMPONENT source_
		PROPERTIES:
		"FE_PrintName" "Authority",
		"opm_derive" "user SQL"
	    COMPONENT searchAlias
		PROPERTIES:
		"FE_Visible" "No",
		"FE_MatchCase" "Lower",
		"opm_derive" "user SQL"
	    COMPONENT aliasType
		PROPERTIES:
		"FE_Visible" "No",
		"FE_MatchCase" "Lower",
		"opm_derive" "user SQL"
  ATTRIBUTE accessionNumber: [1,1] NUMERIC
            DESCRIPTION: "Hidden unique identifier for the object."
            PROPERTIES:
                "FE_Editable" "No",
                "FE_Visible" "No",
                "FE_Queryable" "No",
                "FE_Order" "2",
                "GDB_Rule" "allocated from SerialNumber and set by GDB_I_DBObject"
  ATTRIBUTE accessionID: [1,1] VARCHAR(50)
            DESCRIPTION: "Unique accession identifier for the object.<BR><B>Query notes:</B> Only Accession IDs beginning with GDB (for genome objects) can be retrieved with one of the genome object query forms."
            PROPERTIES:
                "FE_Editable" "No",
		"FE_MatchCase" "Upper",
                "FE_Order" "2",
                "GDB_Rule" "computed from accessionNumber -- format for new ones is GDB: convert(char(accessionNumber)); GDB5 gdb_id_disp's get replaced by the new format.",
                "GDB_Note" "Warning message to user: gxx-xxx-xxx format no longer valid, use GDB:xxxxxxxx instead"
  ATTRIBUTE isReleased: [1,1] YesNo_YesDict
            DESCRIPTION: "Released status."
            PROPERTIES:
                "FE_Editable" "No",
                "FE_Visible" "No",
		"WAIS_Attr" "No",
                "GDB_Rule" "Set to yes by cron script when current date is greater than or equal to the release date. On entry, set to Yes unless releaseDate > current date"
  ATTRIBUTE modDate: [1,1] DATETIME
            DESCRIPTION: "Date when the object was last modified."
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
                "FE_Order" "-4",
		"WAIS_Attr" "No",
                "GDB_Rule" "set automatically after every change."
  ATTRIBUTE lastModifiedBy: [1,1] Contact
            DESCRIPTION: "Person who last modified the object."
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
                "FE_Order" "-3",
		"WAIS_Attr" "No"
  ATTRIBUTE objectClass: [1,1] VARCHAR(30)
            DESCRIPTION: "Invisible attribute holding the name of the leaf class in the ISA-hierarchy pertaining to this object."
            PROPERTIES:
                "FE_Editable" "No",
                "FE_Visible" "No",
                "GDB_Rule" "GDBI<Class> sets to classname, assuming downward order of GDBI<Class> calls. GDBD<Class> sets to parent class name, except for DBObject, which does nothing."
  ATTRIBUTE annotations
            DERIVATION: ! dBObjects [ Annotation ]
	    ORDER BY annotations [ Annotation ] displayName ASC,
                     annotations [ Annotation ] modDate DESC
            DESCRIPTION: "Annotations created by any GDB users and associated with the object."
            PROPERTIES:
		"FE_Queryable" "No",
                "FE_Order" "-10"
  ATTRIBUTE citations
            DERIVATION: ! dBObjects [ CitationLink ]
	    ORDER BY citations [ CitationLink ] displayName ASC
            DESCRIPTION: "Third-party editable list of citations associated with this object."
            PROPERTIES:
                "FE_Order" "-8"
  ATTRIBUTE externalLinks
            DERIVATION: ! dBObjects [ GenericLink ]
	    ORDER BY externalLinks [ GenericLink ] displayName ASC
            DESCRIPTION: "Third-party editable links to related objects in other databases."
            PROPERTIES:
                "FE_Order" "-9"
  ATTRIBUTE submissions: set-of [0,] Submission
            DESCRIPTION: "Submissions in which this DBObject was included for insertion or update in the database."
            PROPERTIES:
                "FE_Editable" "No",
                "GDB_Note" "Set by EDS submission processor"
  ATTRIBUTE submitter: [1,1] Contact
            DELETE CASCADES
            DESCRIPTION: "Person who entered the object into the database."
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
                "FE_Order" "-7",
		"WAIS_Attr" "No",
                "GDB_Rule" "set by GDBIDBObject to Contact corresponding to login"
  ATTRIBUTE addDate: [1,1] DATETIME
            DESCRIPTION: "Date when the object was created."
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
                "FE_Order" "-6",
		"WAIS_Attr" "No",
                "GDB_Rule" "set by GDBIDBObject"
  ATTRIBUTE owner: [1,1] Contact
            DELETE CASCADES
            DESCRIPTION: "The single Person or group of Persons (Owner Group) responsible for the content of the object. This person or group has editing access to the object and can view it before release to the public. Only GDB staff can change the ownership of an object."          
	    PROPERTIES:
                "FE_Editable" "No",
                "FE_Order" "3",
		"GDB_Rule" "set by GDBIDBObject"
  ATTRIBUTE comment: [0,1] VARCHAR(255)
            DESCRIPTION: "Additional information about the object.<BR><B>Edit notes:</B> Long comments should be entered as associated annotations."
            PROPERTIES:
                "FE_Order" "6",
		"FE_Queryable" "No"
  ATTRIBUTE replacedBy: set-of [0,] DBObject
	    ORDER BY replacedBy.displayName ASC, replacedBy.modDate DESC
            DELETE CASCADES
            DESCRIPTION: "Other objects that replace this object after it was split into multiple objects or merged with other objects. Only GDB staff can split/merge objects."
            PROPERTIES:
                "FE_Editable" "No",
                "FE_Order" "5",
		"GDB_Rule" "if replacedBy values are supplied, status must be 'Split' or 'Merged'"
  ATTRIBUTE status: [1,1] DBObjectStatusDict
            DESCRIPTION: "Status of an Accession ID with respect to splits, merges and deactivations."
            PROPERTIES:
		"FE_Editable" "No",
                "FE_Order" "4",
		"WAIS_Attr" "No",
                "GDB_Rule" "Set by delete/split/merge procedures."
  ATTRIBUTE releaseDate: [1,1] DATETIME
            DESCRIPTION: "Date the object became or will become publicly available. Objects can be unpublished for up to 6 months after submission. Once a release date has been assigned, it can be changed to an earlier date within that six-month period, but not earlier than the current date."
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Order" "-5",
		"FE_AllowNULL" "Yes",
                "GDB_Rule" "GDBIDBObject verifies that user-supplied initial value is no more than six months from current date. If NULL set to current date. GDBUDBObject verifies that new value is <= old value."
  ATTRIBUTE version: [1,1] INTEGER
            DESCRIPTION: "Current version number of the object."
            PROPERTIES:
                "FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
		"FE_Queryable" "No",
                "FE_Order" "-2",
		"WAIS_Attr" "No",
                "GDB_Rule" "Set by GDB[IUD]DBObject. In non-versioned DBs this simply counts the number of changes."
  ATTRIBUTE history: set-of [0,] ObjectHistory
	    ORDER BY history.modDate DESC
            DESCRIPTION: "History records created by updates"
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Order" "-1",
                "FE_Editable" "No",
                "FE_Queryable" "No",
                "opm_derive" "user SQL",
		"GDB_View" "create view DBObject_history as select _oid = oh.object, history = oh._oid, owner = dbo.owner, isReleased = dbo.isReleased from ObjectHistory oh, DBObject dbo where dbo._oid = oh.object"
               
               
	

OBJECT CLASS DetectMethod
             isa* ExperimentObject
  DESCRIPTION: "Experimental method used to observe a genomic variation."
  PROPERTIES:
      "FE_Order" "-1",
      "FE_DefaultSummary" "accessionID*, displayName",
      "FE_Editable:displayName" "No",
      "GDB_Rule" "set DBObject.displayName = {'<objectClass>: '+ probes} (comma delimited if multiple) + '/' + enzymes.enzyme"
  ATTRIBUTE gelPercent: [0,1] FLOAT
	    DESCRIPTION: "Concentration (in %) of gel used to separate the DNA fragments."
            PROPERTIES:
		"FE_PrintName" "Gel Conc (%)",
		"GDB_Rule" "0 <= gelPercent <= 100 [implemented in GDBV_DetectMethod]"
  ATTRIBUTE sepMethod: [1,1] SepMethodDict
	    DESCRIPTION: "Type of gel used to separate the DNA fragments."
            PROPERTIES:
		"GDB_Rule" "on insert, if not supplied, set to 'Unknown'"
  ATTRIBUTE visualMethod: [1,1] VisualMethodDict
	    DESCRIPTION: "Method by which the DNA fragments were visualized on the gel (radioactive labelling, staining, etc.)."
            PROPERTIES:
		"GDB_Rule" "on insert, if not supplied, set to 'Unknown'"
  ATTRIBUTE probes: list-of [1,] GenomicSegment
            DELETE CASCADES
	    DESCRIPTION: "Clones or Amplimers used in this detection method."
            PROPERTIES:
		"OB_Union" "Clone Amplimer",
		"GDB_Rule" "<ul><li>probes must be unique within the Detect Method.<li>the release date of the DetectMethod cannot be any earlier than the releaseDate of the probes</ul>"
  ATTRIBUTE enzymes (enzyme, enzymeUse):
            list-of [0,] ([0,1] RestrictionEnzyme, [0,1] EnzymeUseDict)
            DELETE CASCADES
            DESCRIPTION: "Restriction Enzymes used in this detection method."
            PROPERTIES:
            COMPONENT enzyme
              PROPERTIES:
		"FE_PrintName" "Enzyme"
            COMPONENT enzymeUse
              PROPERTIES:
		"FE_PrintName" "Enzyme Use"
  ATTRIBUTE variations
	DERIVATION: ! detectMethods [ Variation ]
	DESCRIPTION: "Detected variations"
	PROPERTIES:
	"FE_PrintName" "Polymorphism Detected"

OBJECT CLASS Distance
             isa* Observation
  DESCRIPTION: "Experimentally determined distances between genomic segments, or segment lengths i.e., distance between the endpoints of a single segment."
	PROPERTIES:
      	"FE_Visible:alias" "No",
      	"FE_Visible:source_" "No",
        "FE_DefaultSummary" "accessionID*, displayName",
	"FE_Editable:displayName" "No",
        "FE_ObjectMenu" "<a href=/gdb-bin/genera/history/historyquery?obkey={{key}}>View History</a>",
      	"SRW/FE_QueryMenu" "{{parentmenu}} | <a href={{uptodir}}/SetOwnerGroup>Change Owner Group</a>",
      	"SRW/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      	"SRW/FE_DeleteOption" "<a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=DeleteRequest>Delete</a>",
      	"SRW/FE_ObjectMenu" "{{Edit}} | {{Delete}} | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=ChangeOwner>Request Owner Change</a> | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodb}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodb}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}>View History</a>",
      	"PRW/FE_ObjectMenu" "| <a href={{uptodir}}/restrict/{{script}}/{{db}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodir}}/restrict/{{script}}/{{db}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodir}}/restrict/{{script}}/{{db}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/history/historyquery?obkey={{key}}>View History</a>",
      	"Admin/FE_QueryMenu" "{{parentmenu}} | <a href={{uptodir}}/SetOwnerGroup>Change Owner Group</a>",
      	"Admin/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      	"Admin/FE_DeleteOption" "<a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=DeleteRequest>Delete</a>",
      	"Admin/FE_ObjectMenu" "{{Edit}} | {{Delete}} | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=ChangeOwner>Request Owner Change</a> | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodb}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodb}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}>View History</a>",
	"GDB_Rule" "update DBObject.displayName = 'A.displayName -- B.displayName distance = D.distance D.units' [implemented in gdbsC_Distance]"
  ATTRIBUTE segments (segment, endPoint):
            list-of [2,2] ([1,1] GenomicSegment, [1,1] EndpointDict)
            DELETE CASCADES
            DESCRIPTION: "GenomicSegments that distance is between."
		PROPERTIES:
	    COMPONENT segment
		PROPERTIES:
	    COMPONENT endPoint
		PROPERTIES:
		"FE_AllowNULL" "Yes",
		"GDB_Rule" "should default to 'Entire' [implemented in GDBI_Distance_segments]"
  ATTRIBUTE distance: [1,1] FLOAT
            DESCRIPTION: "The measured distance."
		PROPERTIES:
		"GDB_Rule" "must be >= 0 [implemented in GDBV_Distance]"
  ATTRIBUTE error: [0,1] FLOAT
            DESCRIPTION: "Standard error of the distance measurement."
		PROPERTIES:
		"GDB_Rule" "if supplied, must be >= 0 [implemented in GDBV_Distance]"
  ATTRIBUTE errorType: [0,1] ErrorTypeDict
            DESCRIPTION: "Standard error, LOD of the distance measurement."
  ATTRIBUTE units: [1,1] UnitsDict
            DESCRIPTION: "Units of measure for the distance."
  ATTRIBUTE likelihood: [0,1] FLOAT
            DESCRIPTION: "Likelihood of distance measurement."
                PROPERTIES:
                      "GDB_Rule" "if likelihoodType is 'Like', likelihood must be between 0 and 1, if Type is 'LOD', then likelihood must be >= 0"
  ATTRIBUTE likelihoodType: [0,1] OrderLikelihoodTypeDict
	    DESCRIPTION: "Likelihood type"
                PROPERTIES:
                      "GDB_Rule" "Cannot be null if orderLikelihood is null"

OBJECT CLASS EnzymeLink
             isa* ExternalLink
  DESCRIPTION: "Links proteins to external enzyme databases (e.g., ENZYME)"
    PROPERTIES:
	"GDB_Rule" "if displayName is NULL, default to ExternalLink.accessionID"
  ATTRIBUTE protein: [1,1] Protein
            DELETE CASCADES
            DESCRIPTION: "Associated protein"
    	    PROPERTIES:
		"GDB_Rule" "protein must be unique within the EnzymeLink (unique check based on: externaDB+accessionID+protein"

OBJECT CLASS ExperimentObject
             isa* DBObject
  DESCRIPTION: "Groups all objects involved in representing experimental data."
  PROPERTIES:
      "FE_Editable" "No",
      "FE_Order" "3"

OBJECT CLASS Expression
             isa* BiologicalObject
  DESCRIPTION: "The pattern of expression of a gene."
  PROPERTIES:
      "FE_Order" "3",
      "FE_DefaultSummary" "accessionID*, displayName",
      "GDB_Note" "Will ideally refer to an external expression database in the future.",
      "GDB_Rule.displayName" "User defined."
  ATTRIBUTE pattern: list-of [1,] VARCHAR(255)
            DESCRIPTION: "Gene expression pattern."
		PROPERTIES:
		"FE_Preformatted" "Yes",
		"OB_Pack" "Yes"
  ATTRIBUTE gene: [1,1] Gene
            DELETE CASCADES
            DESCRIPTION: "Gene whose pattern of expression is described."
		PROPERTIES:
		  "GDB_Rule" "the releaseDate of the expression cannot be any earlier than the releaseDate of the gene"

OBJECT CLASS ExternalDB
             isa* AnnotationObject
  DESCRIPTION: "Databases that are pointed to by external references"
  PROPERTIES:
      "FE_Editable" "Yes",
      "SRW/FE_UpdateMenu" "{{submit}} {{reset}} <a href={{uptodb}}?!action=help&type=ExternalDB>Help</a>",
      "GDB_Note" "Initially populated by GDB, but extendable by any user",
      "GDB_Rule" "<ul><li>Notify data of any additions to ExternalDB.<li>displayName and/or urlBase must ge unique within ExternalDB<li>if displayName is modified, all associated GenericLink displayNames must be recalculated. <li>if displayName is modified, all associated HomologyLink displayNames must be recalculated. <li>if displayName is modified, all associated StructureLink displayNames must be recalculated"
  ATTRIBUTE urlBase: [0,1] VARCHAR(255)
            DESCRIPTION: "Basis for constructing WWW references to objects by concatenation (or substitution) of accession number."
		PROPERTIES:
		"FE_Order" "2",
		"GDB_Rule" "<ul><li>should start with 'http:','{{','gopher:','telnet:','ftp:','mailto:'.<li>if urlBase is modified, respective ExternalLink.url needs to be updated (based on ExternalLink.externalDB<li>remove leading and trailing spaces from urlBase</ul>"

OBJECT CLASS ExternalLink
  DESCRIPTION: "Superclass of all links from DBObjects to external objects."
  PROPERTIES:
      "FE_Editable" "No",
      "FE_Order" "-1",
      "OB_Key" "_oid",
      "FE_ClassAttr" "objectClass",
      "FE_DisplayAttr" "displayName",
      "FE_DefaultSummary" "accessionID*, displayName, externalDB, url",
      "FE_URL" "{{url}}",
      "FE_ObjectMenu" "<a href=/gdb-bin/genera/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      "SRW/FE_QueryMenu" "{{parentmenu}} | <a href={{uptodir}}/SetOwnerGroup>Change Owner Group</a>",
      "Admin/FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      "Admin/FE_QueryMenu" "{{parentmenu}} | <a href={{uptodir}}/SetOwnerGroup>Change Owner Group</a>",
      "SRW/FE_InsertMenu" "{{parentmenu}}",
      "OB_SearchKey" "searchName",
      "OB_DBRoot" "Yes",
      "OB_Restrict" "Yes",
  REP: accessionID, displayName, url
  ATTRIBUTE modDate: [1,1] DATETIME
	PROPERTIES:
	"FE_IncludeInDetail" "No",
	"Admin/FE_IncludeInDetail" "Yes",
	"FE_Order" "-4",
	"FE_Editable" "No",
	"GDB_Rule" "set by insert/update procedures"
  ATTRIBUTE displayName: [1,1] VARCHAR(200)
	    DESCRIPTION: "Value displayed when referring to the linked object."
            PROPERTIES:
		"FE_AllowNULL" "Yes",
		"FE_Order" "1",
		"FE_Search" "searchName",
		"FE_PrintName" "Name"
  ATTRIBUTE searchName: [1,1] VARCHAR(200)
            DESCRIPTION: "Corresponds to lower(displayName). Denormalized to aid searching"
            PROPERTIES:
                "FE_Editable" "No",
                "FE_Queryable" "Yes",
                "FE_PrintName" "Name",
                "FE_Order" "1",
                "FE_Visible" "No",
                "FE_MatchCase" "Lower",
		"FE_AlsoSearch" "accessionID",
                "GDB_Rule" "Always set to lower(displayName) on insert/update"
  ATTRIBUTE objectClass: [1,1] VARCHAR(30)
            DESCRIPTION: "Invisible attribute holding the name of the leaf class in the ISA-hierarchy pertaining to this object."
            PROPERTIES:
                "FE_Editable" "No",
                "FE_Visible" "No",
                "GDB_Rule" "GDBI<Class> sets to classname"
  ATTRIBUTE owner: [1,1] Contact
            DELETE CASCADES
            DESCRIPTION: "Person with write access to the object."
		PROPERTIES:
		"FE_Editable" "No",
		"FE_Order" "3"
		"GDB_Rule" "only the admin group can update owner"
  ATTRIBUTE isReleased: [1,1] YesNo_YesDict
            DESCRIPTION: "Released status"
		PROPERTIES:
		"FE_Order" "-3",
		"FE_Editable" "No",
		"GDB_Rule" "The releasedness of the ExternalLink is dictated by the DBObjects linked to this; On entry, set to Yes unless releaseDate > current date; Set to yes by cron script when current date is greater than or equal to the release date." 
  ATTRIBUTE releaseDate: [1,1] DATETIME
            DESCRIPTION: "Date the object became or will become part of the public database. Objects can be unpublished for up to 6 months after submission. Release date once assigned cannot be edited to a later date, only an earlier one."
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
		"FE_Order" "-2",
		"FE_AllowNULL" "Yes",
                "GDB_Rule" "my object can't be released before its dependent objects - therefore my releaseDate must be greater than any other object i depend on...",
                "GDB_Rule" "GDBIDBObject verifies that user-supplied initial value is no more than six months from current date. If NULL set to current date. GDBUDBObject verifies that new value is <= old value."
  ATTRIBUTE externalDB: [1,1] ExternalDB
            DELETE CASCADES
            DESCRIPTION: "The external database in which the object is stored. (WWW is considered a database.).<BR><B>Query and Edit notes:</B> Choose a value from the <A HREF=/gdb-bin/genera/genera/hgd/ExternalDB?!action=query>list of External Databases</A>."
		PROPERTIES:
		"FE_Order" "2"
  ATTRIBUTE accessionID: [1,1] VARCHAR(200)
            DESCRIPTION: "Accession number of object in external DB. For WWW list URL here."
		PROPERTIES:
		"FE_Order" "3",
		"FE_PrintName" "External Accession ID",
		"GDB_Rule" "do not allow nulls"
  ATTRIBUTE externalVersion: [0,1] VARCHAR(20)
            DESCRIPTION: "Specific version identifier for the linked object specified in External Accession ID. Only some external databases support multiple versions of an object, and this field is optional."
		PROPERTIES:
		"FE_Order" "4"
  ATTRIBUTE version: [1,1] INTEGER
            DESCRIPTION: "Current internal version number of the link"
            PROPERTIES:
                "FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
		"FE_Order" "-1"
                "FE_Editable" "No",
		"GDB_Rule" "set to 1 on inserts; increase by 1 on updates"
  ATTRIBUTE url: [0,1] VARCHAR(255)
            DESCRIPTION: "Universal Resource Locator for finding this object on the World Wide Web."
            PROPERTIES:
		"FE_Order" "5",
                "FE_Editable" "No",
                "FE_Visible" "No",
      		"FE_URL" "{{url}}",	
                "GDB_Rule" "if the urlBase is not null, this will be constructed from the externalDB.URLBase and the accessionID. [implemented in GDBI/U_ExternalLink]",
		"GDB_Rule" "if the urlBase is null, then the url should be set to null also"
  ATTRIBUTE submissions: set-of [0,] Submission
            DESCRIPTION: "Associated EDS submission information for this object"
            PROPERTIES:
                "FE_Editable" "No",
                "GDB_Note" "Set by EDS submission processor"
  ATTRIBUTE history: set-of [0,] ObjectHistory
        ORDER BY history.modDate DESC
            DESCRIPTION: "History records created by updates"
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Visible" "No",
                "FE_Order" "-1",
                "FE_Editable" "No",
                "FE_Queryable" "No",
                "opm_derive" "user SQL"

OBJECT CLASS FragileSite
             isa* GenomicSegment
  DESCRIPTION: "Chromosomal regions at which breakage is commonly observed, particularly in concordance with certain phenotypes, such as those associated with Fragile X."
  PROPERTIES:
      "FE_Visible:polymorphisms" "No",
      "FE_PrintName:displayName" "Symbol",
      "FE_DefaultSummary" "accessionID*, displayName, alias, LFM, RFM, agent",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href=http://www.gene.ucl.ac.uk/nomenclature/>The Nomenclature Web Page</a> | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a>",
      "SRW/FE_InsertMenu" "{{parentmenu}} | <a href=http://www.gene.ucl.ac.uk/nomenclature/>The Nomenclature Web Page</a>",
      "SRW/FE_UpdateMenu" "{{parentmenu}} | <a href=http://www.gene.ucl.ac.uk/nomenclature/>The Nomenclature Web Page</a>",
      "GDB_Rule.displayName" "user defined. Only allow in maps of chromosome included in displayName",
  ATTRIBUTE frequency: [1,1] OccurrenceFreqDict
            DESCRIPTION: "Frequency of breakage occurrence (common or rare)."
		PROPERTIES:
		"FE_AllowNULL" "Yes",
		"GDB_Rule" "If null, default to 'Common'"
  ATTRIBUTE agent: [0,1] FragileSiteAgentDict
            DESCRIPTION: "Chemical agent revealing the fragile site."
  ATTRIBUTE phenotypes
            DERIVATION: ! segment [ PhenotypeLink ]
	    ORDER BY phenotypes [ PhenotypeLink ] displayName ASC
            DESCRIPTION: "Phenotypes associated with this region"
  ATTRIBUTE mutations
            DERIVATION: ! genomicSegments [ Mutation ]
	    ORDER BY mutations [ Mutation ] displayName ASC
            DESCRIPTION: "Mutations of this region."

OBJECT CLASS Gene
             isa* GenomicSegment
  DESCRIPTION: "Transcribed segment of the genome; defined to begin at the transcription start signal and end at the end of the last exon. Does not include regulatory segments, unless they happen to fall within the region so defined."
  PROPERTIES:
      "FE_Order" "1",
      "FE_DefaultSummary" "accessionID*, displayName, alias, LFM, RFM",
      "FE_PrintName:displayName" "Symbol",
      "FE_IncludeInDetail:owner" "No",	
      "Admin/FE_IncludeInDetail:owner" "Yes"	
      "DESCRIPTION:displayName" "Value displayed for the gene in query results or in detail displays of objects which reference it.<BR><B>Query notes:</B> This field searhes both the HUGO approved symbol for the gene and other names and symbols by which the gene is known."
     "PRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodir}}/restrict/{{script}}/{{db}}/HomologyLink?!action=insertform&segment={{key}}>Add Homology Link</a> | <a href={{uptodir}}/restrict/{{script}}/{{db}}/PhenotypeLink?!action=insertform&segment={{key}}>Add Phenotype Link</a> | <a href={{uptodir}}/restrict/{{script}}/{{db}}/ProteinSequenceLink?!action=insertform&gene={{key}}>Add Protein Sequence Link</a>",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodb}}/HomologyLink?!action=insertform&segment={{key}}>Add Homology Link</a> | <a href={{uptodb}}/PhenotypeLink?!action=insertform&segment={{key}}>Add Phenotype Link</a> | <a href={{uptodb}}/ProteinSequenceLink?!action=insertform&gene={{key}}>Add Protein Sequence Link</a> | <a href=http://www.gene.ucl.ac.uk/nomenclature/>The Nomenclature Web Page</a> | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a>",
      "SRW/FE_InsertMenu" "{{parentmenu}} | <a href=http://www.gene.ucl.ac.uk/nomenclature/>The Nomenclature Web Page</a>",
      "SRW/FE_UpdateMenu" "{{parentmenu}} | <a href=http://www.gene.ucl.ac.uk/nomenclature/>The Nomenclature Web Page</a>",
      "GDB_Rule.displayName" "User defined.",
  ATTRIBUTE elements
            DERIVATION: ! gene [ GeneElement ]
	    ORDER BY elements [ GeneElement ] displayName ASC
            DESCRIPTION: "Elements within the gene (Exon, Intron, Transcription Start, Polyadenylation site etc.)."
  ATTRIBUTE expression
            DERIVATION: ! gene [ Expression ]
	    ORDER BY expression [ Expression ] displayName ASC
            DESCRIPTION: "Expression pattern of this gene."
  ATTRIBUTE products
            DERIVATION: ! gene [ GeneProduct ]
	    ORDER BY products [ GeneProduct ] displayName ASC
            DESCRIPTION: "Protein or RNA gene products."
  ATTRIBUTE controlRegions
            DERIVATION: ! regulates [ RegulatoryRegion ]
	    ORDER BY controlRegions [ RegulatoryRegion ] displayName ASC
            DESCRIPTION: "Regions which regulate the expression of this gene."
  ATTRIBUTE isPseudogene: [1,1] YesNoUnknown_UnkDict
	    DESCRIPTION: "Flag which indicates whether or not this gene has been identified as a pseudogene."
  ATTRIBUTE evidence (reason, annotation):
            set-of [0,] ([1,1] GeneEvidenceDict, [1,1] VARCHAR(255))
	    ORDER BY reason ASC
	    DESCRIPTION: "Evidence to support the premise that this GenomicSegment is a gene."
  ATTRIBUTE families
            DERIVATION: ! genes [ GeneFamily ]
	    ORDER BY families [ GeneFamily ] displayName ASC
            DESCRIPTION: "Gene families to which this gene belongs. (A gene may be a member of more than one family.)"
  ATTRIBUTE mutations
            DERIVATION: ! genomicSegments [ Mutation ]
	    ORDER BY mutations [ Mutation ] displayName ASC
            DESCRIPTION: "Mutations of this region."
  ATTRIBUTE homologies
            DERIVATION: ! segment [ HomologyLink ]
	    ORDER BY homologies [ HomologyLink ] displayName ASC
            DESCRIPTION: "Homologous regions in other genomic databases."
  ATTRIBUTE phenotypes
            DERIVATION: ! segment [ PhenotypeLink ]
	    ORDER BY phenotypes [ PhenotypeLink ] displayName ASC
            DESCRIPTION: "Phenotypes associated with this region"
  ATTRIBUTE asos
            DERIVATION: ! genes [ AlleleSpecificOligomer ]
	    ORDER BY asos [ AlleleSpecificOligomer ] displayName ASC
            DESCRIPTION: "ASOs associated with this gene"
		PROPERTIES:
		"FE_PrintName" "ASOs"
  ATTRIBUTE proteinSequenceLink
            DERIVATION: ! gene [ ProteinSequenceLink ]
            ORDER BY proteinSequenceLink [ProteinSequenceLink] displayName ASC,
                     proteinSequenceLink [ProteinSequenceLink] modDate DESC
            DESCRIPTION: "Third-party protein sequence links to related objects in other databases."
                PROPERTIES:
		"FE_PrintName" "Protein Sequences"

OBJECT CLASS GeneElement
             isa* GenomicSegment
  DESCRIPTION: "Structural elements within a gene (intron/exon etc)."
  PROPERTIES:
      "FE_DefaultSummary" "accessionID*, displayName, alias, LFM, RFM",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a>",
      "FE_Editable:displayName" "No",
      "GDB_Rule.displayName" "gene + elementType + elementNumber. (elementNumber not yet an attribute; place number in AnnotationObject until 6.1?)"
  ATTRIBUTE gene: [1,1] Gene
            DELETE CASCADES
	    DESCRIPTION: "Gene in which this element is located."
	    PROPERTIES:
   		"GDB_Rule" "<ul><li>If GeneElement.gene.displayName is modified (either by owner/HUGO), then this must be propagated to GeneElement.displayName as well, since GeneElement.displayName is constructed from the gene, referred by the gene element.<li>the releaseDate of the GeneElement cannot be less than the releaseDate of the gene</ul>"
  ATTRIBUTE elementType: [1,1] GeneElementTypeDict
	    DESCRIPTION: "Type of structural element (e.g., exon, intron). "
	    PROPERTIES:
		"GDB_Rule" "on insert, if not supplied, set to 'Other'"
  ATTRIBUTE elementNumber: [0,1] VARCHAR(5)
	DESCRIPTION: "Identifier for this element, associated with the elementType (e.g., exon 5, intron 6)."
  ATTRIBUTE homologies
            DERIVATION: ! segment [ HomologyLink ]
	    ORDER BY homologies [ HomologyLink ] displayName ASC
            DESCRIPTION: "Homologous regions in other genomic databases."
  ATTRIBUTE phenotypes
            DERIVATION: ! segment [ PhenotypeLink ]
	    ORDER BY phenotypes [ PhenotypeLink ] displayName ASC
            DESCRIPTION: "Phenotypes associated with this region"
  ATTRIBUTE mutations
            DERIVATION: ! genomicSegments [ Mutation ]
	    ORDER BY mutations [ Mutation ] displayName ASC
            DESCRIPTION: "Mutations of this region."

OBJECT CLASS GeneFamily
             isa* BiologicalObject
  DESCRIPTION: "A set of genes which appear to be related, based on similarity of sequence or function."
  PROPERTIES:
      "FE_DefaultSummary" "accessionID*, displayName, genes",
      "SRW/FE_InsertMenu" "{{parentmenu}}",
      "SRW/FE_UpdateMenu" "{{parentmenu}}",
      "FE_QueryHelp" " Retrieve the gene family by entering the gene family name and press 'Submit'. This search is NOT case-sensitive. To retrieve the PAX gene famly enter 'PAX' of 'pax'",
      "FE_UpdateHelp" "This option allows you to change the name, comment, definition or release date of the family. You can also add additional genes to the family. Make the desired changes, following the guidelines for creating a new gene family. Retrieve the gene family by entering the gene family name and press 'Submit'. This search is NOT case-sensitive. To retrieve the PAX gene famly enter 'PAX' of 'pax'.",
      "FE_InsertHelp:displayName" "Enter a commonly accepted designation for the family. For example, the PAX gene family is simply called &quot;PAX&quot;. Avoid adding &quot;gene family&quot;(this will be added automatically) or other common words to the name of the gene family. 
The information you enter into the database will be displayed exactly as you have entered it. If you enter &quot;PAX&quot; the name of the gene family will be PAX, if you enter &quot;pax&quot; the name will be pax.
<P> If the family is known by several different names, these additional names can be added as &quot;aliases&quot; after the original entry is created. See Add Alias also.",
      "FE_InsertHelp:owner" "If you are not a member of a group you will not see this option, as ownership will automatically be assigned to you. <P>A pull-down menu is displayed with your name and the names of any groups to which you belong. Select either your name or a group name to assign ownership to the gene family. ",
      "FE_InsertHelp:comment" "Please reserve comments for information that does not fit into 'Definition', 'Annotation' or other fields in the database",
      "FE_InsertHelp:releaseDate" "Leave this field empty or simply enter &quot;today&quot; to have your data publicly visible as soon as possible.  A future release date of up to 6 months can be specified by entering month, day and year.  An appropriate date format is March 20 1996.",
      "GDB_Rule.displayName" "User defined",
  ATTRIBUTE definition: list-of [1,] VARCHAR(255)
            DESCRIPTION: "Defining characteristics of the family."
            PROPERTIES:
		"FE_Preformatted" "Yes",
		"OB_Pack" "Yes",
		"FE_InsertHelp" "Provide the evidence for grouping these genes into a family and any other useful information. A group of genes can be classified as a family based on sequence similarity, functional analysis or other acceptable classifications. 
For example, the definition for the PAX gene family states that &quot;protein products of these genes contain a 124 amino acid conserved domain known as the 'paired box' which contains the consensus pattern R-P-C-x(11)-C-V-S at positions 35-51&quot;.
<P> Other useful information could include the functions of gene family members or inclusion in other families or sub-families.  For example, 'the PAX gene family members are believed to act as transcription factors' and 'several members of this family also contain homeoboxes and are members of the homeobox gene family (e.g. PAX3, PAX4, PAX6, PAX7)'."
  ATTRIBUTE genes: set-of [1,] Gene
	    ORDER BY genes.displayName ASC
            DELETE CASCADES
            DESCRIPTION: "Genes in this family. A gene may be a member of more than one family."
            PROPERTIES:
		"FE_EmptyRows" "15",
		"FE_InsertHelp" "Enter the name (or GDB accession ID, e.g. GDB:123456) for each member of the family. Be sure to use the name specified in GDB as these names are actually the symbols which have been approved by the nomenclature committee.  
For example, the members of the PAX gene family are PAX1, PAX2, PAX3, PAX4, PAX5, PAX6, PAX7, PAX8 and PAX9. <P> These fields are NOT case-sensitive, the names can also be entered as pax1, pax2, etc. The names will be changed to the appropriate case when submitted. 
<P> Accepted aliases can also be entered as the gene name; these will be converted to the appropriate name upon entry. For example, if WS1 is entered instead of PAX3, this alias will be accepted and &quot;PAX3&quot; will be displayed after the completed entry has been submitted. 
<P> This form contains 15 fields to enter the genes in a family. If the family contains more than 15 members they can be added by editing the entry afterward. Submit the family as is, then choose &quot;Edit&quot;. A new form containing 15 additional fields will be provided; continue as needed until all gene family members are added."
		"GDB_Rule" "genes should be unique within the GeneFamily. the releaseDate of the GeneFamily cannot be any earlier than the max releaseDate of its gene components"

OBJECT CLASS GeneProduct
             isa* BiologicalObject
  DESCRIPTION: "Proteins or RNAs resulting from the transcription of this gene."
  PROPERTIES:
      "FE_Editable" "No",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodb}}/NucleicAcidSequenceLink?!action=insertform&dBObject={{key}}>Add Nucleic Acid Sequence Link</a> | <a href={{uptodb}}/StructureLink?!action=insertform&geneProduct={{key}}>Add Structure Link</a>"
      "PRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodir}}/restrict/{{script}}/{{db}}/NucleicAcidSequenceLink?!action=insertform&dBObject={{key}}>Add Nucleic Acid Sequence Link</a> | <a href={{uptodir}}/restrict/{{script}}/{{db}}/StructureLink?!action=insertform&geneProduct={{key}}>Add Structure Link</a>"
  ATTRIBUTE nucleicAcidSequences
            DERIVATION: ! dBObject [ NucleicAcidSequenceLink ]
	    ORDER BY nucleicAcidSequences [ NucleicAcidSequenceLink ] displayName ASC
            DESCRIPTION: "External links to nucleic acid sequence databases."
  ATTRIBUTE structures
            DERIVATION: ! geneProduct [ StructureLink ]
	    ORDER BY structures [ StructureLink ] displayName ASC
            DESCRIPTION: "External links to structure databases."
  ATTRIBUTE genes (gene, subunit, nCopies):
            set-of [1,] ([1,1] Gene, [0,1] VARCHAR(20), [0,1] SMALLINT)
            DELETE NULLIFIES
            DESCRIPTION: "List genes coding for this product. If product has multiple distinct subunits, label them using subunit field (eg alpha, beta, 70S, etc.) nCopies is number of copies of each subunit in the product."
  	    PROPERTIES:
		"OB_Key" "gene",
		"GDB_Rule" the releasedate of the GeneProduct cannot be any earlier than the max release date of the genes"

OBJECT CLASS GenericLink
             isa* ExternalLink
  DESCRIPTION: "Generic link from a DBObject to an external object."
  PROPERTIES:
      "GDB_Rule" "if displayName is NULL, default to = externalDB : ExternalLink.accessionID"
  ATTRIBUTE dBObjects: set-of [1,] DBObject
	    ORDER BY dBObjects.displayName ASC
            DELETE CASCADES
            DESCRIPTION: "The object in this database that is being linked to."
            PROPERTIES:
		"GDB_Rule" "dBObjects must be unique within the GenericLink"

OBJECT CLASS GenomicSegment
             isa* MappingObject
  DESCRIPTION: "Any named region or set of regions of a genome, including chromosome, gene, breakpoint, etc."
  PROPERTIES:
      "FE_Editable" "No",
      "FE_Order" "1",
      "FE_DefaultSummary" "objectClass, accessionID*, displayName, alias, LFM, RFM",
      "FE_QueryMenu" "{{parentmenu}} | <a href=/gdb-bin/mqp/mqp.pl>Query By Position </a>",
      "SRW/FE_QueryMenu" "{{parentmenu}} | <a href=/gdb-bin/mqp/restrict/mqp.pl>Query By Position </a>",
      "FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/mqp/mqp.pl?ID={{key}}>View Maps Containing this Segment </a>",
      "PRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodir}}/restrict/{{script}}/{{db}}/NucleicAcidSequenceLink?!action=insertform&dBObject={{key}}>Add Nucleic Acid Sequence Link</a> | <a href=/gdb-bin/mqp/mqp.pl?ID={{key}}>View Maps Containing this Segment </a>",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodb}}/NucleicAcidSequenceLink?!action=insertform&dBObject={{key}}>Add Nucleic Acid Sequence Link</a> | <a href=/gdb-bin/mqp/restrict/mqp.pl?ID={{key}}>View Maps Containing this Segment </a>",
      "WAIS_Class" "Yes"
  ATTRIBUTE genome: [0,1] Organism
            DELETE NULLIFIES
            DESCRIPTION: "The genome from which the segment is derived. Useful for reagents derived from non-human genomes, and in future if more than one genome is described in the database.<br> If no value is entered, the default value is 'Human'."
            PROPERTIES:
                "GDB_Rule" "Default value should be 'human', but this should be overridable for non-human clones, etc."
  ATTRIBUTE mapsOf
            DERIVATION: ! mapOf [ Map ]
	    ORDER BY mapsOf [ Map ] displayName ASC
            DESCRIPTION: "Maps of this segment of the genome."
		PROPERTIES:
		"FE_Queryable" "No"
  ATTRIBUTE cytoLocations (chromosome_, LFM, RFM, mapElement_, cytoMap):
	    set-of [0,] ([1,1] Chromosome, [1,1] VARCHAR(200), [1,1] VARCHAR(200), [1,1] VARCHAR(50), [1,1] Map)
            DESCRIPTION: "Localizations of this segment in Cytogenetic maps."
	   	PROPERTIES:
	   	"FE_PrintName" "Cytogenetic Localization",
	   	"FE_Editable" "No",
                "FE_QueryHelp" "Use this group to retrieve segments at a specified cytogentic location, <a href=/gdb/cytoquery_examples.html>details here</a>",
	   	"opm_derive" "user SQL",
	   	"GDB_View" "create view GenomicSegment_cytoLocations
	as select _oid = E.segment, 	/* MapElement.segemnt 		*/
	chromosome_ = M.chromosome,	/* chromomsome displayName 	*/
	LFM = DL.displayName,		/* LFM.segment.displayName 	*/
	RFM = DR.displayName,		/* RFM.segement.displayName 	*/
	mapElement_ = DE.accessionID, 	/* E.accessionID 		*/
	cytoMap = E.map	,		/* GS.element.map.displayName 	*/
	owner = G.owner,		/* GS.owner 			*/
	isReleased = G.isReleased	/* GS.isReleased 		*/
		from GenomicSegment G, MapElement E, 
	        DBObject DE,
		Map M, DBObject DM,
		MapElement ELFM, MapElement ERFM,
		DBObject DL, DBObject DR
	where G._oid = E.segment
		and E._oid = DE._oid
		and E.map = M._oid
		and M._oid = DM._oid
		and DM.objectClass = 'CytogeneticMap'
		and E.LFM = ELFM._oid
		and ELFM.segment = DL._oid
		and E.RFM = ERFM._oid
		and ERFM.segment = DR._oid"
	    COMPONENT chromosome_
		PROPERTIES: 
		"FE_PrintName" "Chromosome",
	   	"opm_derive" "user SQL"		
	    COMPONENT LFM
		PROPERTIES: 
		"FE_PrintName" "Left Marker",
		"FE_Queryable" "Yes",
		"FE_URL" "{{uptodb}}/CytogeneticMarker?!action=query&displayName={{value}}",
	   	"opm_derive" "user SQL"		
	    COMPONENT RFM
		PROPERTIES: 
		"FE_PrintName" "Right Marker",
		"FE_Queryable" "Yes",
		"FE_URL" "{{uptodb}}/CytogeneticMarker?!action=query&displayName={{value}}",
	   	"opm_derive" "user SQL"		
	    COMPONENT mapElement_
		PROPERTIES: 
		"FE_Queryable" "No",
		"FE_URL" "{{uptodb}}/MapElement?!key={{value}}",
		"FE_PrintName" "Map Element ID",
	   	"opm_derive" "user SQL"	
	    COMPONENT cytoMap
		PROPERTIES: 
		"FE_PrintName" "Map",
		"FE_Queryable" "No",
	   	"opm_derive" "user SQL"	
  ATTRIBUTE otherLocations (chromosome_2, mapElement_2, map, coordinate, units_):
	    set-of [0,] ([1,1] Chromosome, [1,1] VARCHAR(50), [1,1] Map, [1,1] FLOAT, [1,1] UnitsDict)
            DESCRIPTION: "Localizations of this segment in maps other than Cytogenetic maps."
	   	PROPERTIES:
	   	"FE_PrintName" "Other Localization",
	   	"FE_Editable" "No",
	   	"opm_derive" "user SQL",
	   	"GDB_View" "create view GenomicSegment_otherLocations
	as select _oid = E.segment, 	/* MapElement.segment 		*/
	chromosome_2 = M.chromosome,	/* Chromosome.displayName 	*/
	mapElement_2 = DE.accessionID,	/* MapElement.accessionID	*/
	map = E.map,			/* MapElement.map		*/
	coordinate = E.coordinate,	/* MapElement.coordinate	*/
	units_ = M.units,		/* Map.units			*/
	owner = G.owner,		/* GennomicSegment.owner 	*/
	isReleased = G.isReleased	/* GenomicSegment.isReleased	*/
	from  MapElement E, GenomicSegment G,
		DBObject DE, Map M,  DBObject DM
	where E.segment = G._oid
		and E._oid = DE._oid
		and E.map = M._oid
		and M._oid = DM._oid		
		and DM.objectClass != 'CytogeneticMap'"
	    COMPONENT chromosome_2
		PROPERTIES: 
		"FE_PrintName" "Chromosome",
	   	"opm_derive" "user SQL"
	    COMPONENT mapElement_2
		PROPERTIES: 
		"FE_Queryable" "No",
		"FE_URL" "{{uptodb}}/MapElement?!key={{value}}",
		"FE_PrintName" "Map Element ID",
	   	"opm_derive" "user SQL"	
	    COMPONENT map
		PROPERTIES: 
		"FE_Queryable" "No",
		"FE_PrintName" "Map",
	   	"opm_derive" "user SQL"	
	    COMPONENT coordinate
		PROPERTIES: 
		"FE_PrintName" "Coordinate",
	   	"opm_derive" "user SQL"	
	    COMPONENT units_
		PROPERTIES: 
		"FE_PrintName" "Units",
	   	"opm_derive" "user SQL"	
  ATTRIBUTE orderData (marker_1, relationship, marker_2, observationType, position, orderID):
	    set-of [0,] ([1,1] VARCHAR(200), [1,1] OrderRelationshipPlusDict, [1,1] GenomicSegment, [1,1] ObservationTypePlusDict, [1,1] VARCHAR(255), [1,1] VARCHAR(50))
            DESCRIPTION: "Participation of this segment in pairwise order relationships with other segments."
	   	PROPERTIES:
	   	"FE_PrintName" "Order Data",
	   	"FE_Editable" "No",
	   	"opm_derive" "user SQL",
	   	"GDB_View" "create view GenomicSegment_orderData (_oid, marker_1, relationship,
		marker_2, observationType, orderID, owner, isReleased )
	as select  _oid = Os1.segments, 	/* Order.segments(1)	*/
	marker_1 = Ds1.displayName,		/* Order.segments(1).displayName */
        relationship = RI.inverseRelation, 	/* Order. relationship 	*/ 
	marker_2 = Os2.segments,		/* Order.segments(2) */
        observationType = OI.inverseObservation, /* Order. observation 	*/  
	position = O.position			/* Order.position 	*/
	orderID = Do.accessionID,		/* Order_.accessionID 	*/
	owner = G.owner,			/* GS.owner */
	isReleased = G.isReleased		/* GS.isReleased */
		from GenomicSegment G, Order_ O,
		Order__segments Os1, Order__segments Os2,
		DBObject Ds1, DBObject Do,
		RelationshipInverse RI, ObservationInverse OI
	where G._oid = Os1.segments
		and Os1._oid = O._oid
		and Os1.segments = Ds1._oid
		and Os2._oid = O._oid 
		and Os2.segments != Os1.segments
		and O._oid = Do._oid
		and O.relationship = RI.relation
		and Os2._order = RI._order
		and O.observationType = OI.observation
		and Os2._order = OI._order"
	    COMPONENT marker_1
		PROPERTIES: 
		"FE_PrintName" "Marker 1",
		"FE_Visible" "No",
	   	"opm_derive" "user SQL"	
	    COMPONENT relationship
		PROPERTIES: 
		"FE_PrintName" "Relationship",
	   	"opm_derive" "user SQL"		
	    COMPONENT marker_2
		PROPERTIES: 
		"FE_PrintName" "Marker",
	   	"opm_derive" "user SQL"		
	    COMPONENT observationType
		PROPERTIES: 
		"FE_PrintName" "Observation",
	   	"opm_derive" "user SQL"	
	    COMPONENT position
		PROPERTIES: 
		"FE_PrintName" "Position",
	   	"opm_derive" "user SQL"		
	    COMPONENT orderID
		PROPERTIES: 
		"FE_Queryable" "No",
		"FE_PrintName" "Order ID",
		"FE_URL" "{{uptodb}}/Order_?!key={{value}}",
	   	"opm_derive" "user SQL"		
  ATTRIBUTE distanceData (segment_1, endPoint_1, segment_2, endPoint_2, distance, units, distanceID):
	    set-of [0,] ([1,1] GenomicSegment, [1,1] EndpointDict, [1,1] VARCHAR(200), [1,1] EndpointDict, [1,1] FlOAT, [0,1] UnitsDict, [1,1] VARCHAR(50))
            DESCRIPTION: "Mapping distances known between this segment and other segments."
	   	PROPERTIES:
	   	"FE_PrintName" "Distance Data",
	   	"FE_Editable" "No",
	   	"opm_derive" "user SQL",
	   	"GDB_View" "create view GenomicSegment_distanceInfo
	as select  _oid = Ds1.segment, 	/* DIstance.segments(1)		*/
	segment_1 = Ds2.segment,	/* Distance.segments(2) 	*/ 
        endPoint_1 = Ds2.endPoint, 	/* Distance.endPoint(2) 	*/
	segment_2 = DS1.displayName,	/* Distance.segments(1).displayName */		
        endPoint_2 = Ds1.endPoint,  	/* Distance.endPoint(1) 	*/
	distance = D.distance,		/* Distance.distance 		*/
	units = D.units,		/* Distance.units 		*/
	distanceID = DD.accessionID,	/* Distance.accessionID 	*/
	owner = G.owner,		/* GS.owner 			*/
	isReleased = G.isReleased	/* GS.isReleased 		*/
		from GenomicSegment G, Distance D,
		Distance_segments Ds1, Distance_segments Ds2,
		DBObject DS1, DBObject DD
	where G._oid = Ds1.segment
		and Ds1._oid = D._oid
		and Ds1.segment = DS1._oid
		and Ds2._oid = D._oid 
		and Ds2.segment != Ds1.segment
		and D._oid = DD._oid"
	    COMPONENT segment_1
		PROPERTIES: 
		"FE_PrintName" "Segment 1",
	   	"opm_derive" "user SQL"	
	    COMPONENT endPoint_1
		PROPERTIES: 
		"FE_Queryable" "No",
		"FE_PrintName" "End Point 1",
	   	"opm_derive" "user SQL"		
	    COMPONENT segment_2
		PROPERTIES: 
		"FE_Queryable" "No",
		"FE_PrintName" "Segment 2",
	   	"opm_derive" "user SQL"	
	    COMPONENT endPoint_2
		PROPERTIES: 
		"FE_Queryable" "No",
		"FE_PrintName" "End Point 2",
	   	"opm_derive" "user SQL"		
	    COMPONENT distance
		PROPERTIES: 
		"FE_PrintName" "Distance",
	   	"opm_derive" "user SQL"		
	    COMPONENT units
		PROPERTIES: 
		"FE_PrintName" "Units",
	   	"opm_derive" "user SQL"		
	    COMPONENT distanceID
		PROPERTIES: 
		"FE_Queryable" "No",
		"FE_PrintName" "Distance ID",
		"FE_URL" "{{uptodb}}/Distance?!key={{value}}",
	   	"opm_derive" "user SQL"		
  ATTRIBUTE nucleicAcidSequences
            DERIVATION: ! dBObject [ NucleicAcidSequenceLink ]
	    ORDER BY nucleicAcidSequences [ NucleicAcidSequenceLink ] displayName ASC
            DESCRIPTION: "Pointers to external database entries describing the nucleic acid sequence of this region."
  ATTRIBUTE polymorphisms (polymorphism, position_, maxHet):
		set-of [0,] ([1,1] Polymorphism, [1,1] VARCHAR(255), [0,1] FLOAT)
  		ORDER BY maxHet DESC
	    DESCRIPTION: "Used for searching when synonym matching is required. Includes both primary names and aliases."
		PROPERTIES:
		"FE_Editable" "No",
		"opm_derive" "user SQL",
		"GDB_View" "create view GenomicSegment_polymorphisms as select _oid = Pl.segment,  polymorphism = Pl._oid, position_ = Pl.position, maxHet = P.maxHet, owner = G.owner, isReleased = G.isReleased from Polymorphism_locations Pl, Polymorphism P, GenomicSegment G where G._oid = Pl.segment and Pl._oid = P._oid",
		"GDB_Note" "This is a computed tuple achieved by a view. No sybase table need to be created",
            COMPONENT polymorphism
		PROPERTIES:
		"opm_derive" "user SQL"
            COMPONENT position_
		PROPERTIES:
		"FE_PrintName" "Position"
		"opm_derive" "user SQL"
	    COMPONENT maxHet
		PROPERTIES:
		"opm_derive" "user SQL"
  ATTRIBUTE mayCoords ( minMay, maxMay, chromMay ): 
		set-of [0,] ([0,1] FLOAT, [0,1] FLOAT, [0,1] NUMERIC)
	PROPERTIES:
	"FE_Visible" "No"
  ATTRIBUTE maySearchCoords ( minMaySearch, maxMaySearch, chromMaySearch ): 
		set-of [0,] ([0,1] FLOAT, [0,1] FLOAT, [0,1] NUMERIC)
	PROPERTIES:
	"FE_Visible" "No"

OBJECT CLASS GenomicSegmentType
  DESCRIPTION: "User-extensible taxonomy for new types of genomic segments."
  PROPERTIES:
      "OB_Key" "_oid",
      "OB_SearchKey" "searchName",
      "Admin/FE_Editable" "Yes",
      "FE_DisplayAttr" "displayName",
      "Admin/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      "FE_ObjectMenu" "<a href=/gdb-bin/genera/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      "Admin/FE_ObjectMenu" "{{Edit}} | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      "OB_NonOPMCV" "Yes",
      "GDB_Rule" "insertable by all legitimate users; only updatable/deletable by adminGroup; notify admin group when non-adminGroup user inserts"
  ID: displayName
  REP: displayName
  ATTRIBUTE modDate: [1,1] DATETIME
            DESCRIPTION: "Date last modified"
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
                "GDB_Rule" "Set by insert/update procedures"
  ATTRIBUTE version: [1,1] INTEGER
            DESCRIPTION: "Current vesion number"
            PROPERTIES:
                "FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
                "GDB_Rule" "Set to 1 on inserts [implemented in GDBI_GenomicSegmentType]. increase by 1 on updates [implemented in GDBU_GenomicSegmentType]"
  ATTRIBUTE displayName: [1,1] VARCHAR(200)
            PROPERTIES:
		"FE_Order" "1",
		"FE_Search" "searchName",
		"FE_PrintName" "Name"
  ATTRIBUTE searchName: [1,1] VARCHAR(200)
            DESCRIPTION: "Corresponds to lower(displayName). Denormalized to aid searching"
            PROPERTIES:
                "FE_Editable" "No",
                "FE_Visible" "No",
                "FE_MatchCase" "Lower",
                "GDB_Rule" "Always set to lower(displayName) on insert/update"

OBJECT CLASS HomologyLink
             isa* ExternalLink
  DESCRIPTION: "Link from a GenomicSegment to a homologous region in an external DB."
  PROPERTIES:
      "GDB_Rule" "if displayName is NULL, default to ExternalLink.externalDB : ExternalLink.accessionID",
  ATTRIBUTE segment: [1,1] GenomicSegment
            DELETE CASCADES
            DESCRIPTION: "The segment of the genome that is being linked to."

OBJECT CLASS IntegratedMap
             isa* Map
  DESCRIPTION: "A map constructed from more than one set of experimental data"

OBJECT CLASS IsChimeric
             isa* Observation
  DESCRIPTION: "Chimerism determination for a genomic segment."
  PROPERTIES:
      "FE_Queryable" "No",
      "FE_Visible:alias" "No",
      "FE_Visible:source_" "No",
      "FE_DefaultSummary" "accessionID*, displayName",
      "Admin/FE_Queryable" "Yes",
      "FE_Editable:displayName" "No",
      "Admin/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      "Admin/FE_ObjectMenu" "{{parentmenu}}",
      "PRW/FE_ObjectMenu" "| <a href={{uptodir}}/restrict/{{script}}/{{db}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a>",
      "SRW/FE_ObjectMenu" "{{Edit}} | <a href={{uptodb}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a>",
      "GDB_Rule.displayName" "set displayName = value + ' - (' + owner + ')'"
  ATTRIBUTE segment: [1,1] GenomicSegment
            DELETE CASCADES
            PROPERTIES:
  ATTRIBUTE value: [1,1] YesNo_YesDict
            PROPERTIES:
  ATTRIBUTE basis: [0,1] ChimerismBasisDict
            DESCRIPTION: "Method by which it was observed that a genomic segment is chimeric."

OBJECT CLASS Library
             isa* GenomicSegment
  DESCRIPTION: "A collection of cloned GenomicSegments maintained within a culture of the host organism."
  PROPERTIES:
      "FE_Visible:distanceData" "No",
      "FE_Visible:polymorphisms" "No",
      "FE_DefaultSummary" "accessionID*, displayName, alias, LFM, RFM, DNAType,vectorType",
      "PRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodir}}/restrict/{{script}}/{{db}}/ReagentSource?!action=insertform&reagent={{key}}>Add Reagent Source</a>",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodb}}/ReagentSource?!action=insertform&reagent={{key}}>Add Reagent Source</a> | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a>",
      "GDB_Rule.displayName" "User defined",
  ATTRIBUTE availableFrom
            DERIVATION: ! reagent [ ReagentSource ]
	    ORDER BY availableFrom [ ReagentSource ] displayName ASC
            DESCRIPTION: "List of sources from which this library can be obtained."
  ATTRIBUTE DNAType: [1,1] DNATypeDict
            DESCRIPTION: "DNA type (genomic, cDNA etc.)"
            PROPERTIES:
		"GDB_Rule" "on insert, if not supplied, set to 'Unknown'"
  ATTRIBUTE hostOrganism: [0,1] Organism
            DELETE NULLIFIES
            DESCRIPTION: "Organism in which this library is maintained."
  ATTRIBUTE vectorType: [1,1] VectorTypeDict
            DESCRIPTION: "Type of vector used to clone the inserted DNA fragments (YAC, BAC, PAC etc.)."
            PROPERTIES:
		"FE_AllowNULL" "Yes",
		"GDB_Rule" "on insert, if not supplied, set to 'Unknown'"
  ATTRIBUTE vectorName: [0,1] VARCHAR(255)
            DESCRIPTION: "Name of vector used to clone the inserted DNA fragments."
  ATTRIBUTE genomeExcisionEnzymes: set-of [0,2] RestrictionEnzyme
	    ORDER BY genomeExcisionEnzymes.displayName ASC
            DELETE CASCADES
	    DESCRIPTION: "Restriction enzyme (or pair of enzymes) used to excise the cloned inserts from the source DNA.<BR><B>Query and Edit notes:</B> This is a large dictionary. Use the <A HREF=/gdb-bin/genera/genera/hgd/RestrictionEnzyme?!action=queryform>Restriction Enzyme Query form</A> to search for the names of specific restriction enzymes."
  ATTRIBUTE vectorInsertionEnzymes: set-of [0,2] RestrictionEnzyme
	    ORDER BY vectorInsertionEnzymes.displayName ASC
            DELETE CASCADES
	    DESCRIPTION: "Restriction enzyme (or pair of enzymes) used to cut the cloning vector, in preparation for integration of the cloned insert.<BR><B>Query and Edit notes:</B> This is a large dictionary. Use the <A HREF=/gdb-bin/genera/genera/hgd/RestrictionEnzyme?!action=queryform>Restriction Enzyme Query form</A> to search for the names of specific restriction enzymes."
            PROPERTIES:
                "GDB_Rule" "none"
  ATTRIBUTE vectorExcisionEnzymes: set-of [0,2] RestrictionEnzyme
	    ORDER BY vectorExcisionEnzymes.displayName ASC
            DELETE CASCADES
	    DESCRIPTION: "Restriction enzyme (or pair of enzymes) used to excise the cloned inserts from the cloning vector.<BR><B>Query and Edit notes:</B> This is a large dictionary. Use the <A HREF=/gdb-bin/genera/genera/hgd/RestrictionEnzyme?!action=queryform>Restriction Enzyme Query form</A> to search for the names of specific restriction enzymes."
  ATTRIBUTE source: [0,1] GenomicSegment
            DELETE NULLIFIES
            DESCRIPTION: "Genomic material from which the library was created. The source must be either a Cell Line or a Chromosome Reagent."
            PROPERTIES:
		"OB_Union" "CellLine ChromosomeReagent"

OBJECT CLASS LinkageMap
             isa* Map
  DESCRIPTION: "A map based upon frequency of recombination between genomic segments, resulting in the ordering of markers along a chromosome backbone, usually measured in centiMorgans (cM)."
  ATTRIBUTE gender: [1,1] MapSexDict
            DESCRIPTION: "Gender (male, female, sex-averaged)"
	    PROPERTIES:
		"GDB_Rule" "on insert, if not supplied, set to 'Unknown'"

OBJECT CLASS Map
             isa* MappingObject
  DESCRIPTION: "A map represents order and distance among markers along a chromosome."
  PROPERTIES:
      "FE_Editable" "No",
      "FE_Order" "1",
      "FE_DefaultSummary" "accessionID*, displayName, owner",
      "FE_QueryMenu" "{{parentmenu}} | <a href=/gdb-bin/mqp/mqp.pl>Query By Position </a>",
      "FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/mqp/slice.pl?ID={{Key}}>View Map </a>",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/mqp/restrict/slice.pl?ID={{Key}}>View Map </a>",
      "WAIS_Class" "Yes",
      "GDB_Note" "We need a derived attribute 'numberOfElements' -> count of all elements in this map. OPM aggregate derivation do not allow this on derived inverse path ' count of ! map [ MapElement ]'. Post 6.0, perhaps through a view we can achieve this. We also need a derived attribute 'elements' -> all elements in this map. OPM inverse derivation '! map [ MapElement ]', query performance is so slow that we had to loose this attribute. Post 6.0, perhaps through a view we can achieve this" 
  ATTRIBUTE publiclyEditable: [1,1] YesNo_NoDict
            DESCRIPTION: "Can third parties assign new elements to this map?"
            PROPERTIES:
                "FE_Visible" "No",
                "GDB_Note" "Initially only GDB staff will be able to create publicly editable maps, such as the summary cytogenetic map",
                "GDB_Rule" "Once publiclyEditable is set to 'Yes', it can only be reset to 'No' if all MapElements pointing to the map have the same owner as the map itself" 
  ATTRIBUTE copiedFrom: [0,1] Map
            DELETE NULLIFIES
            DESCRIPTION: "If this object was created by copying another Map object in the DB, the other object will automatically be listed here."
            PROPERTIES:
                "FE_Editable" "No",
                "GDB_Note" "Set by copy operation. GDBCopy stored proc."
  ATTRIBUTE mapOf: [1,1] GenomicSegment
            DELETE CASCADES
            DESCRIPTION: "Region of the genome described by the map."
  ATTRIBUTE chromosome: [1,1] Chromosome
            DELETE CASCADES
            DESCRIPTION: "Which chromosome has been mapped here? While this information can be indirectly obtained from the mapOf value, its explicit presences here simplifies map queries."
  ATTRIBUTE includesMap (map, orientation):
            set-of [0,] ([0,1] Map, [0,1] RelativeOrientationDict)
            DELETE NULLIFIES
            DESCRIPTION: "Other maps that were used to help construct this map. Orientation indicates how those maps are oriented in this one."
  ATTRIBUTE units: [1,1] UnitsDict
            DESCRIPTION: "Units of measure for the mapping coordinates e.g., kb, cM, etc."
  ATTRIBUTE minCoord: [1,1] FLOAT
            DESCRIPTION: "Minimum coordinate of elements in the map."
            PROPERTIES:
                "FE_Editable" "No",
                "GDB_Rule" "Minimum value of MapElement.coordinate for all elements associated with the map.",
                "GDB_Note" "Map slices can be detected if the minimum coordinate in the returned elements is greater than minCoord."
  ATTRIBUTE maxCoord: [1,1] FLOAT
            DESCRIPTION: "Maximum coordinate of elements in the map"
            PROPERTIES:
                "FE_Editable" "No",
                "GDB_Rule" "Maximum value of MapElement.coordinate for all elements associated with the map.",
                "GDB_Note" "Map slices can be detected if the maximum coordinate in the returned elements is less than maxCoord."
  ATTRIBUTE orderLikelihood: [0,1] FLOAT
            DESCRIPTION: "Order likelihood for the map as a whole."
            PROPERTIES:
                "GDB_Rule" "if supplied: if likelihoodType is 'LOD' then orderLikelihood should be positive, if Type is 'Like' then orderLikelihood should be >= 0 and <= 1"
  ATTRIBUTE likelihoodType: [0,1] OrderLikelihoodTypeDict
            PROPERTIES:
                "GDB_Rule" "Cannot be null if orderLikelihood is not NULL"
  ATTRIBUTE style: [0,1] Style
            DESCRIPTION: "Default drawing style for all elements of the map. Can be overridden at the level of individual elements."
  ATTRIBUTE a: [0,1] FLOAT
         DESCRIPTION: "Coefficient of searchCoord = a*mapCoord + b, used for default conversion of map coords to search coords."
	PROPERTIES:
	"GDB_Rule" "Need to specify?",
	"FE_Visible" "No"
  ATTRIBUTE b: [0,1] FLOAT
        DESCRIPTION: "Coefficient of searchCoord = a*mapCoord + b, used for default conversion of map coords to search coords."
	PROPERTIES:
	"GDB_Rule" "Need to specify?",
	"FE_Visible" "No"

OBJECT CLASS MapElement
             isa* MappingObject
  DESCRIPTION: "Location information for genomic segments in specific maps."
  PROPERTIES:
      "FE_Order" "2",
      "FE_Visible:alias" "No",
      "FE_Visible:source_" "No",
      "FE_DefaultSummary" "accessionID*, displayName, tier, coordinate, LFM, RFM",
      "FE_DefaultSort" "tier, coordinate, LFM_coord",
      "FE_Editable:displayName" "No",
      "FE_ObjectMenu" "<a href=/gdb-bin/genera/history/historyquery?obkey={{key}}>View History</a>",
      "SRW/FE_QueryMenu" "{{parentmenu}} | <a href={{uptodir}}/SetOwnerGroup>Change Owner Group</a>",
      "SRW/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      "SRW/FE_DeleteOption" "<a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=DeleteRequest>Delete</a>",
      "SRW/FE_ObjectMenu" "{{Edit}} | {{Delete}} | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=ChangeOwner>Request Owner Change</a> | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodb}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodb}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}>View History</a>",
      "PRW/FE_ObjectMenu" "| <a href={{uptodir}}/restrict/{{script}}/{{db}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodir}}/restrict/{{script}}/{{db}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodir}}/restrict/{{script}}/{{db}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/history/historyquery?obkey={{key}}>View History</a>",
      "Admin/FE_QueryMenu" "{{parentmenu}} | <a href={{uptodir}}/SetOwnerGroup>Change Owner Group</a>",
      "Admin/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      "Admin/FE_DeleteOption" "<a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=DeleteRequest>Delete</a>",
      "Admin/FE_ObjectMenu" "{{Edit}} | {{Delete}} | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=ChangeOwner>Request Owner Change</a> | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodb}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodb}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}>View History</a>",
      "GDB_Rule" "[sp] Change Business Rule: Eliminate everything after segspec from computed displayName. (Not important to correct existing names immediately.)",
      "GDB_Rule" "Let segspec = `{segment.displayName} [ # {instance} ] [ ? ] [ {PointSpec}]'.<br> Include '?' if ambiguous is yes; include instance if non null; include pointspec if not whole. 
<br>Let ownerspec = Map.Owner.displayName<br> If it contains a comma, lose everything after comma, inclusive, if convenient.<br>Let mapspec = ` in Chr {Map.Chromosome} {Map.objectClass} ({ownerspec})'.
<br>if LFM and RFM are not NULL,<br> name is '{segspec} between {LFM.segspec} and {RFM.segspec} {mapspec}'<br>else if LFM is not NULL<br> name is '{segspec} after {LFM.segspec} {mapspec}'
<br>else if  RFM is not NULL<br> name is '{segspec} before {RFM.segspec} {mapspec}'<br>else<br> name is '{segspec} at {Coord} {Map.units} {mapspec}'<br>If a map element is inserted/updated/deleted on an *existing* map, increment Map.version.
<br>If this is an element of an integrated map and coordinate, LFM, and RFM are NULL, then LFM_coord and RFM_coord can not be NULL.<br>the release date of the MapElement cannot be any earlier than the max release date of the segment, LFM, RFM and observations"
  ATTRIBUTE originalName: [0,1] VARCHAR(200)
		DESCRIPTION: "Segment name used by author of map"
		PROPERTIES:
             	"GDB_Rule" "default insert: MapElement's Segment's displayName. If segment = NULL, originalName must be NOT NULL. If segment = NOT NULL, originalName must be an alias of th e segment, else raiserro."
  ATTRIBUTE dSegmentNumber: set-of [0,] VARCHAR(20)
	    DESCRIPTION: "DNA Segment name generated for the segment. /* MapElement's segment's ObjectName's displayName ** that is owned by HUGO_DNA"
            PROPERTIES:
                "FE_Editable" "No",
             	"opm_derive" "user SQL",
             	"GDB_View" "create view MapElement_dSegmentNumber 
		as select _oid = m._oid,
			dSegmentNumber = o.displayName,
			owner = m.owner,
			isReleased = m.isReleased
		from MapElement m, ObjectName o, Contact c
		where m.segment = o.dBObject
		and o.owner = c._oid
		and c.searchName = 'hugo_dna'"
  ATTRIBUTE segment: [0,1] GenomicSegment
            DELETE NULLIFIES
            DESCRIPTION: "The genomic region being placed on the map."
            PROPERTIES:
		"GDB_Rule" "if the segment is of type 'Breakpoint', if first map - reset displayName to B#PXXXX where # is the Map.chromosome. if the segment is of type 'Breakpoint' and is currently in other Maps, then the Map.chromsome's must be the same. If segment = NULL, originalName must be NOT NULL. If segment = NOT NULL, originalName must be an alias of the segment, else raiserror."
  ATTRIBUTE map: [1,1] Map
            DELETE CASCADES
            DESCRIPTION: "The map that this element has been positioned on."
            PROPERTIES:
                "GDB_Rule" "Reject this element if the map pointed to here is not owned by the same person inserting the map element, or is not marked as publicly editable."
  ATTRIBUTE point: [1,1] EndpointDict
            DESCRIPTION: "Specifies which endpoint of the GenomicSegment is being positioned."
  ATTRIBUTE coordinate: [0,1] FLOAT
            DESCRIPTION: "Coordinate of the element on the map. Can be NULL only if LFM or RFM are supplied."
            PROPERTIES:
                "GDB_Rule" "If NULL, LFM or RFM must be not NULL. if coordinate is modified, all other MapElements that reference this element as LFM or RFM must have their LFM_coord/RFM_coord updated"
  ATTRIBUTE arbitraryCoord: [1,1] YesNo_NoDict
            DESCRIPTION: "Relevant to framework markers only. Set to 'Yes' to indicate that the coordinate assigned to this marker is arbitrary; i.e., the distance between this marker and the previous framework marker is not known"
  ATTRIBUTE minSearchCoord: [0,1] FLOAT
            DESCRIPTION: "Min search coordinate."
		PROPERTIES:
		"FE_Visible" "No",
		"GDB_Note" "(Any need for a midpoint coord in search coordinates?). Populating these fields is a bit tricky and probably will need a cron job to do well. However, if there are linear coefficients associated with a map, the search coords can be initialized by applying them to the LFM_ and RFM_coords"
  ATTRIBUTE maxSearchCoord: [0,1] FLOAT
            DESCRIPTION: "Max search coordinate."
		PROPERTIES:
		"FE_Visible" "No",
		"GDB_Note" "(Any need for a midpoint coord in search coordinates?). Populating these fields is a bit tricky and probably will need a cron job to do well. However, if there are linear coefficients associated with a map, the search coords can be initialized by applying them to the LFM_ and RFM_coords"
  ATTRIBUTE zoomPriority: [0,1] FLOAT
            DESCRIPTION: "Largest searchCoord interval width in which this marker should be included. To be populated by cron job."
		PROPERTIES:
		"FE_Visible" "No",
		"GDB_Note" "To be populated by cron job."
  ATTRIBUTE LFM: [0,1] MapElement
            DELETE NULLIFIES
            DESCRIPTION: "Framework element in this map that defines the 'left' bound of this element's position."
            PROPERTIES:
                "GDB_Rule" "If NULL, Coordinate or RFM must be NOT NULL. MapElements whose coordinate is null cannot be an LFM"
  ATTRIBUTE RFM: [0,1] MapElement
            DELETE NULLIFIES
            DESCRIPTION: "Framework element in this map that defines the 'right' bound of this element's position."
            PROPERTIES:
                "GDB_Rule" "If NULL, Coordinate or LFM must be NOT NULL. MapElements whose coordinate is null cannot be an RFM"
  ATTRIBUTE observations (Observation, Orientation):
            set-of [0,] ([0,1] Observation, [0,1] RelativeOrientationDict)
            DELETE NULLIFIES
            DESCRIPTION: "Experimental observations associated with placing this segment in this position on this map. Orientation indicates relationship between any directional aspect of the observation (use of `left` or `before') agrees with map direction."
	    PROPERTIES:
		"GDB_Note" "attribute naming convention violtated, fix in 6.1"
  ATTRIBUTE uncertainty: [0,1] FLOAT
            DESCRIPTION: "Quantitative measure of positional uncertainty, defined as the standard error of the marker position when all other marker positions are held constant."
  ATTRIBUTE ambiguous: [0,1] YesNo_NoDict
            DESCRIPTION: "Specifies whether the marker has been placed in more than one position on the map. This is automatically set by the database. Only point markers can be placed in more than position."
            PROPERTIES:
                "FE_Editable" "No",
                "GDB_Rule" "Ambiguous can be yes only if point is 'entire', else we have problems connecting up the endpoints.  Set this automatically.  Needs to be adjusted across all map elements that refer to the same segment in the same map, even if they have different owners.  Autonotify all owners when this happens."
  ATTRIBUTE tier: [1,1] INTEGER
            DESCRIPTION: "Which display group should this element be drawn in?"
            PROPERTIES:
		"FE_AllowNULL" "Yes",
                "GDB_Rule" "Defaults to 0 if coord NOT NULL and LFM and RFM are NULL, 1 if LFM or RFM NOT NULL.<br>If 0, coordinate must be NOT NULL. <br>If > 0 and element does not belong to an integrated map, then LFM or  RFM must be NOT NULL"
  ATTRIBUTE draw: [1,1] YesNo_YesDict
            DESCRIPTION: "Whether to draw this marker in the Map. If 'No', it's hidden."
  ATTRIBUTE instance: [0,1] INTEGER
            DESCRIPTION: "Integer subscript used to distinguish different occurences of the same genomic segment in a single map. If a segment occurs only once, leave NULL."
  ATTRIBUTE style: [0,1] Style
            DESCRIPTION: "Specifies a user-defined rendering style for the map element. The style controls its preferred appearance on map diagrams."
  ATTRIBUTE LFM_coord: [0,1] FLOAT
            DESCRIPTION: "Coordinate of this element's left flanking marker."
            PROPERTIES:
                "FE_Visible" "No",
                "GDB_Rule" "Set automatically from MapElement.coordinate for this element's LFM or set by EDS for integrated Maps.<br>If coord is not NULL, and LFM and RFM are both null (i.e. this is a framework/backbone element), then LFM_coord = RFM_coord = coord."
  ATTRIBUTE RFM_coord: [0,1] FLOAT
            DESCRIPTION: "Coordinate of this element's right flanking marker."
            PROPERTIES:
                "FE_Visible" "No",
                "GDB_Rule" "Set automatically from MapElement.coordinate for this element's RFM or set by EDS for integrated Maps.<br> If coord is not NULL, and LFM and RFM are both null (i.e. this is a framework/backbone element), then LFM_coord = RFM_coord = coord."
  ATTRIBUTE sortCoord: [1,1] FLOAT
            DESCRIPTION: "Coordinate used for sorting rows of map elements."
            PROPERTIES:
                "FE_Visible" "No",
                "GDB_Rule" "Set automatically from Coordinate if not null, else midpoint of LFM_coord and RFM_coord ."

OBJECT CLASS MappingObject
             isa* DBObject
  DESCRIPTION: "Groups all objects involved in representing genomic maps."
  PROPERTIES:
      "FE_Editable" "No",
      "FE_Order" "2"

OBJECT CLASS MappingPanel
             isa* GenomicSegment
  DESCRIPTION: "A collection of cell lines or clones used to position genomic segments on a chromosome, or with respect to each other"
	PROPERTIES:
        "FE_DefaultSummary" "accessionID*, displayName, alias, LFM, RFM",
      	"FE_Visible:distanceData" "No",
      	"FE_Visible:polymorphisms" "No",
        "PRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodir}}/restrict/{{script}}/{{db}}/ReagentSource?!action=insertform&reagent={{key}}>Add Reagent Source</a>",
        "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodb}}/ReagentSource?!action=insertform&reagent={{key}}>Add Reagent Source</a> | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a>",
	"GDB_Rule.displayName" "User defined"
  ATTRIBUTE availableFrom
            DERIVATION: ! reagent [ ReagentSource ]
	    ORDER BY availableFrom [ ReagentSource ] displayName ASC
            DESCRIPTION: "List of sources from which this panel can be obtained."
  ATTRIBUTE members: set-of [1,] GenomicSegment
	    ORDER BY members.displayName ASC
            DELETE CASCADES
            DESCRIPTION: "Cell lines or clones included in the panel."
	    PROPERTIES:
		"OB_Union" "CellLine Clone",
		"GDB_Rule" "must be unique within the MappingPanel. the release date of the MappingPanel cannot be any earlier than the releaseDate of it member components"
  ATTRIBUTE panelSize
            DERIVATION: count of members
            DESCRIPTION: "Number of elements in panel."
  ATTRIBUTE source: [1,1] VARCHAR(255)
            DESCRIPTION: "Describes whether the panel is from one or multiple chromosomes, or genome-wide."
  ATTRIBUTE sourcePloidy: [1,1] PloidyDict
  ATTRIBUTE radDose: [0,1] INTEGER
            DESCRIPTION: "For radiation hybrids, radiation dose in rads."
	    PROPERTIES:
		"GDB_Rule" "Must be null if members.cellLineType is not RH. if supplied, must be >= 0"
  ATTRIBUTE rhMaps
	    DERIVATION: ! mappingPanel [ RadiationHybridMap ]
	    DESCRIPTION: "Radiation hybrid maps based on this panel."
	    PROPERTIES:
	    	"FE_PrintName" "RH Maps"

OBJECT CLASS Mutation
             isa* Variation
  DESCRIPTION: "A variation which occurs spontaneously or rarely, usually resulting in a phenotypic change."
  PROPERTIES:
      "FE_Order" "1",
      "FE_DefaultSummary" "accessionID*, displayName",
      "GDB_Rule.displayName" "User defined",

OBJECT CLASS ObjectHistory
  DESCRIPTION: "Object history"
  PROPERTIES:
      "OB_DBRoot" "Yes",
      "FE_Visible" "No",
      "FE_Editable" "No",
      "Admin/FE_Visible" "Yes",
      "FE_ObjectMenu" "",
      "FE_DisplayAttr" "modDate"
  REP: version, modDate
  ATTRIBUTE object: [1,1] NUMERIC(10,0)
	    DESCRIPTION: "Object instance ID for which history is being kept"
  ATTRIBUTE objectClass: [1,1] VARCHAR(30)
	    DESCRIPTION: "Object Class name of the instance"
  ATTRIBUTE changes (attributeName, elementID, changedFrom, changedTo): 
		set-of [0,] ([1,1] VARCHAR(255), [0,1] INTEGER, [0,1] VARCHAR(255), [0,1] VARCHAR(255))
	    DESCRIPTION: "Change log of all the attributes of this object instance"
	    COMPONENT attributeName
		PROPERTIES:
		"DESCRIPTION" "Attribute Name, if tuple attribute, only component attibute name is needed"
	    COMPONENT elementID
		PROPERTIES:
		"DESCRIPTION" "'aid' of mva/lva attribute; null for others"
  	    COMPONENT changedFrom
		PROPERTIES:
		"DESCRIPTION" "Old value of the attribute"
  	    COMPONENT changedTo
		PROPERTIES:
		"DESCRIPTION" "New value of the attribute"	
  ATTRIBUTE lastModifiedBy: [1,1] Contact
            DESCRIPTION: "Person who last modified the object."
            PROPERTIES:
                "FE_Editable" "No",
                "GDB_Rule" "set to @_currentUser on Insert/Update/Delete"
  ATTRIBUTE modDate: [1,1] DATETIME
            DESCRIPTION: "Date when the object was last modified."
            PROPERTIES:
                "FE_Editable" "No",
                "GDB_Rule" "on insert, modDate set to addDate; on update,delete set to getdate()"
  ATTRIBUTE version: [1,1] INTEGER
        DESCRIPTION:"Version of the object instance."

OBJECT CLASS ObjectName
  DESCRIPTION: "Combines primary names and third-party editable aliases in a common class to allow primary names and aliases to be searched simultaneously."
  PROPERTIES:
      "FE_Order" "-1",
      "FE_ClassAttr" "objectClass",
      "FE_DisplayAttr" "displayName",
      "FE_ObjectMenu" "<a href=/gdb-bin/genera/history/historyquery?obkey={{key}}>View History</a>",
      "FE_DefaultSummary" "displayName*, aliasType,dBObject",
      "PRW/FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/genera/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      "Admin/FE_ObjectMenu" "{{parentmenu}} | {{Edit}} | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      "OB_Key" "_oid",
      "OB_Restrict" "Yes",
      "OB_DBRoot" "Yes",
      "OB_SearchKey" "searchName"
 REP: displayName
 ATTRIBUTE modDate: [1,1] DATETIME
            DESCRIPTION: "Date when the annotation was last modified."
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
                "GDB_Rule" "Set by insert/update procs"
  ATTRIBUTE displayName: [1,1] VARCHAR(200)
	    DESCRIPTION: "Value displayed when referring to this annotation in query results or in detail displays of objects linked to it. The name is automatically derived from the owner, mod date, and text."
            PROPERTIES:
		"FE_Order" "1",
                "FE_Queryable" "Yes",
		"FE_Search" "searchName",
		"FE_PrintName" "Name"
  ATTRIBUTE searchName: [1,1] VARCHAR(200)
            DESCRIPTION: "Corresponds to lower(displayName). Denormalized to aid searching"
            PROPERTIES:
                "FE_Editable" "No",
                "FE_Order" "1",
                "FE_Visible" "No",
                "FE_MatchCase" "Lower",
                "GDB_Rule" "Always set to lower(displayName) on insert/update"
  ATTRIBUTE owner: [1,1] Contact
            DELETE CASCADES
            DESCRIPTION: "The single Person or group of Persons (Edit Group) responsible for the content of the annotation. This person or group has editing access to the annotation and can view it before release to the public. Only GDB staff can change the ownership of an annotation."
            PROPERTIES:
                "FE_Editable" "No",
		"FE_Order" "2"
  ATTRIBUTE isReleased: [1,1] YesNo_YesDict
            DESCRIPTION: "Released status."
            PROPERTIES:
                "FE_Editable" "No",
		"FE_Order" "-3",
		"GDB_Rule" "The releasedness of the ExternalLink is dictated by the DBObjects linked to this"
  ATTRIBUTE releaseDate: [1,1] DATETIME
            DESCRIPTION: "Date the annotation became or will become publicly available. Annotations can be unpublished for up to 6 months after submission. Once a release date has been assigned, it can be changed to an earlier date within that six-month period, but not earlier than the current date."
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
		"FE_Order" "-4",
		"FE_Editable" "No",
		"GDB_Rule" "<ul><li>The releasedness of the ExternalLink is dictated by the DBObjects linked to this.<li>Cannot be < max(releaseDate) for all Annotation_dBObjects or AdminAnnotation_dBObjects [implemented in GDBsC_Annotation & GDBsC_AdminAnnotation]<li>User-supplied initial value cannot be more than six months from current date [implemented in GDBI_AnnotationObject]<li>If NULL set to current date [implemented in GDBI_AnnotationObject]<li>New value cannot be > old value [implemented in GDBU_AnnotationObject].</ul>" 
  ATTRIBUTE version: [1,1] INTEGER
            DESCRIPTION: "Current version number of the annotation."
            PROPERTIES:
                "FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
		"FE_Order" "-1",
                "GDB_Rule" "Set by insert/update procs"		
  ATTRIBUTE dBObject: [1,1] DBObject
            DELETE CASCADES
            DESCRIPTION: "The object that the alias applies to."
		PROPERTIES:
		"FE_Editable" "No",
		"FE_Order" "2"
  ATTRIBUTE aliasType: [1,1] AliasTypeDict
            DESCRIPTION: "Flag indicating if priamryName or alias"
		PROPERTIES:
		"FE_Editable" "No"
  ATTRIBUTE submissions: set-of [0,] Submission
            DESCRIPTION: "Associated EDS submission information for this object"
            PROPERTIES:
                "FE_Editable" "No",
                "GDB_Note" "Set by EDS submission processor"
  ATTRIBUTE objectClass: [1,1] VARCHAR(30)
            DESCRIPTION: "Invisible attribute holding the name of the leaf class in the ISA-hierarchy pertaining to this object."
            PROPERTIES:
                "FE_Editable" "No",
                "FE_Visible" "No",
                "GDB_Rule" "GDBI<Class> sets to classname, assuming downward order of GDBI<Class> calls. GDBD<Class> sets to parent class name, except for DBObject, which does nothing.",
  ATTRIBUTE history: set-of [0,] ObjectHistory
        ORDER BY history.modDate DESC
            DESCRIPTION: "History records created by updates"
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Order" "-1",
                "FE_Editable" "No",
                "FE_Queryable" "No",
                "opm_derive" "user SQL"

OBJECT CLASS Observation
             isa* ExperimentObject
  DESCRIPTION: "Experimentally determined information about genomic segments."
  PROPERTIES:
      "FE_Order" "2",
      "FE_Editable" "No"

OBJECT CLASS ObservationPlus
	DESCRIPTION: "Represents directional specific canonical observations with respect to position of the markers."
	PROPERTIES:
	"FE_Visible" "No",
	"FE_Editable" "No"
        "OB_Key" "_oid",
      	"FE_QueryMenu" "{{submit}} {{reset}} <a href={{uptodb}}?!action=help&type=dict>Help</a>",
      	"Admin/FE_Editable" "Yes",
      	"Admin/FE_Visible" "Yes",
      	"Admin/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      	"FE_ObjectMenu" "<a href=/gdb-bin/genera/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      	"Admin/FE_ObjectMenu" "{{Edit}} | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      	"Admin/FE_ObjectMenu" "{{parentmenu}}",
      	"OB_NonOPMCV" "Yes",
      	"GDB_Rule" "editable only by the admin group."
  ATTRIBUTE modDate: [1,1] DATETIME
            DESCRIPTION: "Date last modified"
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
                "GDB_Rule" "Set by insert/update procedures"
  ATTRIBUTE version: [1,1] INTEGER
            DESCRIPTION: "Current vesion number"
            PROPERTIES:
                "FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
                "GDB_Rule" "Set by insert/update/delete procedures"
   ATTRIBUTE observations (observation, observationInverse): list-of [2,2] ([1,1] ObservationTypeDict, [1,1] ObservationTypePlusDict )
	DESCRIPTION: "Represents directional specific canonical observations with respect to position of the markers."

OBJECT CLASS Organism
             isa* BiologicalObject
  DESCRIPTION: "Organisms whose genomes are described in the database, as well as those used as hosts (such as yeast strain AB1380), vectors (such as pBR322), reagent sources (such as clone inserts -- usually human), etc."
  PROPERTIES:
      "FE_Order" "-1",
      "FE_DefaultSummary" "accessionID*, displayName",
      "GDB_Note" "seeded by GDB. Data group should be automatically notified when new organisms are added to the database.",
      "GDB_Rule.displayName" "User defined.",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodb}}/TaxonomicLink?!action=insertform&organism={{key}}>Add Taxonomic Link</a>",
      "PRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodir}}/restrict/{{script}}/{{db}}/TaxonomicLink?!action=insertform&organism={{key}}>Add Taxonomic Link</a>",
      "Admin/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodb}}/TaxonomicLink?!action=insertform&organism={{key}}>Add Taxonomic Link</a>"
  ATTRIBUTE taxonomyLinks
            DERIVATION: ! organism [ TaxonomicLink ]
	    ORDER BY taxonomyLinks [ TaxonomicLink ] displayName ASC,
                     taxonomyLinks [ TaxonomicLink ] modDate DESC
            DESCRIPTION: "Third-party taxonomy links to related objects in other databases."
		PROPERTIES:
		"FE_Order" "1"

OBJECT CLASS Order_
             isa* Observation
  DESCRIPTION: "Experimentally determined order/overlap/containment relationship between genomic segments."
  PROPERTIES:
      	"FE_Visible:alias" "No",
      	"FE_Visible:source_" "No",
        "FE_DefaultSummary" "accessionID*, displayName, position",
      	"FE_Editable:displayName" "No",
      	"FE_Order" "2",
        "FE_ObjectMenu" "<a href=/gdb-bin/genera/history/historyquery?obkey={{key}}>View History</a>",
      	"SRW/FE_QueryMenu" "{{parentmenu}} | <a href={{uptodir}}/SetOwnerGroup>Change Owner Group</a>",
      	"SRW/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      	"SRW/FE_DeleteOption" "<a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=DeleteRequest>Delete</a>",
      	"SRW/FE_ObjectMenu" "{{Edit}} | {{Delete}} | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=ChangeOwner>Request Owner Change</a> | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodb}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodb}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}>View History</a>",
      	"PRW/FE_ObjectMenu" "| <a href={{uptodir}}/restrict/{{script}}/{{db}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodir}}/restrict/{{script}}/{{db}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodir}}/restrict/{{script}}/{{db}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/history/historyquery?obkey={{key}}>View History</a>",
      	"Admin/FE_QueryMenu" "{{parentmenu}} | <a href={{uptodir}}/SetOwnerGroup>Change Owner Group</a>",
      	"Admin/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      	"Admin/FE_DeleteOption" "<a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=DeleteRequest>Delete</a>",
      	"Admin/FE_ObjectMenu" "{{Edit}} | {{Delete}} | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}&annoType=ChangeOwner>Request Owner Change</a> | <a href={{uptodb}}/Annotation?!action=insertform&dBObjects={{key}}>Add Annotation</a> | <a href={{uptodb}}/CitationLink?!action=insertform&dBObjects={{key}}>Link Citation</a> | <a href={{uptodb}}/GenericLink?!action=insertform&dBObjects={{key}}>Add Generic Link</a> | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}>View History</a>",
	"GDB_Rule.displayName" "`<ul><li>{segment1.displayName} {downcase(observationType.value if != unknown, else relationship.code)} {segment2.displayName}'; where segment1 = the first segment in the list. <li>If observationType = 'Amplifies', then segment1 must be of type 'Amplimer'. <li>If observationType = 'Subclone' OR 'EndClone',  then both segment must be of type 'Clone. <li>If observationType = 'Subclone' OR 'EndClone',  then if both Clones have an un-equal, non-null insertSizes, then the clone with the smaller size should be first. <li>If observationType = 'Subclone', relationship = 'ContainedIn'. <li> If observationType = 'EndClone', relationship = 'ContainedLeft' OR 'ContainedRight'</ul>"
  ATTRIBUTE segments: list-of [2,2] GenomicSegment
            DELETE CASCADES
            DESCRIPTION: "GenomicSegments involved in the experimental observation."
		PROPERTIES:
		"GDB_Rule" "the two GenomicSegments cannot be the same _oid. <br>the releaseDate of the Order_ cannot be earlier than the release date of the segments"
  ATTRIBUTE position: [0,1] VARCHAR(255) 
	    DESCRIPTION: "Comment about position of smaller segment in larger."
            PROPERTIES: 
		"GDB_Note" "[Migrate]: populate position with data from 5.6 probe.probe_local field"	
  ATTRIBUTE relationship: [1,1] OrderRelationshipDict
            DESCRIPTION: "Relationship between the segments. If containment relation, the larger segment should be first; if order, the left one should be first."
  ATTRIBUTE observationType: [1,1] ObservationTypeDict
            DESCRIPTION: "Experimental basis for the order inference."
  ATTRIBUTE overlap: [0,1] FLOAT
            DESCRIPTION: "Estimated overlap of segments."
            PROPERTIES:
		"GDB_Rule" "overlap must >= 0"
  ATTRIBUTE units: [0,1] UnitsDict
            DESCRIPTION: "Units of overlap measurement"
            PROPERTIES:
                "GDB_Rule" "if overlap is not null this must not be NULL"
  ATTRIBUTE likelihood: [0,1] FLOAT
            DESCRIPTION: "Likelihood of overlap between the segments."
            PROPERTIES:
		"GDB_Rule" "if likelihoodType is 'Like', likelihood must be between 0 and 1, if Type is 'LOD', then likelihood must be >= 0"
  ATTRIBUTE likelihoodType: [0,1] OrderLikelihoodTypeDict
            PROPERTIES:
                "GDB_Rule" "Cannot be null if orderLikelihood is not NULL"

OBJECT CLASS OtherSegment
             isa* GenomicSegment
  DESCRIPTION: "Segments which do not fall into any of the other subclasses of GenomicSegment."
  PROPERTIES:
      "GDB_Note" "Data group should be automatically notified when new instances are added to the database.",
      "FE_Order" "-1",
      "FE_DefaultSummary" "accessionID*, displayName, alias, LFM, RFM",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/genera/restrict/dseg/dsegquery?accessionID={{key}}&objectClass={{class}}>Generate DNA Segment Number</a> | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a>"
  ATTRIBUTE segmentType: [1,1] GenomicSegmentType
            DELETE CASCADES
            DESCRIPTION: "<B>Query and Edit notes:</B> Coose a value from the <A HREF=/gdb-bin/genera/genera/hgd/GenomicSegmentType?!action=query> list of Genomic Segment Types</A>."
	    PROPERTIES:
		"FE_SubqueryURL" "{{uptodb}}/GenomicSegmentType?!action=query"
  ATTRIBUTE homologies
            DERIVATION: ! segment [ HomologyLink ]
	    ORDER BY homologies [ HomologyLink ] displayName ASC
            DESCRIPTION: "Homologous regions in other genomic databases."
  ATTRIBUTE phenotypes
            DERIVATION: ! segment [ PhenotypeLink ]
	    ORDER BY phenotypes [ PhenotypeLink ] displayName ASC
            DESCRIPTION: "Phenotypes associated with this region"
  ATTRIBUTE mutations
            DERIVATION: ! genomicSegments [ Mutation ]
	    ORDER BY mutations [ Mutation ] displayName ASC
            DESCRIPTION: "Mutations of this region."

OBJECT CLASS PCRCondition
             isa* ExperimentObject
  DESCRIPTION: "PCR amplification conditions"
  PROPERTIES:
      "FE_Editable:displayName" "No",
      "FE_DefaultSummary" "accessionID*, displayName",
      "GDB_Rule" "set displayName = owner + ' protocol"
  ATTRIBUTE amplimers: set-of [1,] Amplimer
	    ORDER BY amplimers.displayName ASC
            DELETE CASCADES
            DESCRIPTION: "Sequences which PCR amplify using these conditions"
            PROPERTIES:
		"GDB_Rule" "amplimers must be unique within the PCRCondition. <br>the release date of the PCR Condition cannot be earlier than the release date of the amplimers"
  ATTRIBUTE mgIonConc: [0,1] FLOAT
            DESCRIPTION: "Mg++ (magnesium ion, in mM) concentration"
            PROPERTIES:
		"FE_PrintName" "Mg++ ion Conc (mM)",
		"GDB_Rule" "if supplied, value must be >= 0"
  ATTRIBUTE annealingTemp: [0,1] FLOAT
            DESCRIPTION: "Annealing temperature in degrees centigrade."
            PROPERTIES:
		"FE_PrintName" "Annealing Temp (deg C)",
		"GDB_Rule" "if supplied, value should be between 0 and 100"
  ATTRIBUTE primerConc: [0,1] FLOAT
            DESCRIPTION: "Primer concentration (in uM)"
            PROPERTIES:
		"FE_PrintName" "Primer Conc (uM)",
		"GDB_Rule" "if supplied, value must be >= 0"
  ATTRIBUTE protocol_: list-of [0,] VARCHAR(255)
            DESCRIPTION: "Details of PCR protocol; can include soak temperature, soak time, extension time, extension temperature, K ion concentration, template concentration, dNTP concentration, polymerase enzyme, tris-HCL concentration, NH4+ ion concentration, detergent name and concentration, name of commercial PCR reaction kit, volume of the reaction buffer, gelatin concentration, pH, cycler description, cycle stages, etc."
            PROPERTIES:
		"FE_Preformatted" "Yes",
		"OB_Pack" "Yes"

OBJECT CLASS PhenotypeLink
             isa* ExternalLink
  DESCRIPTION: "Link from a genomic segment to an external description of the associated phenotype."
  PROPERTIES:
      "GDB_Rule" "displayName is user defined"
  ATTRIBUTE segment: [1,1] GenomicSegment
            DELETE CASCADES
            DESCRIPTION: "The segment of the genome that is being linked to."

OBJECT CLASS SyndromicRegion
             isa* GenomicSegment
  DESCRIPTION: "Represents macroscopic observable phenotypic traits not properly represented elsewhere under GenomicSegment, specifically under Gene which would only be used for known genes, or for phenotypic traits which are known to be a single gene by observation of their Mendelian inheritance pattern even if the gene has not been characterized."
	PROPERTIES:
        "FE_DefaultSummary" "accessionID*, displayName, alias, LFM, RFM",
	"PRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodir}}/restrict/{{script}}/{{db}}/PhenotypeLink?!action=insertform&segment={{key}}>Add Phenotype Link</a>"
	"SRW/FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a> | <a href={{uptodb}}/PhenotypeLink?!action=insertform&segment={{key}}>Add Phenotype Link</a> ",
	"FE_Visible:polymorphisms" "No"
  ATTRIBUTE mutations
            DERIVATION: ! genomicSegments [ Mutation ]
	    ORDER BY mutations [ Mutation ] displayName ASC
            DESCRIPTION: "Mutations of this region."
  ATTRIBUTE homologies
            DERIVATION: ! segment [ HomologyLink ]
	    ORDER BY homologies [ HomologyLink ] displayName ASC
            DESCRIPTION: "Homologous regions in other genomic databases."
  ATTRIBUTE phenotypes
            DERIVATION: ! segment [ PhenotypeLink ]
	    ORDER BY phenotypes [ PhenotypeLink ] displayName ASC
            DESCRIPTION: "Phenotypes associated with this region"

OBJECT CLASS PolymorphicMarker
             isa* GenomicSegment
  DESCRIPTION: "Genomic segments which exhibit heritable variation. The polymorphisms which define instances of this class are those which cannot be defined in terms of any other GenomicSegment (Gene,GeneElement,Clone,Amplimer)."
	PROPERTIES:
        "FE_DefaultSummary" "accessionID*, displayName",
	"SRW/FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/genera/restrict/dseg/dsegquery?accessionID={{key}}&objectClass={{class}}>Generate DNA Segment Number</a> | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a>",
	"GDB_Rule.displayName" "User defined"
  ATTRIBUTE mutations
            DERIVATION: ! genomicSegments [ Mutation ]
	    ORDER BY mutations [ Mutation ] displayName ASC
            DESCRIPTION: "Mutations of this region."
  ATTRIBUTE phenotypes
            DERIVATION: ! segment [ PhenotypeLink ]
	    ORDER BY phenotypes [ PhenotypeLink ] displayName ASC
            DESCRIPTION: "Phenotypes associated with this region"

OBJECT CLASS Polymorphism
             isa* Variation
  DESCRIPTION: "An inherited variation occurring at a frequency above that which would be expected by recurrent mutation."
  PROPERTIES:
      "FE_DefaultSummary" "accessionID*, displayName,maxHet",
      "GDB_Rule.displayName" "User defined"
  ATTRIBUTE allele
            DERIVATION: ! polymorphism [ AlleleSet ]
	    ORDER BY allele [ AlleleSet ] displayName ASC
	    DESCRIPTION: "Chrarcterization of the polymorphism."
	    PROPERTIES:
		"FE_PrintName" "Allele Sets"
  ATTRIBUTE maxHet: [0,1] FLOAT	
	DESCRIPTION: "Computed maximum heterozygosity, denormalized for query efficiency, from AlleleFrequency"
	PROPERTIES:
	"FE_Editable" "No",
	"GDB_Rule" "maxHet = max(max(AllleFrequency.observedHet), max(AlleleFrequency.calculatedHet)). Often, it is possible to have one and not the other, hence the formula involves taking the max of the two"
  ATTRIBUTE locations (segment,position) : 
		set-of [0,] ([1,1] GenomicSegment, [1,1] VARCHAR(255))
      DESCRIPTION: "Comment about position of smaller segment in larger." 
	PROPERTIES:
	"GDB_Rule" "[sp] segment must be in genomicSegments of polym, else error.",	
	"GDB_Note" "[migrate] populate position with data from 5.6 locus_polym_iref.polym_gene_pos"

OBJECT CLASS Population
             isa* VariationObject
  DESCRIPTION: "Collection of individuals in which a variation was studied"
  PROPERTIES:
      "FE_DefaultSummary" "accessionID*, displayName",
      "GDB_Rule.displayName" "User defined"
  ATTRIBUTE specifications (specType, specName):
            list-of [1,] ([1,1] PopulationSpecDict, [1,1] VARCHAR(255))
            DESCRIPTION: "The demographic attributes which are shared by all members of a population"
		PROPERTIES:
		"FE_PrintName" "Specifications"
            COMPONENT specType
              PROPERTIES:
                  "GDB_Rule" "Only one of each specification type allowed for"
            COMPONENT specName
              PROPERTIES:
                  "GDB_Rule" "Only one of each specification type allowed"

OBJECT CLASS Protein
             isa* GeneProduct
  DESCRIPTION: "Mature functional polypeptide."
  PROPERTIES:
      "FE_Order" "1",
      "FE_DefaultSummary" "accessionID*, displayName",
      "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodb}}/EnzymeLink?!action=insertform&protein={{key}}>Add Enzyme Link</a>",
      "PRW/FE_ObjectMenu" "{{parentmenu}} | <a href={{uptodir}}/restrict/{{script}}/{{db}}/EnzymeLink?!action=insertform&protein={{key}}>Add Enzyme Link</a>",
      "GDB_Rule.displayName" "User defined."
  ATTRIBUTE proteinSequences (gene, sequence): set-of [0,] ([1,1] Gene, [1,1] ProteinSequenceLink)
	PROPERTIES:
	"FE_PrintName" "Protein Sequences",
	"FE_Editable" "No",
	"opm_derive" "user SQL",
	"GDB_View" "create view Protein_proteinSequences 
	(_oid, gene, sequence, isReleased, owner)
	as select _oid = GP._oid,
		gene = PSL.gene,
		sequence = PSL._oid,
		isReleased = P.isReleased,
		owner = P.owner
	from GeneProduct_genes GP, ProteinSequenceLink PSL, Protein P
	where GP.gene = PSL.gene
		and P._oid = GP._oid"
            COMPONENT gene    
                PROPERTIES:
                "FE_PrintName" "Gene",
                "opm_derive" "user SQL"
            COMPONENT sequence
                PROPERTIES:
                "FE_PrintName" "Sequence",
                "opm_derive" "user SQL"
  ATTRIBUTE enzymes
	DERIVATION: ! protein [ EnzymeLink ]
	ORDER BY enzymes [ EnzymeLink ] displayName ASC
        DESCRIPTION: "Associated enzyme information"

OBJECT CLASS RadiationHybridMap
             isa* Map
  DESCRIPTION: "A map based on the co-occurrence of markers in a panel of radiation hybrid cell lines, resulting in an ordering of markers along a chromosome backbone."
  PROPERTIES:
      "FE_DefaultSummary" "accessionID*, displayName",
      "FE_Order" "-1"
  ATTRIBUTE mappingPanel: [0,1] MappingPanel 
      	DESCRIPTION: "The mapping panel used to construct the map."
     	PROPERTIES:
	"GDB_Note" " add derived inverse to MappingPanel. "

OBJECT CLASS ReagentSource
             isa* AnnotationObject
  DESCRIPTION: "Source and availability for reagents."
  PROPERTIES:
      "FE_Editable:displayName" "No",
      "GDB_Rule" "GDBVReagentSource sets name to 'owner -- availability'.",
      "GDB_Note" "A clone may have multiple contacts and multiple availability and multiple aliases"
  ATTRIBUTE reagent: [1,1] GenomicSegment
            DELETE CASCADES
            DESCRIPTION: "Mapping reagent such as clone, cell line, library, mapping panel, chromosme reagent etc."
            PROPERTIES:
		"FE_Order" "2",
		"OB_Union" "Amplimer Clone CellLine Library MappingPanel ChromosomeReagent"
  ATTRIBUTE availability: [1,1] AvailabilityDict
            PROPERTIES:
		"FE_Order" "3"
  ATTRIBUTE supplier: [1,1] Contact
	DESCRIPTION: "Supplier or the primary contact source for this reagent"
            PROPERTIES:
		"FE_AllowNULL" "Yes"
		"GDB_Rule" "[sp] Default to owner, if null"

OBJECT CLASS Rearrangement
             isa* VariationObject
  DESCRIPTION: "A gross morphological variation in the structure of a chromosome or set of chromosomes."
  PROPERTIES:
      "FE_Editable:displayName" "No",
      "FE_DefaultSummary" "accessionID*, displayName",
      "WAIS_Class" "Yes",
      "GDB_Rule.displayName" "rearrangementType + '(' + causeType + ')' + karyotype",
      "GDB_Note" "This was called BreakpointSet in GDB 5"
  ATTRIBUTE cellLines
            DERIVATION: ! rearrangements [ CellLine ]
	    ORDER BY cellLines [ CellLine ] displayName ASC
	    DESCRIPTION: "Cell lines in which this rearrangment is exhibited."
  ATTRIBUTE breakpoints: set-of [0,] Breakpoint
	    ORDER BY breakpoints [Breakpoint] displayName ASC
            DELETE CASCADES
            DESCRIPTION: "Breakpoints which define this rearrangment."
            PROPERTIES:
		"GDB_Rule" "breakpoints must be unique within the Rearrangement. <br>the release date of the rearrangement cannot be any earlier than its breakpoint components."
  ATTRIBUTE rearrangementType: [1,1] RearrangementTypeDict
            DESCRIPTION: "Type of rearrangement (translocation, deletion, etc.)."
  ATTRIBUTE causeType: [1,1] BreakpointCauseDict
            DESCRIPTION: "Cause of rearrangement (natural, experimental, etc.)"
  ATTRIBUTE karyotype: [0,1] VARCHAR(255)
	    DESCRIPTION: "Human chromosomal constitution of the rearrangement, as defined by ISCN 1995 nomenclature."

OBJECT CLASS RegulatoryRegion
             isa* GenomicSegment
  DESCRIPTION: "A region associated with a gene to which proteins bind, regulating that gene's expression, such as TATA box, which functions as a binding site for transcription factors."
	PROPERTIES:
        "FE_DefaultSummary" "accessionID*, displayName, alias, LFM, RFM",
        "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a>",
	"GDB_Rule.displayName" "User defined. <br>the release date of the regulatory region cannot be any earlier than its protein and regulates components."
  ATTRIBUTE transFactors (protein, effect, regulates):
            set-of [0,] ([0,1] Protein, [0,1] RegulatoryEffectDict, [0,1] Gene)
            DELETE NULLIFIES
            DESCRIPTION: "Factors which bind to this site, and their effects."
            COMPONENT protein
              PROPERTIES:
                  "DESCRIPTION" "Protein factor which binds to a regulatory region."
            COMPONENT effect
              PROPERTIES:
                  "DESCRIPTION" "Regulatory effect of the bound protein."
            COMPONENT regulates
              PROPERTIES:
                  "DESCRIPTION" "Gene regulated by this factor."
  ATTRIBUTE mutations
            DERIVATION: ! genomicSegments [ Mutation ]
	    ORDER BY mutations [ Mutation ] displayName ASC
            DESCRIPTION: "Mutations of this region."
  ATTRIBUTE homologies
            DERIVATION: ! segment [ HomologyLink ]
	    ORDER BY homologies [ HomologyLink ] displayName ASC
            DESCRIPTION: "Homologous regions in other genomic databases."
  ATTRIBUTE phenotypes
            DERIVATION: ! segment [ PhenotypeLink ]
	    ORDER BY phenotypes [ PhenotypeLink ] displayName ASC
            DESCRIPTION: "Phenotypes associated with this region"

OBJECT CLASS RelationPlus
	DESCRIPTION: "Represents directional specific canonical order relationships with respect to position of the markers."
	PROPERTIES:
	"FE_Visible" "No",
	"FE_Editable" "No"
        "OB_Key" "_oid",
        "OB_SearchKey" "_oid",
      	"FE_QueryMenu" "{{submit}} {{reset}} <a href={{uptodb}}?!action=help&type=dict>Help</a>",
      	"Admin/FE_Editable" "Yes",
      	"Admin/FE_Visible" "Yes",
      	"Admin/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      	"FE_ObjectMenu" "<a href=/gdb-bin/genera/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      	"Admin/FE_ObjectMenu" "{{Edit}} | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      	"Admin/FE_ObjectMenu" "{{parentmenu}}",
      	"OB_NonOPMCV" "Yes",
      	"GDB_Rule" "editable only by the admin group."
  ATTRIBUTE modDate: [1,1] DATETIME
            DESCRIPTION: "Date last modified"
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
                "GDB_Rule" "Set by insert/update procedures"
  ATTRIBUTE version: [1,1] INTEGER
            DESCRIPTION: "Current vesion number"
            PROPERTIES:
                "FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
                "GDB_Rule" "Set by insert/update/delete procedures"
   ATTRIBUTE relations (relation, relationInverse): list-of [2,2] ([1,1] OrderRelationshipDict, [1,1] OrderRelationshipPlusDict )
	DESCRIPTION: "Represents directional specific canonical order relationships with respect to position of the markers."

OBJECT CLASS Repeat
             isa* GenomicSegment
  DESCRIPTION: "A segment of repetitive DNA (e.g. Alu, LINE, SINE etc.). These segments known to be repeated throughout the genome. Polymorphic repeat elements (VNTRs and microsatellite repeats) are represented by the PolymorphicMarker GenomicSegment."
	PROPERTIES:
        "FE_DefaultSummary" "accessionID*, displayName, alias, LFM, RFM",
                "SRW/FE_ObjectMenu" "{{parentmenu}} | <a href=/gdb-bin/genera/restrict/cytoloc/cytolocquery?accessionID={{key}}&objectClass={{class}}>Add Cytogenetic Location</a>",
		"WAIS_Class" "No"
  ATTRIBUTE repeatType: [1,1] RepeatTypeDict
            DESCRIPTION: "Type of repeat."

OBJECT CLASS RestrictionEnzyme
  DESCRIPTION: "Enzymes used to cut DNA at specific sequences."
  PROPERTIES:
      "FE_Editable" "No",
      "Admin/FE_Editable" "Yes",
      "OB_Key" "displayName",
      "OB_SearchKey" "searchName",
      "FE_DisplayAttr" "displayName",
      "Admin/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      "FE_ObjectMenu" "<a href=/gdb-bin/genera/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      "Admin/FE_ObjectMenu" "{{Edit}} | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      "OB_NonOPMCV" "Yes",
      "GDB_Note" "When stable external source is available, this will become a external link",
      "GDB_Rule" "only editable by the admin group"
  ID: displayName
  REP: displayName
  ATTRIBUTE modDate: [1,1] DATETIME
            DESCRIPTION: "Date last modified"
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
                "GDB_Rule" "Set by insert/update procedures"
  ATTRIBUTE version: [1,1] INTEGER
            DESCRIPTION: "Current vesion number"
            PROPERTIES:
                "FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
                "GDB_Rule" "Set by insert/update procedures"
  ATTRIBUTE displayName: [1,1] VARCHAR(200)
            PROPERTIES:
		"FE_Order" "1",
                "FE_Editable" "No",
    		"Admin/FE_Editable" "Yes",
                "FE_Queryable" "Yes",
		"FE_Search" "searchName"
		"FE_PrintName" "Name"
  ATTRIBUTE searchName: [1,1] VARCHAR(200)
            DESCRIPTION: "Corresponds to lower(displayName). Denormalized to aid searching"
            PROPERTIES:
                "FE_Editable" "No",
                "FE_Visible" "No",
                "FE_MatchCase" "Lower",
                "GDB_Rule" "Always set to lower(displayName) on insert/update"
  ATTRIBUTE recognitionSequence: [1,1] VARCHAR(20)
	    DESCRIPTION: "Sequence at which the restriction enzyme cuts DNA."
            PROPERTIES:
		"FE_Order" "4"
  ATTRIBUTE methylationSite: [0,1] VARCHAR(20)
	    DESCRIPTION: "Local nucleotide position near the recognition site, at which a methyl group is required."
            PROPERTIES:
		"FE_Order" "3"
  ATTRIBUTE prototype: [0,1] VARCHAR(20)
	    DESCRIPTION: "Another restriction enzyme which serves as a prototype for this restriction enzyme, as defined by the Restriction Enzyme Database (REBASE)."
            PROPERTIES:
		"FE_Order" "2"

OBJECT CLASS RNA
             isa* GeneProduct
  DESCRIPTION: "Functional (non-message) RNA, such as tRNAs or rRNAs."
  PROPERTIES:
      "FE_Order" "-1",
      "FE_DefaultSummary" "accessionID*, displayName",
      "GDB_Rule.displayName" "User defined."
  ATTRIBUTE RNAtype: [1,1] RNATypeDict
            DESCRIPTION: "Type (function) of the RNA product."

OBJECT CLASS SchemaVersion 
  DESCRIPTION:"Holds schema version info."
	PROPERTIES:
	"FE_Editable" "No"
  ATTRIBUTE majorVersionNumber: [1,1] INTEGER
  ATTRIBUTE minorVersionNumber: [1,1] INTEGER
  ATTRIBUTE releaseDate: [1,1] DATETIME
  ATTRIBUTE note: [0,1] VARCHAR(255)

OBJECT CLASS NucleicAcidSequenceLink
             isa* ExternalLink
  DESCRIPTION: "Link to an external DNA or RNA sequence (fragment)."
  PROPERTIES:
      "GDB_Rule" "if displayName Null, set displayName = ExternalLink.accessionID"
  ATTRIBUTE dBObject: [1,1] DBObject
            DELETE CASCADES
            DESCRIPTION: "The object that is linked to the sequence."
            PROPERTIES:
		"OB_Union" "Amplimer Clone Gene GeneElement OtherSegment Repeat Mutation Polymorphism Protein RNA"
  ATTRIBUTE startPos: [0,1] INTEGER
            DESCRIPTION: "Starting position. Used to indicate start of a sub-sequence of interest within the external sequence entry."
            PROPERTIES:
		"GDB_Rule" "if startPos and endPos are supplied, startPos must be <= endPos"
  ATTRIBUTE endPos: [0,1] INTEGER
            DESCRIPTION: "End position. Used to indicate end of a sub-sequence of interest within the external sequence entry."

OBJECT CLASS ProteinSequenceLink
	isa* ExternalLink
   DESCRIPTION: "Link from a Gene to an external protein sequence."
   PROPERTIES:
	"GDB_Rule" "if displayName is NULL, default to = externalDB : ExternalLink.accessionID"
   ATTRIBUTE gene: [1,1] Gene
	DELETE CASCADES
	DESCRIPTION: "The gene that is linked to the sequence."

OBJECT CLASS Submission
             isa* DBObject
  DESCRIPTION: "A group of DBObjects which were submitted to GDB."
  PROPERTIES:
      "FE_Editable" "No",     
      "FE_DefaultSummary" "accessionID*, displayName",
      "Admin/FE_Editable:displayName" "No",
      "Admin/FE_Editable" "Yes",
      "Admin/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      "Admin/FE_ObjectMenu" "{{parentmenu}}",
      "GDB_Rule" "set displayName = owner + (Data submitted on + addDate + )"

OBJECT CLASS StructureLink
             isa* ExternalLink
  DESCRIPTION: "Links gene products (protein, RNA) to external structure databases (e.g., PDB, NDB)"
  PROPERTIES:
	"GDB_Rule" "if displayName NULL, set displayName = ExternalLink.externalDB : ExternalLink.accessionID"
  ATTRIBUTE geneProduct: [1,1] GeneProduct
            DELETE CASCADES
            DESCRIPTION: "Associated gene product (protein, RNA)"

OBJECT CLASS Style
             isa* MappingObject
  DESCRIPTION: "Rendering style information for elements of genomic maps."
  PROPERTIES:
      "FE_Editable" "No",
      "Admin/FE_Editable" "Yes",
      "Admin/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      "Admin/FE_ObjectMenu" "{{parentmenu}}",
      "FE_Order" "2"
  ATTRIBUTE lineStyle: [0,1] LineStyleDict
  ATTRIBUTE colorRed: [0,1] TINYINT
  ATTRIBUTE colorBlue: [0,1] TINYINT
  ATTRIBUTE colorGreen: [0,1] TINYINT
  ATTRIBUTE fontStyle: [0,1] FontStyleDict
  ATTRIBUTE shape: [0,1] ShapeDict

OBJECT CLASS SyntenicRegion
             isa* GenomicSegment
  DESCRIPTION: "Region of conserved synteny with another species."
	PROPERTIES:
	"FE_Visible:polymorphisms" "No"
        "FE_DefaultSummary" "accessionID*, displayName",
  ATTRIBUTE leftOuterMarker: [0,1] GenomicSegment 
	DESCRIPTION: "GDB-local proxy entry for last upstream framework marker in nonhuman map known to not be part of this syntenic region."
	PROPERTIES:
	"GDB_Rule" "Need to specify?"
  ATTRIBUTE leftInnerMarker: [0,1] GenomicSegment 
	DESCRIPTION: "GDB-local proxy entry for first framework marker in nonhuman map known to be part of this syntenic region."
	PROPERTIES:
	"GDB_Rule" "Need to specify?"
  ATTRIBUTE rightInnerMarker: [0,1] GenomicSegment 
	DESCRIPTION: "GDB-local proxy entry for last framework marker in nonhuman map known to be part of this syntenic region."
	PROPERTIES:
	"GDB_Rule" "Need to specify?"
  ATTRIBUTE rightOuterMarker: [0,1] GenomicSegment 
	DESCRIPTION: "GDB-local proxy entry for first downstream framework marker in nonhuman map known to not be part of this syntenic region."
	PROPERTIES:
	"GDB_Rule" "Need to specify?"
  ATTRIBUTE mutations
            DERIVATION: ! genomicSegments [ Mutation ]
	    ORDER BY mutations [ Mutation ] displayName ASC
            DESCRIPTION: "Mutations of this region."
  ATTRIBUTE homologies
            DERIVATION: ! segment [ HomologyLink ]
	    ORDER BY homologies [ HomologyLink ] displayName ASC
            DESCRIPTION: "Homologous regions in other genomic databases."
  ATTRIBUTE phenotypes
            DERIVATION: ! segment [ PhenotypeLink ]
	    ORDER BY phenotypes [ PhenotypeLink ] displayName ASC
            DESCRIPTION: "Phenotypes associated with this region"

OBJECT CLASS SyntenyMap
             isa* Map
  DESCRIPTION: "Map showing syntenic regions and homologous loci from another species aligned against a human map."
  ATTRIBUTE humanMap: [1,1] Map 
	DESCRIPTION: "Human map used to align against."
  ATTRIBUTE nonHumanMap: [1,1] Map 
	DESCRIPTION: "GDB-local proxy entry for nonhuman map used to align against."
      

OBJECT CLASS TaxonomicLink
                   isa* ExternalLink
        DESCRIPTION: "Links organisms to external taxonomic database entries."
        PROPERTIES:
              "GDB_Rule" "if displayName NULL, set displayName = ExternalLink.externalDB : ExternalLink.accessionID",
	      "GDB_Note" "[migrate] transfer data from Organism.taxonomicDescriptions to here"
        ATTRIBUTE organism: [1,1] Organism
                  DELETE CASCADES
                  DESCRIPTION: "Associated organism."

OBJECT CLASS Variation
             isa* VariationObject
  DESCRIPTION: "Variation in the sequence of a genomic region."
  PROPERTIES:
      "FE_Order" "-1",
      "FE_Editable" "No",
      "WAIS_Class" "Yes"
  ATTRIBUTE nucleicAcidSequences
            DERIVATION: ! dBObject [ NucleicAcidSequenceLink ]
	    ORDER BY nucleicAcidSequences [ NucleicAcidSequenceLink ] displayName ASC
            DESCRIPTION: "Nucleic acid sequence(s) of the variation."
  ATTRIBUTE typeQuery
            DERIVATION: variationType [ VariationType ]  broaderTerm [VariationType ]
	    ORDER BY typeQuery [VariationType] displayName ASC
            DESCRIPTION: "A version of the type field used for querying. Supports retrieval based on broader terms."
	    PROPERTIES:
		"opm_card" "single"
  ATTRIBUTE variationType: [1,1] VariationType
	    DESCRIPTION: "Type of variation (RFLP, dinucleotide repeat, etc.).<BR><B>Query and Edit notes:</B> Choose a value from the <A HREF=/gdb-bin/genera/genera/hgd/VariationType?!action=query> list of Variation Types</A>."
	    PROPERTIES:
		"FE_SubqueryURL" "{{uptodb}}/VariationType?!action=query"
  ATTRIBUTE genomicSegments: set-of [1,] GenomicSegment
	    ORDER BY genomicSegments.displayName ASC
            DELETE CASCADES
            DESCRIPTION: "Segment(s) affected by the variation."
            PROPERTIES:
		"GDB_Rule" "genomicSegments must be unique within the Variation"
  ATTRIBUTE DNAType: [1,1] DNATypeDict
  ATTRIBUTE detectMethods: set-of [0,] DetectMethod
	    ORDER BY detectMethods.displayName ASC
            DELETE CASCADES
	    DESCRIPTION: "Method by which this variation was detected."
            PROPERTIES:
		"GDB_Rule" "detectMethods must be unique within the Variation"
  ATTRIBUTE mutantAminoAcid: [0,1] AminoAcidDict
	    DESCRIPTION: "Amino Acid present in the mutant phenotype for this variation."
  ATTRIBUTE wildTypeAminoAcid: [0,1] AminoAcidDict
	    DESCRIPTION: "Amino Acid present in the wild type phenotype for this variation."
  ATTRIBUTE mutantNucleotideSeq: [0,1] VARCHAR(255)
	    DESCRIPTION: "Local DNA sequence present in the mutant phenotype for this variation."
  ATTRIBUTE wildTypeNucleotideSeq: [0,1] VARCHAR(255)
	    DESCRIPTION: "Local DNA sequence present in the wild type phenotype for this variation."
  ATTRIBUTE ASO: set-of [0,] AlleleSpecificOligomer
	    ORDER BY ASO.displayName ASC
            DELETE CASCADES
	    DESCRIPTION: "Allele-Specific Oligonucletide(s) used to detect this variation (usually a Mutation)."
            PROPERTIES:
		"GDB_Rule" "ASO must be unique within the Variation"

OBJECT CLASS VariationObject
             isa* DBObject
  DESCRIPTION: "Groups all objects involved in representing genomic variation."
  PROPERTIES:
      "FE_Editable" "No"

OBJECT CLASS VariationType
  DESCRIPTION: "User-extensible taxonomy for new region types."
  PROPERTIES:
      "GDB_Note" "Initialize from VariationTypeDict.",
      "OB_Key" "displayName",
      "OB_SearchKey" "searchName",
      "FE_Editable" "No",
      "Admin/FE_Editable" "Yes",
      "FE_DisplayAttr" "displayName",
      "Admin/FE_EditOption" "<a href={{uptodb}}/{{class}}?!action=updateform&!key={{key}}>Edit</a>",
      "FE_ObjectMenu" "<a href=/gdb-bin/genera/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      "Admin/FE_ObjectMenu" "{{Edit}} | <a href=/gdb-bin/genera/restrict/history/historyquery?obkey={{key}}&obclass={{class}}&db={{db}}>View History</a>",
      "OB_NonOPMCV" "Yes",
      "GDB_Rule" "editable only by the admin group; if displayName consists of '%nucleotide Repeat' then add 'Microsatellite Repeat', as broaderTerm"
  ID: displayName
  REP: displayName
  ATTRIBUTE modDate: [1,1] DATETIME
            DESCRIPTION: "Date last modified"
            PROPERTIES:
		"FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
                "GDB_Rule" "Set by insert/update procedures"
  ATTRIBUTE version: [1,1] INTEGER
            DESCRIPTION: "Current vesion number"
            PROPERTIES:
                "FE_IncludeInDetail" "No",
		"Admin/FE_IncludeInDetail" "Yes",
                "FE_Editable" "No",
                "GDB_Rule" "Set by insert/update/delete procedures"
  ATTRIBUTE displayName: [1,1] VARCHAR(200)
            PROPERTIES:
		"FE_Order" "1",
                "FE_Editable" "No",
      		"Admin/FE_Editable" "Yes",
		"FE_Search" "searchName",
		"FE_PrintName" "Name"
  ATTRIBUTE searchName: [1,1] VARCHAR(200)
            DESCRIPTION: "Corresponds to lower(displayName). Denormalized to aid searching"
            PROPERTIES:
                "FE_Editable" "No",
                "FE_Visible" "No",
                "FE_MatchCase" "Lower",
                "GDB_Rule" "Always set to lower(displayName) on insert/update"
  ATTRIBUTE broaderTerm: [1,1] VariationType
            DESCRIPTION: "A more general term, eg Microsatellite is broader than mononucleotide repeat. Allows queries based on broader terms to retrieve objects indexed under narrower ones."
            PROPERTIES:
		"FE_AllowNULL" "Yes",
		"FE_Order" "2",
                "GDB_Default" "self",
                "GDB_Rule" "if not supplied, default to the current _oid"
  ATTRIBUTE narrowerTerms
            DERIVATION: ! broaderTerm [ VariationType ]
		ORDER BY narrowerTerms [ VariationType ] displayName ASC
            DESCRIPTION: "More specific terms."
		PROPERTIES:
		"FE_Order" "3"