default namespace = "http://www.bioontology.org/obd/schema/pheno" ## Pheno-XML ## Chris Mungall 2006 ## ## The RNC is the master version - ## RNG and XSD is autogenerated from RNC #default namespace = "" #namespace geno = "http://www.gmod.org/schema/genotype" # Changes: # # Version: 0.20 # # post ZFIN-meeting changes # - phenotype_characters no longer grouped under phenotype # (this can be done dynamically) # - changed in_comparison_to/@about to in_comparison_to/@phenotype_character # (now no longer allowed to link to a taxon) # # Version: 0.12 # # added ID attribute to phenotype_character # # Version: 0.11 # # genetic_feature_set -> genotype_feature_link # # Version: 0.10 # # complete revamp from 0_06 start = ## A document consists of some combination of genotypes and ## phenotypes, manifestations of phenotypes via genotypes, and ## genetic features element phenoset { ## : File format version : ## should match this schema version (eg 0.01) attribute version { xsd:string }?, genotype*, genetic_feature*, phenotype*, phenotype_manifestation* } genotype = ## Each genotype record represents a single individual or group of genetically similar individuals ## Genotypes are represented as a difference set from a wild-type. The wild-type organism is specified ## in the attribute. The difference list is a list of genetic_features; allelic forms of genes, ## sequence variations. element genotype { attribute id { identifier_Type }?, ## NCBI TAxon ID attribute organism { identifier_Type }?, ## another genotype attribute background { identifier_Type }?, element name { name_Type }?, ## A genotype is a collection of alleles; ## Only the mutant alleles and ## sequence variants are specified - the collection ## specifies a difference list from a chosen wildtype. ## A wildtype will have zero links to features element genotype_feature_link { attribute copy_count {xsd:int}?, ## a reference to a genetic feature attribute feature { identifier_Type }? }* } genetic_feature = ## A genetic feature may be a gene (allele), transcript, SNP, etc ## typed by SO ## This is a partial model of genetic features - a full ## model can be found in Chado element genetic_feature { ## unique stable global identifier - this can be used to ## reference more detailed info in a sequence/genetics db attribute id { identifier_Type }, ## optional: same as genotype.organism_id if not specified attribute organism { identifier_Type }?, ## SO type. "gene" for mutant allele. May also be some ## kind of sequence_variant (eg deletion, P_insertion, SNP) ## defaults to SO:gene (ie an allele) typeref?, element name { name_Type }? } manifest_in = ## TODO: fold this into phenotype_manifestation table? ## a single genotype can be associated with multiple phenotypes ## in different experiments and different environments element manifest_in { attribute penetrance_percentage { xsd:float }?, attribute genotype { identifier_Type }?, ## may be from genetic context ontology ## e.g. dominant, codominant typeref* } phenotype_manifestation = ## A phenotype manifestation is an embodiment of a phenotype in one ## more individual organisms of a certain genotype under certain ## conditions element phenotype_manifestation { ## Each manifestation can be identified, but this is optional. ## Note that the ID is for the manifestation of the phenotype ## in either a single individual organism, or in a population of ## indistinguishable individuals in an experiment or trial attribute id { identifier_Type }?, ## free text summary of the entire phenotype manifestation; description?, ## genotypes of the individual or individuals that ## show the phenotype. manifest_in, ## The collection of characteristics exhibited in this ## manifestation phenotype_character*, ## support or evidence; experimental details provenance*, ## there is an implicit 'normal' environment ## if multiple environments are specified, the association ## holds for ALL of them envirotype* } phenotype = ## a phenotype is a collection of characteristics possessed by ## an organism or collection of organisms ## (or in some cases, the environment of the organism, as a ## result of that organism's actions - for example a termite's nest) ## the phenotype arises as a result of the organism's genotype ## and the environment of the organism ## ## Examples of phenotypes are: ## * "red eyes and notched wings" ## * "reduced apoptosis and increased susceptibility to cancer" ## * "Initially a single lateral is formed, but it is thicker than normal ## and sometimes individual bundles of actin filaments can be seen. The ## laterals split near the distal tip as they elongate and at later ## stages they appear to be split over more of their length." ## * "interrupted imaginal disc development and stunted wings at the adult stage" ## ## The phenotype is the entire collection of characteristics exhibited ## by that organism (or collection of effectively indistinguishable ## organsisms). Each organism has a single phenotype throughout ## its lifespan - the characteristics that comprise that phenotype ## may change, this is reflected in the phenotype_character records ## ## each phenotype record represents a specific phenotype which ## may be instantiated in one or more organisms. If two or more organisms have ## indistinguishable phenotypes, the same ## record may be used. If phenotypes are distinguishable then a ## different record should be used. element phenotype { ## An identifier for a phenotype term. If supplied, this would ## come from a full ## ontology of pre-coordinated phenotype terms such as MP or ## the plant_trait ontology typeref?, phenotype_character* } phenotype_character = ## A phenotype character is one or more qualities inhering in a single ## bearer entity. For example, a PC with quality type "red" and bearer ## type "eye" (written here for convenience as "red eye") represents a ## particular instantiation of "red eye"/"red eyes" in a particular ## organism or collection of like organisms ## ## examples of phenotype character types: ## red hair, low bone mass, square jaw, long thick bristle, ## 2cm long tail, spermatocyte devoid of asters, elevated blood pressure, ## lacking wings, having an additional digit relative to a wild type individual, ## having a brain size during embryonic development that is larger than ## a typical individual of the same genus/order, short attention span, having ## an abnormal shape, abnormal fusion between digits, lacking red spots, ## abnormally low numbers of B-cells after infection, lacking circularity in ## the cross-section of an arista lateral ## ## A phenotype character record represents an instance of a characteristic ## possessed by a single organism, or a collection of identical characteristics ## possessed by like organisms. element phenotype_character { attribute id { identifier_Type }?, attribute expressivity_percentage { xsd:float }?, ## An identifier for a phenotype term. If supplied, this would ## come from a full ## ontology of pre-coordinated phenotype terms such as MP or ## the plant_trait ontology typeref?, ## free text summary of the phenotype character description?, ## the type of entity in which the qualities inhere ## can be a process type or continuant type bearer, ## the quality types (attributes, properties) that are the ## hallmarks of this character quality* } bearer = ## each 'bearer' record represents a particular bearer of some ## general bearer type: for example, a particular wing of a ## particular fly ## ## entities can be spatial objects (3D e.g. anatomical parts) ## or spatiotemporal entities (4D e.g. processes) element bearer { ## qualities can be borne by processes or continuants; ## the bearer can thus be drawn from GO process, component, ## or from an ontology of cells or larger anatomical entities. typeref } quality = ## aka attribute aka property ## any one particular bearer can have multiple qualities inhering ## in it. For example, a particular tail can have qualities such ## as shape, length, etc ## ## each quality inheres in a single bearer throughout the duration ## of that entities existence. For example, my height is a single ## quality that inheres in my body throughout my life. This ## quality can take on different states throughout the lifetime ## of the bearer. ## element quality { ## not required: it can be deduced from the quality type. ## if provided, the value of this field is always an OBO-style identifier from PATO ## may be useful for report purposes; eg the color of this entity is red ## (where 'color' is the determinable) attribute determinable { classId_Type}?, ## certain kinds of quality implicitly or explicitly refer to ## numbers. Examples of these are the qualities of "having ## supernumery parts" or the qualities of "lacking parts". It ## can be useful to state the exact number here, rather than ## overloading the ontology of qualities. ## ## the number will refer to either the relative or absolute ## quantity....? ## ## This is purely optional, as it is usually sufficient to ## state that a particular hand has supernumery fingers, ## without saying how many extra attribute count { xsd:integer }?, ## quality type. comes from PATO typeref, ## optional free text description?, ## Relational qualities inhere in additional entities. ## This should be used for relational qualities ## (e.g. sensitivity, distance_from) ## and not for monadic entities. ## ## other examples include: ## "spermatocytes *devoid_of* asters", "thorax *lacks* wing", ## hand *has-supernumerary-parts* finger ## in these cases, the related_entity records the _type_ of part ## that is lacking or present in lower or higher numbers element related_entity { typeref }*, ## sometimes a state is only instantiated if a certain condition holds element on_condition { typeref }*, ## for relative qualities we may want an explicit "yardstick" in_comparison_to*, ## not all phenotype characters can be specified in ## qualitative terms using classes from an ontology of ## quality states. Sometimes unit-based quantitative measurements ## must be used - for example, weight in kg ## rather than overloading the 'type' field we treat measurements ## separately. Measurements complement quality space annotations; ## a phenotype character can be both "shorter_than" wild-type ## and also 2cm in length. Either or both of these can be ## specified in the annotation measurement*, ## Qualities can change over time: a quality may instantiate 'hot' at one time and 'cold' at a later time. ## we may know the exact time stage (eg larval to pupal), or we may have an open range (eg post-larval), repeated ## ranges.. ## multiple qualifiers can be specified (eg before t2 and after t1) ## if no qualifiers are specified then there is no implied time - it is assumed to happen at some point ## in the organisms life time, UNLESS it is constrained by the bearer bearer type. ## for example, if the bearer is "larva" then the attached state occurs during the larval stage. for this ## to be infered, the appropriate relations must be specified in the anatomical ontology temporal_qualifier*, modifier* } in_comparison_to = ## quality types can be absolutist (square, red) or ## relative (high pressure, short height). relative ## always implies a context. The default context is ## always an equivalent phenotype character in a ## typical individual of the same species. We can be ## more explicit if we like by specifying in_comparison_to ## ## Examples: ## an allele which has more or less pronounced effects ## in different genetic backgrounds; ## A yellow eye which is red in wildtype; element in_comparison_to { ## if left blank, this is inferred from the quality type; ## for example, if Q="high pressure", then the relation is ## higher-than or increased-with-respect-to attribute relation { classId_Type }?, ## identifier for a different phenotype_character; ## this character may be from a similar organism with ## a different genotype or environment; or a wild-type ## genotype from an entirely different taxon attribute phenotype_character { identifier_Type }?, ## What the quality type would be in wild-type, or ## whatever the comparison target is. Can specify multiple ## values if these are exhibited by the target. ## for example, if color is red or pink in wildtype, then ## we can specify these two here. ## specifying target types can lead to redundancy, this ## is only required when for example our canonical ## anatomical ontologies are not specific w.r.t quality types typeref*, ## What typical measurements would be in wild-type, or ## whatever the comparison target is. Can specify multiple ## values if these are exhibited by the target measurement* } modifier = ## for abnormal/normal ## these should come from the PATO modifier terminology element modifier { attribute about { classId_Type } } measurement = ## : measurement : ## ## examples: ## length measurement (with ruler, in cm) ## spot intensity ## real-world measurements (exlcuding count measurements) are inexact ## and hence ranges. element measurement { ## the unit should be a reference to an SI unit ## Q: do SI units have an identifier system, ## or do we just use eg "mm" ## Q: do we need the ability to specify composite units, ## eg lb/kg - or is this handled by SI? attribute unit { identifier_Type }, ## the only time this would be omitted is if we only have a range attribute value { xsd:float }?, ## Q: does the range reflect our lack of knowledge (eg accuracy ## of measuring instrument) or an actual range of values? ## or should we represent an actual range as multiple measurements? attribute min_value { xsd:float }?, attribute max_value { xsd:float }?, attribute standard_deviation { xsd:float }?, attribute standard_error { xsd:float }?, ## TODO: reference to a particular experiment attribute assay { identifier_Type }? } provenance = ## evidence: could refer to papers, figures in papers, raw images, etc element provenance { attribute id { identifier_Type }, attribute type { classId_Type }? } envirotype = ## The type of environment. ## For now this is just a pre or post coordinated type reference. In future ## We may want to add more under here element envirotype { typeref } typeref = ## A reference to a type. Here type is used in the ontology sense of ## a "kind" or "universal". A type can be referenced simply by giving a ## term ID from an ontology. More complex types can be "post-coordinated" element typeref { ## Base/generic type. This is often all that is required. ## the ID is OBO-compliant and can be from any ontology attribute about { classId_Type }, ## We can post-compose references to more detailed types ## for which no defined term exists qualifier* } qualifier = ## for cross-products ## these are the characteristics that distinguish a specific type ## from a general type ## e.g. if we want to annotate to an bearer "scutum bristle" and the ## anatomical ontology does not contain this term, only "scutum" and ## "bristle". In this case the bearer type_id (ie the primary term) would ## be the ID for "bristle". We would have one differentium "part_of scutum" element qualifier { attribute relation { classId_Type }, element holds_in_relation_to { typeref } } temporal_qualifier = ## temporal_qualifier ## examples: ## during larval stage; ## after pupal stage; ## at 7pm on 2000/01/01; ## overlapping M1-phase; ## we do not tie ourself to any one theory of time - time ranges and points are represented using time_range element temporal_qualifier { ## e.g. before, after, during - would come from an ontology of temporal relations ## this is optional. If not specified, treated as *overlap* relation attribute relation { classId_Type }?, time_range? } time_range = ## represents an interval or point in time ## (we are neutral w.r.t points vs intervals) element time_range { ## : id : OPTIONAL ## this is typically not used. You would use it if you wish to grant an identifier to ## a particular time point or range. This would allow you to make partial-order statements; ## e.g. t1 before t2 attribute id { identifier_Type }?, ## The interval may be typed by a term/class from an ontology of ## developmental stages, processes or life cycles. typeref?, ## an OPTIONAL measurement of the time; eg in seconds, hours, ## years, etc. Measured either from when the particular attribute ## (and hence bearer) came into existence, or in absolute time. measurement? } description = ## an optionally-attributed textual description element description { attribute id { identifier_Type }?, ## e.g pubmed ID attribute attribution { identifier_Type }?, xsd:string } # ++ basic types ++ identifier_Type = xsd:string name_Type = xsd:string classId_Type = xsd:string