diff --git a/generated/jsonschema/allianceModel.schema.json b/generated/jsonschema/allianceModel.schema.json index 2ecec70e0..0543e83cc 100644 --- a/generated/jsonschema/allianceModel.schema.json +++ b/generated/jsonschema/allianceModel.schema.json @@ -551,6 +551,17 @@ "additionalProperties": false, "description": "An annotation asserting an association between an AGM and a phenotype supported by evidence.", "properties": { + "affected_entity": { + "anyOf": [ + { + "$ref": "#/$defs/AffectedEntity" + }, + { + "type": "null" + } + ], + "description": "The entity (anatomical structure, developmental stage, and/or biological process) that is affected by the phenotype." + }, "asserted_alleles": { "description": "The allele to which something is manually asserted to be associated.", "items": { @@ -734,6 +745,17 @@ "null" ] }, + "qualifier": { + "anyOf": [ + { + "$ref": "#/$defs/PhenotypeQualifier" + }, + { + "type": "null" + } + ], + "description": "Additional ontological terms that refine the description of the phenotype." + }, "related_notes": { "description": "Valid note types are available for viewing in the A-Team curation tool Controlled Vocabulary Terms Table (in the \"Phenotype annotation note types\" vocabulary) on the production environment (curation.alliancegenome.org). New terms can be added as needed.", "items": { @@ -777,6 +799,16 @@ "additionalProperties": false, "description": "Ingest class for an association between an AGM and a phenotype", "properties": { + "affected_entity_dto": { + "anyOf": [ + { + "$ref": "#/$defs/AffectedEntityDTO" + }, + { + "type": "null" + } + ] + }, "agm_identifier": { "description": "Curie or internal ID of AGM", "type": "string" @@ -942,6 +974,16 @@ "null" ] }, + "qualifier_dto": { + "anyOf": [ + { + "$ref": "#/$defs/PhenotypeQualifierDTO" + }, + { + "type": "null" + } + ] + }, "updated_by_curie": { "description": "Curie of the Person object representing the individual that updated the entity", "type": [ @@ -1330,6 +1372,256 @@ "title": "ATPTerm", "type": "object" }, + "AffectedEntity": { + "additionalProperties": false, + "description": "An entity that is affected by a phenotype.", + "properties": { + "created_by": { + "description": "The individual that created the entity.", + "type": [ + "string", + "null" + ] + }, + "date_created": { + "description": "The date on which an entity was created. This can be applied to nodes or edges.", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "date_updated": { + "description": "Date on which an entity was last modified.", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "db_date_created": { + "description": "The date on which an entity was created in the Alliance database. This is distinct from date_created, which represents the date when the entity was originally created (i.e. at the MOD for imported data).", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "db_date_updated": { + "description": "Date on which an entity was last modified in the Alliance database. This is distinct from date_updated, which represents the date when the entity was last modified and may predate import into the Alliance database.", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "internal": { + "description": "Classifies the entity as private (for internal use) or not (for public use).", + "type": "boolean" + }, + "obsolete": { + "description": "Entity is no longer current.", + "type": [ + "boolean", + "null" + ] + }, + "phenotype_location": { + "anyOf": [ + { + "$ref": "#/$defs/AnatomicalSite" + }, + { + "type": "null" + } + ], + "description": "The anatomical site that is affected by a phenotype." + }, + "phenotype_process": { + "description": "The biological process that is affected by a phenotype.", + "type": [ + "string", + "null" + ] + }, + "phenotype_stage": { + "anyOf": [ + { + "$ref": "#/$defs/TemporalContext" + }, + { + "type": "null" + } + ], + "description": "The developmental stage that is affected by a phenotype." + }, + "updated_by": { + "description": "The individual that last modified the entity.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "internal" + ], + "then": { + "anyOf": [ + { + "properties": { + "phenotype_location": {} + }, + "required": [ + "phenotype_location" + ] + }, + { + "properties": { + "phenotype_stage": {} + }, + "required": [ + "phenotype_stage" + ] + }, + { + "properties": { + "phenotype_process": {} + }, + "required": [ + "phenotype_process" + ] + } + ] + }, + "title": "AffectedEntity", + "type": "object" + }, + "AffectedEntityDTO": { + "additionalProperties": false, + "description": "Ingest class for an entity that is affected by a phenotype.", + "properties": { + "created_by_curie": { + "description": "Curie of the Person object representing the individual that created the entity", + "type": [ + "string", + "null" + ] + }, + "date_created": { + "description": "The date on which an entity was created. This can be applied to nodes or edges.", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "date_updated": { + "description": "Date on which an entity was last modified.", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "db_date_created": { + "description": "The date on which an entity was created in the Alliance database. This is distinct from date_created, which represents the date when the entity was originally created (i.e. at the MOD for imported data).", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "db_date_updated": { + "description": "Date on which an entity was last modified in the Alliance database. This is distinct from date_updated, which represents the date when the entity was last modified and may predate import into the Alliance database.", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "internal": { + "description": "Classifies the entity as private (for internal use) or not (for public use).", + "type": "boolean" + }, + "obsolete": { + "description": "Entity is no longer current.", + "type": [ + "boolean", + "null" + ] + }, + "phenotype_location_dto": { + "anyOf": [ + { + "$ref": "#/$defs/AnatomicalSiteDTO" + }, + { + "type": "null" + } + ], + "description": "The anatomical site that is affected by a phenotype (submitted)." + }, + "phenotype_process_curie": { + "description": "The biological process that is affected by a phenotype (submitted).", + "type": [ + "string", + "null" + ] + }, + "phenotype_stage_dto": { + "anyOf": [ + { + "$ref": "#/$defs/TemporalContextDTO" + }, + { + "type": "null" + } + ], + "description": "The developmental stage that is affected by a phenotype (submitted)." + }, + "updated_by_curie": { + "description": "Curie of the Person object representing the individual that updated the entity", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "internal" + ], + "then": { + "anyOf": [ + { + "properties": { + "phenotype_location_dto": {} + }, + "required": [ + "phenotype_location_dto" + ] + }, + { + "properties": { + "phenotype_stage_dto": {} + }, + "required": [ + "phenotype_stage_dto" + ] + }, + { + "properties": { + "phenotype_process_curie": {} + }, + "required": [ + "phenotype_process_curie" + ] + } + ] + }, + "title": "AffectedEntityDTO", + "type": "object" + }, "AffectedGenomicModel": { "additionalProperties": false, "description": "Includes inbred strains, stocks, disease models and mutant genotypes", @@ -6351,6 +6643,17 @@ "additionalProperties": false, "description": "An annotation asserting an association between an allele and a phenotype supported by evidence.", "properties": { + "affected_entity": { + "anyOf": [ + { + "$ref": "#/$defs/AffectedEntity" + }, + { + "type": "null" + } + ], + "description": "The entity (anatomical structure, developmental stage, and/or biological process) that is affected by the phenotype." + }, "asserted_genes": { "description": "The gene(s) to which something is manually asserted to be associated.", "items": { @@ -6513,6 +6816,17 @@ "null" ] }, + "qualifier": { + "anyOf": [ + { + "$ref": "#/$defs/PhenotypeQualifier" + }, + { + "type": "null" + } + ], + "description": "Additional ontological terms that refine the description of the phenotype." + }, "related_notes": { "description": "Valid note types are available for viewing in the A-Team curation tool Controlled Vocabulary Terms Table (in the \"Phenotype annotation note types\" vocabulary) on the production environment (curation.alliancegenome.org). New terms can be added as needed.", "items": { @@ -6556,6 +6870,16 @@ "additionalProperties": false, "description": "Ingest class for an association between an allele and a phenotype", "properties": { + "affected_entity_dto": { + "anyOf": [ + { + "$ref": "#/$defs/AffectedEntityDTO" + }, + { + "type": "null" + } + ] + }, "allele_identifier": { "description": "Identifier (curie/primary_external_id/mod_internal_id) of the allele", "type": "string" @@ -6704,6 +7028,16 @@ "null" ] }, + "qualifier_dto": { + "anyOf": [ + { + "$ref": "#/$defs/PhenotypeQualifierDTO" + }, + { + "type": "null" + } + ] + }, "updated_by_curie": { "description": "Curie of the Person object representing the individual that updated the entity", "type": [ @@ -24700,6 +25034,17 @@ "additionalProperties": false, "description": "An annotation asserting an association between a gene and a phenotype supported by evidence.", "properties": { + "affected_entity": { + "anyOf": [ + { + "$ref": "#/$defs/AffectedEntity" + }, + { + "type": "null" + } + ], + "description": "The entity (anatomical structure, developmental stage, and/or biological process) that is affected by the phenotype." + }, "condition_relations": { "items": { "$ref": "#/$defs/ConditionRelation" @@ -24841,6 +25186,17 @@ "null" ] }, + "qualifier": { + "anyOf": [ + { + "$ref": "#/$defs/PhenotypeQualifier" + }, + { + "type": "null" + } + ], + "description": "Additional ontological terms that refine the description of the phenotype." + }, "related_notes": { "description": "Valid note types are available for viewing in the A-Team curation tool Controlled Vocabulary Terms Table (in the \"Phenotype annotation note types\" vocabulary) on the production environment (curation.alliancegenome.org). New terms can be added as needed.", "items": { @@ -24894,6 +25250,16 @@ "additionalProperties": false, "description": "Ingest class for an association between a gene and a phenotype", "properties": { + "affected_entity_dto": { + "anyOf": [ + { + "$ref": "#/$defs/AffectedEntityDTO" + }, + { + "type": "null" + } + ] + }, "condition_relation_dtos": { "items": { "$ref": "#/$defs/ConditionRelationDTO" @@ -25025,6 +25391,16 @@ "null" ] }, + "qualifier_dto": { + "anyOf": [ + { + "$ref": "#/$defs/PhenotypeQualifierDTO" + }, + { + "type": "null" + } + ] + }, "sgd_strain_background_identifier": { "description": "Identifier (curie/primary_external_id/mod_internal_id) of SGD strain background AGM", "type": [ @@ -32722,6 +33098,17 @@ "additionalProperties": false, "description": "An annotation asserting an association between a biological entity and a phenotype supported by evidence.", "properties": { + "affected_entity": { + "anyOf": [ + { + "$ref": "#/$defs/AffectedEntity" + }, + { + "type": "null" + } + ], + "description": "The entity (anatomical structure, developmental stage, and/or biological process) that is affected by the phenotype." + }, "condition_relations": { "items": { "$ref": "#/$defs/ConditionRelation" @@ -32863,6 +33250,17 @@ "null" ] }, + "qualifier": { + "anyOf": [ + { + "$ref": "#/$defs/PhenotypeQualifier" + }, + { + "type": "null" + } + ], + "description": "Additional ontological terms that refine the description of the phenotype." + }, "related_notes": { "description": "Valid note types are available for viewing in the A-Team curation tool Controlled Vocabulary Terms Table (in the \"Phenotype annotation note types\" vocabulary) on the production environment (curation.alliancegenome.org). New terms can be added as needed.", "items": { @@ -32902,6 +33300,229 @@ "title": "PhenotypeAnnotation", "type": "object" }, + "PhenotypeQualifier": { + "additionalProperties": false, + "description": "Ontological terms that refine the description of a phenotype.", + "properties": { + "created_by": { + "description": "The individual that created the entity.", + "type": [ + "string", + "null" + ] + }, + "date_created": { + "description": "The date on which an entity was created. This can be applied to nodes or edges.", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "date_updated": { + "description": "Date on which an entity was last modified.", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "db_date_created": { + "description": "The date on which an entity was created in the Alliance database. This is distinct from date_created, which represents the date when the entity was originally created (i.e. at the MOD for imported data).", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "db_date_updated": { + "description": "Date on which an entity was last modified in the Alliance database. This is distinct from date_updated, which represents the date when the entity was last modified and may predate import into the Alliance database.", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "internal": { + "description": "Classifies the entity as private (for internal use) or not (for public use).", + "type": "boolean" + }, + "obsolete": { + "description": "Entity is no longer current.", + "type": [ + "boolean", + "null" + ] + }, + "phenotype_qualifier_tag": { + "description": "Similar to phenotype_qualifier_term, but using a term from a vocabulary rather than a dedicated ontology. Intended for \"simple\" qualifications such as \"abnormal\", \"ameliorated\", \"exacerbated\", etc.", + "type": [ + "string", + "null" + ] + }, + "phenotype_qualifier_term": { + "description": "The main ontological term that refines the description of a phenotype.", + "type": [ + "string", + "null" + ] + }, + "phenotype_related_entity": { + "anyOf": [ + { + "$ref": "#/$defs/AffectedEntity" + }, + { + "type": "null" + } + ], + "description": "An affected entity that further refines the description of a phenotype." + }, + "updated_by": { + "description": "The individual that last modified the entity.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "internal" + ], + "then": { + "anyOf": [ + { + "properties": { + "phenotype_qualifier_term": {} + }, + "required": [ + "phenotype_qualifier_term" + ] + }, + { + "properties": { + "phenotype_qualifier_tag": {} + }, + "required": [ + "phenotype_qualifier_tag" + ] + } + ] + }, + "title": "PhenotypeQualifier", + "type": "object" + }, + "PhenotypeQualifierDTO": { + "additionalProperties": false, + "description": "Ingest class for a phenotype qualifier.", + "properties": { + "created_by_curie": { + "description": "Curie of the Person object representing the individual that created the entity", + "type": [ + "string", + "null" + ] + }, + "date_created": { + "description": "The date on which an entity was created. This can be applied to nodes or edges.", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "date_updated": { + "description": "Date on which an entity was last modified.", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "db_date_created": { + "description": "The date on which an entity was created in the Alliance database. This is distinct from date_created, which represents the date when the entity was originally created (i.e. at the MOD for imported data).", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "db_date_updated": { + "description": "Date on which an entity was last modified in the Alliance database. This is distinct from date_updated, which represents the date when the entity was last modified and may predate import into the Alliance database.", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "internal": { + "description": "Classifies the entity as private (for internal use) or not (for public use).", + "type": "boolean" + }, + "obsolete": { + "description": "Entity is no longer current.", + "type": [ + "boolean", + "null" + ] + }, + "qualifier_tag_name": { + "type": [ + "string", + "null" + ] + }, + "qualifier_term_curie": { + "type": [ + "string", + "null" + ] + }, + "related_entity_dto": { + "anyOf": [ + { + "$ref": "#/$defs/AffectedEntityDTO" + }, + { + "type": "null" + } + ] + }, + "updated_by_curie": { + "description": "Curie of the Person object representing the individual that updated the entity", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "internal" + ], + "then": { + "anyOf": [ + { + "properties": { + "qualifier_term_curie": {} + }, + "required": [ + "qualifier_term_curie" + ] + }, + { + "properties": { + "qualifier_tag_name": {} + }, + "required": [ + "qualifier_tag_name" + ] + } + ] + }, + "title": "PhenotypeQualifierDTO", + "type": "object" + }, "PhenotypeTerm": { "additionalProperties": false, "description": "An ontology term representing a characteristic of an organism. This may or may not be expressed as a difference in comparison to a reference organism.", diff --git a/model/schema/phenotypeAndDiseaseAnnotation.yaml b/model/schema/phenotypeAndDiseaseAnnotation.yaml index c0426aecc..e8516259f 100644 --- a/model/schema/phenotypeAndDiseaseAnnotation.yaml +++ b/model/schema/phenotypeAndDiseaseAnnotation.yaml @@ -13,6 +13,7 @@ imports: - gene - allele - ontologyTerm + - expression prefixes: @@ -83,6 +84,92 @@ classes: reference_curie: required: true + AffectedEntity: + is_a: AuditedObject + description: >- + An entity that is affected by a phenotype. + slots: + - phenotype_location + - phenotype_stage + - phenotype_process + comments: >- + In the future, other slots may be added to allow referring to more kinds of + entities, e.g. a slot with a CHEBITerm range to allow stating that a + phenotype affects a particular chemical entity. + rules: + - postconditions: + any_of: + - slot_conditions: + phenotype_location: + required: true + - slot_conditions: + phenotype_stage: + required: true + - slot_conditions: + phenotype_process: + required: true + + AffectedEntityDTO: + is_a: AuditedObjectDTO + description: >- + Ingest class for an entity that is affected by a phenotype. + slots: + - phenotype_location_dto + - phenotype_stage_dto + - phenotype_process_curie + rules: + - postconditions: + any_of: + - slot_conditions: + phenotype_location_dto: + required: true + - slot_conditions: + phenotype_stage_dto: + required: true + - slot_conditions: + phenotype_process_curie: + required: true + + PhenotypeQualifier: + is_a: AuditedObject + description: >- + Ontological terms that refine the description of a phenotype. + slots: + - phenotype_qualifier_term + - phenotype_qualifier_tag + - phenotype_related_entity + rules: + - postconditions: + any_of: + - slot_conditions: + phenotype_qualifier_term: + required: true + - slot_conditions: + phenotype_qualifier_tag: + required: true + + PhenotypeQualifierDTO: + is_a: AuditedObjectDTO + description: >- + Ingest class for a phenotype qualifier. + attributes: + qualifier_term_curie: + range: string + qualifier_tag_name: + range: string + related_entity_dto: + range: AffectedEntityDTO + inlined: true + rules: + - postconditions: + any_of: + - slot_conditions: + qualifier_term_curie: + required: true + - slot_conditions: + qualifier_tag_name: + required: true + PhenotypeAnnotation: is_a: Annotation description: >- @@ -99,6 +186,15 @@ classes: statement of the phenotype from a post-composed terminology required: true range: string + affected_entity: + description: >- + The entity (anatomical structure, developmental stage, and/or biological process) that is affected by the + phenotype. + range: AffectedEntity + qualifier: + description: >- + Additional ontological terms that refine the description of the phenotype. + range: PhenotypeQualifier slot_usage: phenotype_terms: values_from: @@ -108,6 +204,7 @@ classes: - ZP - APO - FBcv + - XPO range: PhenotypeTerm examples: - value: HP:0002487 @@ -141,6 +238,13 @@ classes: - phenotype_term_curies - cross_reference_dto - negated + attributes: + affected_entity_dto: + range: AffectedEntityDTO + inlined: true + qualifier_dto: + range: PhenotypeQualifierDTO + inlined: true GenePhenotypeAnnotation: description: >- @@ -846,7 +950,96 @@ slots: required: true domain: PhenotypeAnnotation range: BiologicalEntity - + + phenotype_location: + description: >- + The anatomical site that is affected by a phenotype. + domain: AffectedEntity + range: AnatomicalSite + + phenotype_location_dto: + description: >- + The anatomical site that is affected by a phenotype (submitted). + domain: AffectedEntityDTO + range: AnatomicalSiteDTO + inlined: true + + phenotype_process: + description: + The biological process that is affected by a phenotype. + domain: AffectedEntity + range: GOTerm + comments: >- + The model will accept any GO term in any branch, but should one wish to + indicate that a phenotype affects a cellular component, this should be + done using the location.cellular_component slot rather than here. + + phenotype_process_curie: + description: + The biological process that is affected by a phenotype (submitted). + domain: AffectedEntityDTO + range: string + + phenotype_qualifier_term: + description: >- + The main ontological term that refines the description of a phenotype. + domain: PhenotypeQualifier + range: OntologyTerm + values_from: + - WBPhenotype + - APO + - FBcv + - PATO + + phenotype_qualifier_term_curie: + domain: PhenotypeQualifierDTO + range: string + + phenotype_qualifier_tag_name: + domain: PhenotypeQualifierDTO + range: string + + phenotype_related_entity_dto: + domain: PhenotypeQualifierDTO + range: AffectedEntityDTO + inlined: true + + phenotype_qualifier_tag: + description: >- + Similar to phenotype_qualifier_term, but using a term from a vocabulary + rather than a dedicated ontology. Intended for "simple" qualifications + such as "abnormal", "ameliorated", "exacerbated", etc. + domain: PhenotypeQualifier + range: VocabularyTerm + + phenotype_related_entity: + description: >- + An affected entity that further refines the description of a phenotype. + domain: PhenotypeQualifier + range: AffectedEntity + + phenotype_stage: + description: >- + The developmental stage that is affected by a phenotype. + domain: AffectedEntity + range: TemporalContext + + phenotype_stage_dto: + description: >- + The developmental stage that is affected by a phenotype (submitted). + domain: AffectedEntityDTO + range: TemporalContextDTO + inlined: true + + + + phenotype_statement: + description: >- + For MODs that curate to post-composed phenotype expressions composed + of ontology terms and other necessary information (e.g. vocabularies, + free text). This field captures the free text phenotype statement. + range: string + phenotype_terms: description: >- The phenotype ontology term used to describe the phenotype of an organism @@ -861,13 +1054,6 @@ slots: range: string multivalued: true - phenotype_statement: - description: >- - For MODs that curate to post-composed phenotype expressions composed - of ontology terms and other necessary information (e.g. vocabularies, - free text). This field captures the free text phenotype statement. - range: string - sgd_strain_background: range: AffectedGenomicModel