diff --git a/json-schema-autogen/anatomical_structure.json b/json-schema-autogen/anatomical_structure.json index b00e2985..77fc0912 100644 --- a/json-schema-autogen/anatomical_structure.json +++ b/json-schema-autogen/anatomical_structure.json @@ -23,7 +23,10 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "description": { "type": "string" @@ -53,6 +56,9 @@ }, { "type": "string" + }, + { + "type": "null" } ], "type": "string" @@ -82,7 +88,10 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "description": { "type": "string" @@ -112,6 +121,9 @@ }, { "type": "string" + }, + { + "type": "null" } ], "type": "string" @@ -151,7 +163,10 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "description": { "type": "string" @@ -169,6 +184,9 @@ }, { "type": "string" + }, + { + "type": "null" } ], "type": "string" @@ -186,12 +204,18 @@ }, "x_resolution": { "description": "The resolution (length / pixel) in along the x axis (numerical value part).", - "type": "number" + "type": [ + "number", + "null" + ] }, "x_size": { "description": "The number of pixels/voxels (size) along the x axis.", "minimum": 1, - "type": "integer" + "type": [ + "integer", + "null" + ] }, "y_direction": { "$ref": "#/$defs/ANATOMICALDIRECTION", @@ -199,12 +223,18 @@ }, "y_resolution": { "description": "The resolution (length / pixel) in along the y axis (numerical value part).", - "type": "number" + "type": [ + "number", + "null" + ] }, "y_size": { "description": "The number of pixels/voxels (size) along the y axis.", "minimum": 1, - "type": "integer" + "type": [ + "integer", + "null" + ] }, "z_direction": { "$ref": "#/$defs/ANATOMICALDIRECTION", @@ -212,12 +242,18 @@ }, "z_resolution": { "description": "The resolution (length / pixel) in along the z axis (numerical value part).", - "type": "number" + "type": [ + "number", + "null" + ] }, "z_size": { "description": "The number of pixels/voxels (size) along the y axis.", "minimum": 1, - "type": "integer" + "type": [ + "integer", + "null" + ] } }, "required": [ @@ -251,7 +287,10 @@ "voxel_count": { "description": "The number of voxels (3D pixels) spanned by the parcellation annotation (optional).", "minimum": 0, - "type": "integer" + "type": [ + "integer", + "null" + ] } }, "required": [ @@ -308,7 +347,10 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "description": { "type": "string" @@ -362,6 +404,9 @@ }, { "type": "string" + }, + { + "type": "null" } ], "type": "string" @@ -373,6 +418,9 @@ }, { "type": "string" + }, + { + "type": "null" } ], "description": "Reference to the general (non versioned) parcellation atlas for which the parcellation atlas is a specific version release of.", @@ -400,7 +448,10 @@ "properties": { "color": { "description": "A string representing to hex triplet code of a color", - "type": "string" + "type": [ + "string", + "null" + ] }, "part_of_parcellation_color_scheme": { "anyOf": [ @@ -445,7 +496,10 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "description": { "type": "string" @@ -463,6 +517,9 @@ }, { "type": "string" + }, + { + "type": "null" } ], "type": "string" @@ -504,7 +561,10 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "description": { "type": "string" @@ -516,6 +576,9 @@ }, { "type": "string" + }, + { + "type": "null" } ], "description": "Reference to the parent parcellation term for which the parcellation term is a child ( spatially part) of", @@ -530,7 +593,10 @@ "ordinal": { "description": "Ordinal of the parcellation term among other terms within the context of the associated parcellation terminology.", "minimum": 0, - "type": "integer" + "type": [ + "integer", + "null" + ] }, "part_of_parcellation_term_set": { "anyOf": [ @@ -546,7 +612,10 @@ }, "symbol": { "description": "Symbol representing a parcellation term.", - "type": "string" + "type": [ + "string", + "null" + ] } }, "required": [ @@ -569,7 +638,10 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "description": { "type": "string" @@ -581,6 +653,9 @@ }, { "type": "string" + }, + { + "type": "null" } ], "description": "Reference to the parent parcellation term set for which the parcellation term set is a child (lower taxonomic rank) of.", @@ -595,7 +670,10 @@ "ordinal": { "description": "Ordinal of the parcellation term set among other term sets within the context of the associated parcellation terminology.", "minimum": 0, - "type": "integer" + "type": [ + "integer", + "null" + ] }, "part_of_parcellation_terminology": { "anyOf": [ @@ -630,7 +708,10 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "description": { "type": "string" @@ -648,6 +729,9 @@ }, { "type": "string" + }, + { + "type": "null" } ], "type": "string" diff --git a/json-schema-autogen/assertion_evidence.json b/json-schema-autogen/assertion_evidence.json index b0950580..5d267a2c 100644 --- a/json-schema-autogen/assertion_evidence.json +++ b/json-schema-autogen/assertion_evidence.json @@ -7,15 +7,28 @@ "endedAtTime": { "description": "The prov:endedAtTime establishes the relationship between prov:Activity and xsd:DateTime that allows one to specify the time when the activity ended.", "format": "date-time", - "type": "string" + "type": [ + "string", + "null" + ] }, "startedAtTime": { "description": "The prov:startedAtTime establishes the relationship between prov:Activity and xsd:DateTime that allows one to specify the time when the activity started.", "format": "date-time", - "type": "string" + "type": [ + "string", + "null" + ] }, "was_associate_with": { - "$ref": "#/$defs/Agent" + "anyOf": [ + { + "$ref": "#/$defs/Agent" + }, + { + "type": "null" + } + ] } }, "title": "Activity", @@ -26,7 +39,14 @@ "description": "An agent is something that bears some form of responsibility for an activity taking place, for the existence of an entity, or for another agent's activity.", "properties": { "has_identifier": { - "$ref": "#/$defs/Identifier" + "anyOf": [ + { + "$ref": "#/$defs/Identifier" + }, + { + "type": "null" + } + ] } }, "title": "Agent", @@ -43,25 +63,52 @@ "description": "A statement made by a particular agent on a particular occasion that a particular proposition is true, based on the evaluation of one or more lines of evidence.", "properties": { "has_annotation": { - "$ref": "#/$defs/Annotation" + "anyOf": [ + { + "$ref": "#/$defs/Annotation" + }, + { + "type": "null" + } + ] }, "has_assertion_category": { "$ref": "#/$defs/Categories", "description": "The brainkb:hasAssertionCategory property relates brainkb:Evidence and brainkb:Categories, specifying the classification or category that the assertion belongs to." }, "has_assertion_description": { - "type": "string" + "type": [ + "string", + "null" + ] }, "has_assertion_summary": { "description": "The brainkb:has_assertion_text property relates an eco:Assertion to an xsd:string, providing a textual excerpt of the assertion being made.", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_evidence_line": { - "$ref": "#/$defs/EvidenceLine", + "anyOf": [ + { + "$ref": "#/$defs/EvidenceLine" + }, + { + "type": "null" + } + ], "description": "A relationship between an assertion or proposition and an evidence line used in evaluating its validity." }, "was_generated_by": { - "$ref": "#/$defs/Activity" + "anyOf": [ + { + "$ref": "#/$defs/Activity" + }, + { + "type": "null" + } + ] } }, "title": "Assertion", @@ -113,10 +160,20 @@ "description": "A collection of information content entities intended to be understood together as a whole", "properties": { "identifier": { - "type": "string" + "type": [ + "string", + "null" + ] }, "reference": { - "$ref": "#/$defs/Document" + "anyOf": [ + { + "$ref": "#/$defs/Document" + }, + { + "type": "null" + } + ] } }, "title": "Document", @@ -137,7 +194,14 @@ "description": "", "properties": { "reference": { - "$ref": "#/$defs/Document" + "anyOf": [ + { + "$ref": "#/$defs/Document" + }, + { + "type": "null" + } + ] } }, "title": "EvidenceItem", @@ -159,14 +223,31 @@ "$ref": "#/$defs/Categories" }, "has_evidence_item": { - "$ref": "#/$defs/EvidenceItem", + "anyOf": [ + { + "$ref": "#/$defs/EvidenceItem" + }, + { + "type": "null" + } + ], "description": "A relation holding between an evidence line and an individual information entity that contributes to the argument it represents." }, "has_evidenceline_description": { - "type": "string" + "type": [ + "string", + "null" + ] }, "was_generated_by": { - "$ref": "#/$defs/Activity" + "anyOf": [ + { + "$ref": "#/$defs/Activity" + }, + { + "type": "null" + } + ] } }, "title": "EvidenceLine", @@ -189,7 +270,14 @@ "description": "", "properties": { "has_identifier": { - "$ref": "#/$defs/Identifier" + "anyOf": [ + { + "$ref": "#/$defs/Identifier" + }, + { + "type": "null" + } + ] } }, "title": "Group", @@ -212,7 +300,14 @@ "description": "", "properties": { "has_identifier": { - "$ref": "#/$defs/Identifier" + "anyOf": [ + { + "$ref": "#/$defs/Identifier" + }, + { + "type": "null" + } + ] } }, "title": "Organization", @@ -223,10 +318,24 @@ "description": "", "properties": { "has_identifier": { - "$ref": "#/$defs/Identifier" + "anyOf": [ + { + "$ref": "#/$defs/Identifier" + }, + { + "type": "null" + } + ] }, "member": { - "$ref": "#/$defs/Organization" + "anyOf": [ + { + "$ref": "#/$defs/Organization" + }, + { + "type": "null" + } + ] } }, "title": "Person", @@ -243,7 +352,14 @@ "description": "", "properties": { "has_identifier": { - "$ref": "#/$defs/Identifier" + "anyOf": [ + { + "$ref": "#/$defs/Identifier" + }, + { + "type": "null" + } + ] } }, "title": "SoftwareAgent", diff --git a/json-schema-autogen/genome_annotation.json b/json-schema-autogen/genome_annotation.json index 08abd733..67322045 100644 --- a/json-schema-autogen/genome_annotation.json +++ b/json-schema-autogen/genome_annotation.json @@ -13,26 +13,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -40,38 +55,56 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -88,19 +121,28 @@ "items": { "$ref": "#/$defs/GeneAnnotation" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "genome_annotations": { "items": { "$ref": "#/$defs/GenomeAnnotation" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "genome_assemblies": { "items": { "$ref": "#/$defs/GenomeAssembly" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "title": "AnnotationCollection", @@ -119,26 +161,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "has_attribute_type": { "description": "connects an attribute to a class that describes it", @@ -146,14 +203,20 @@ }, "has_qualitative_value": { "description": "connects an attribute to a value", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_quantitative_value": { "description": "connects an attribute to a value", "items": { "$ref": "#/$defs/QuantityValue" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -161,38 +224,56 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "The human-readable 'attribute name' can be set to a string which reflects its context of interpretation, e.g. SEPIO evidence/provenance/confidence annotation or it can default to the name associated with the 'has attribute type' slot ontology term.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -233,7 +314,10 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "checksum_algorithm": { "$ref": "#/$defs/DigestType", @@ -241,18 +325,27 @@ }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -260,21 +353,33 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "value": { "description": "The checksum value obtained from a specific cryotographic hash function.", - "type": "string" + "type": [ + "string", + "null" + ] } }, "required": [ @@ -296,34 +401,55 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "creation_date": { "description": "date on which an entity was created. This can be applied to nodes or edges", "format": "date", - "type": "string" + "type": [ + "string", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "format": { - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -331,44 +457,68 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "license": { - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "rights": { - "type": "string" + "type": [ + "string", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -400,30 +550,48 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "has_biological_sequence": { "description": "connects a genomic feature to its sequence", - "type": "string" + "type": [ + "string", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -434,50 +602,77 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "in_taxon_label": { "description": "The human readable scientific name for the taxon of the entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "symbol": { "description": "Symbol for a particular thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -499,30 +694,48 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "has_biological_sequence": { "description": "connects a genomic feature to its sequence", - "type": "string" + "type": [ + "string", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -533,15 +746,24 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "in_taxon_label": { "description": "The human readable scientific name for the taxon of the entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "molecular_type": { "anyOf": [ @@ -550,20 +772,29 @@ }, { "type": "string" + }, + { + "type": "null" } ], "type": "string" }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "referenced_in": { "anyOf": [ @@ -579,31 +810,46 @@ }, "source_id": { "description": "The authority specific identifier.", - "type": "string" + "type": [ + "string", + "null" + ] }, "symbol": { "description": "Symbol for a particular thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -626,30 +872,48 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "has_biological_sequence": { "description": "connects a genomic feature to its sequence", - "type": "string" + "type": [ + "string", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -660,46 +924,70 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "in_taxon_label": { "description": "The human readable scientific name for the taxon of the entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -725,21 +1013,33 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "content_url": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "digest": { "description": "Stores checksum information.", @@ -754,22 +1054,34 @@ ], "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "has_biological_sequence": { "description": "connects a genomic feature to its sequence", - "type": "string" + "type": [ + "string", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -780,26 +1092,41 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "in_taxon_label": { "description": "The human readable scientific name for the taxon of the entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "reference_assembly": { "anyOf": [ @@ -818,23 +1145,35 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "version": { - "type": "string" + "type": [ + "string", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -857,26 +1196,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -887,53 +1241,83 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "in_taxon_label": { "description": "The human readable scientific name for the taxon of the entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "strain": { "description": "The genetic variant or subtype of a species or organism.", - "type": "string" + "type": [ + "string", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "version": { - "type": "string" + "type": [ + "string", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -955,26 +1339,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -982,38 +1381,56 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -1035,26 +1452,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -1062,38 +1494,56 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -1115,29 +1565,47 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "has_taxonomic_rank": { - "type": "string" + "type": [ + "string", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -1145,38 +1613,56 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -1198,26 +1684,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -1225,38 +1726,56 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -1278,26 +1797,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -1305,38 +1839,56 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -1351,11 +1903,17 @@ "properties": { "has_numeric_value": { "description": "connects a quantity value to a number", - "type": "number" + "type": [ + "number", + "null" + ] }, "has_unit": { "description": "connects a quantity value to a unit", - "type": "string" + "type": [ + "string", + "null" + ] } }, "title": "QuantityValue", @@ -1387,19 +1945,28 @@ "items": { "$ref": "#/$defs/GeneAnnotation" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "genome_annotations": { "items": { "$ref": "#/$defs/GenomeAnnotation" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "genome_assemblies": { "items": { "$ref": "#/$defs/GenomeAssembly" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "title": "genome-annotation-schema", diff --git a/json-schema-autogen/library_generation.json b/json-schema-autogen/library_generation.json index 4c2a9c0e..9c0e5af2 100644 --- a/json-schema-autogen/library_generation.json +++ b/json-schema-autogen/library_generation.json @@ -13,26 +13,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -40,38 +55,56 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -109,11 +142,17 @@ }, "amplified_cDNA_amplified_quantity_ng": { "description": "Amount of cDNA produced after cDNA amplification measured in nanograms.", - "type": "number" + "type": [ + "number", + "null" + ] }, "amplified_cDNA_percent_cDNA_longer_than_400bp": { "description": "QC metric to measure mRNA degradation of cDNA. Higher % is higher quality starting material. Over 400bp is used as a universal cutoff for intact (full length) vs degraded cDNA and is a common output from Bioanalyzer and Fragment Analyzer elecropheragrams.", - "type": "number" + "type": [ + "number", + "null" + ] }, "category": { "description": "Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.", @@ -124,26 +163,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -151,46 +205,70 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "Name of a collection of cDNA molecules derived and amplified from an input barcoded_cell_sample. These cDNA molecules represent the gene expression of each cell, with all cDNA molecules from a given cell retaining that cell's unique barcode from the cell barcoding step. This is a necessary step for GEX methods but is not used for ATAC methods.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "was_derived_from": { "description": "The input barcoded cell sample from which amplified cDNA was derived from.", - "type": "string" + "type": [ + "string", + "null" + ] }, "was_generated_by": { "description": "The cDNA amplification process from which the amplified cDNA was generated by.", - "type": "string" + "type": [ + "string", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -223,26 +301,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "has_attribute_type": { "description": "connects an attribute to a class that describes it", @@ -250,14 +343,20 @@ }, "has_qualitative_value": { "description": "connects an attribute to a value", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_quantitative_value": { "description": "connects an attribute to a value", "items": { "$ref": "#/$defs/QuantityValue" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -265,38 +364,56 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "The human-readable 'attribute name' can be set to a string which reflects its context of interpretation, e.g. SEPIO evidence/provenance/confidence annotation or it can default to the name associated with the 'has attribute type' slot ontology term.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -319,30 +436,48 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "expected_cell_capture": { "description": "Expected number of cells/nuclei of a barcoded_cell_sample that will be barcoded and available for sequencing. This is a derived number from 'Barcoded cell input quantity count' that is dependent on the \"capture rate\" of the barcoding method. It is usually a calculated fraction of the 'Barcoded cell input quantity count' going into the barcoding method.", - "type": "integer" + "type": [ + "integer", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -350,31 +485,46 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "Name of a collection of barcoded cells. Input will be either dissociated_cell_sample or enriched_cell_sample. Cell barcodes are only guaranteed to be unique within this one collection. One dissociated_cell_sample or enriched_cell_sample can lead to multiple barcoded_cell_samples.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "was_derived_from": { "description": "The input dissociated or enriched cell sample(s) from which the barcoded cell sample was derived from.", @@ -389,18 +539,27 @@ } ] }, - "type": "array" + "type": [ + "array", + "null" + ] }, "was_generated_by": { "description": "The barcoding process from which the barcoded cell sample is generated from.", - "type": "string" + "type": [ + "string", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -433,26 +592,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -460,46 +634,70 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "Name of a thick flat piece of brain tissue obtained by slicing a whole brain, brain hemisphere or subdivision with a blade at regular interval. When multiple brain slabs are obtained from the slicing process, an ordinal is assigned to provide information about the relative positioning of the slabs.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "was_derived_from": { - "$ref": "#/$defs/ProvEntity", "anyOf": [ { "type": "string" }, { "type": "string" + }, + { + "type": "null" } ], "description": "The donor from which the brain slab was derived from." }, "was_generated_by": { - "$ref": "#/$defs/ProvActivity", + "anyOf": [ + { + "$ref": "#/$defs/ProvActivity" + }, + { + "type": "null" + } + ], "description": "Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation." }, "xref": { @@ -507,7 +705,10 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -522,16 +723,25 @@ "properties": { "amplified_cDNA_PCR_cycles": { "description": "Number of PCR cycles used during cDNA amplification for this cDNA.", - "type": "integer" + "type": [ + "integer", + "null" + ] }, "cDNA_amplification_process_date": { "description": "Date of cDNA amplification.", "format": "date", - "type": "string" + "type": [ + "string", + "null" + ] }, "cDNA_amplification_set": { "description": "cDNA amplification set, containing multiple amplified_cDNA_names that were processed at the same time.", - "type": "string" + "type": [ + "string", + "null" + ] }, "category": { "description": "Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.", @@ -542,26 +752,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -569,42 +794,63 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "used": { "description": "The input barcoded cell sample from which amplified cDNA was derived from.", - "type": "string" + "type": [ + "string", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -619,11 +865,17 @@ "properties": { "barcoded_cell_input_quantity_count": { "description": "Number of enriched or dissociated cells/nuclei going into the barcoding process.", - "type": "integer" + "type": [ + "integer", + "null" + ] }, "barcoded_cell_sample_port_well": { "description": "Specific position of the loaded port of the 10x chip. An Enriched or Dissociated Cell Sample is loaded into a port on a chip (creating a Barcoded Cell Sample). Can be left null for non-10x methods.", - "type": "string" + "type": [ + "string", + "null" + ] }, "category": { "description": "Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.", @@ -634,26 +886,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -661,7 +928,10 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "method": { "$ref": "#/$defs/BarcodedCellSampleTechnique", @@ -669,31 +939,46 @@ }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "process_date": { "description": "Date of cell barcoding process.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "used": { "description": "The input dissociated or enriched cell sample(s) from which the barcoded cell sample was derived from.", @@ -708,14 +993,20 @@ } ] }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -737,26 +1028,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -764,49 +1070,73 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "process_date": { "description": "Date of cell dissociation process.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "used": { "description": "The input tissue sample(s) from which the dissociated cell sample was derived from.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -828,26 +1158,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -855,49 +1200,73 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "process_date": { "description": "Date of cell enrichment process.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "used": { "description": "The input dissociated cell sample(s) from which the enriched cell sample was derived from.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -919,7 +1288,10 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "checksum_algorithm": { "$ref": "#/$defs/DigestType", @@ -927,18 +1299,27 @@ }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -946,21 +1327,33 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "value": { "description": "The checksum value obtained from a specific cryotographic hash function.", - "type": "string" + "type": [ + "string", + "null" + ] } }, "required": [ @@ -982,34 +1375,55 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "creation_date": { "description": "date on which an entity was created. This can be applied to nodes or edges", "format": "date", - "type": "string" + "type": [ + "string", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "format": { - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -1017,44 +1431,68 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "license": { - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "rights": { - "type": "string" + "type": [ + "string", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -1086,48 +1524,86 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "content_url": { - "type": "string" + "type": [ + "string", + "null" + ] }, "creation_date": { "description": "date on which an entity was created. This can be applied to nodes or edges", "format": "date", - "type": "string" + "type": [ + "string", + "null" + ] }, "data_type": { "description": "The type of data in the file", - "type": "string" + "type": [ + "string", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "digest": { "description": "Stores checksum information.", "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string" + } + ], "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "format": { - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -1135,44 +1611,75 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "license": { - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "rights": { - "type": "string" + "type": [ + "string", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "was_derived_from": { "description": "A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "was_generated_by": { - "$ref": "#/$defs/ProvActivity", + "anyOf": [ + { + "$ref": "#/$defs/ProvActivity" + }, + { + "type": "null" + } + ], "description": "Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation." }, "xref": { @@ -1180,7 +1687,10 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -1202,26 +1712,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -1229,42 +1754,63 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "used": { "description": "The brain slab that was annotated by the delineation process.", - "type": "string" + "type": [ + "string", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -1279,7 +1825,10 @@ "properties": { "annotates": { "description": "The brain slab that was annotated by the delineation process.", - "type": "string" + "type": [ + "string", + "null" + ] }, "category": { "description": "Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.", @@ -1290,22 +1839,34 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -1313,25 +1874,44 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "Name of a polygon annotated on a brain slab image delineating a region of interest (ROI) for a tissue sample dissectioning.", - "type": "string" + "type": [ + "string", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "was_derived_from": { - "$ref": "#/$defs/ProvEntity", + "anyOf": [ + { + "$ref": "#/$defs/ProvEntity" + }, + { + "type": "null" + } + ], "description": "A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity." }, "was_generated_by": { "description": "The delineation process from which the dissection ROI polygon was generated by.", - "type": "string" + "type": [ + "string", + "null" + ] } }, "required": [ @@ -1353,15 +1933,24 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "dissociated_cell_oligo_tag_name": { "$ref": "#/$defs/DissociatedCellSampleCellLabelBarcode", @@ -1373,14 +1962,20 @@ }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -1388,49 +1983,73 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "Name of a collection of dissociated cells or nuclei derived from dissociation of a tissue sample.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "was_derived_from": { "description": "The input tissue sample(s) from which dissociated cell sample was derived from.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "was_generated_by": { "description": "The cell dissociation process from which the dissociated cell sample was generated by.", - "type": "string" + "type": [ + "string", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -1483,7 +2102,10 @@ "properties": { "age_at_death_description": { "description": "Text description of the age of death following typical scientific convention for the species or developmental stage. For example: P56, E11.5", - "type": "string" + "type": [ + "string", + "null" + ] }, "age_at_death_reference_point": { "$ref": "#/$defs/AgeAtDeathReferencePoint", @@ -1495,7 +2117,10 @@ }, "age_at_death_value": { "description": "The value representing the donor age from the reference point.", - "type": "number" + "type": [ + "number", + "null" + ] }, "biological_sex": { "$ref": "#/$defs/Sex", @@ -1510,30 +2135,48 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "donor_species": { "description": "Species of donor.", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -1544,46 +2187,81 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "in_taxon_label": { "description": "The human readable scientific name for the taxon of the entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "Name of person or organism that is the source of a biological sample for scientific study. Many biological samples are generated from a single donor.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "was_derived_from": { - "$ref": "#/$defs/ProvEntity", + "anyOf": [ + { + "$ref": "#/$defs/ProvEntity" + }, + { + "type": "null" + } + ], "description": "A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity." }, "was_generated_by": { - "$ref": "#/$defs/ProvActivity", + "anyOf": [ + { + "$ref": "#/$defs/ProvActivity" + }, + { + "type": "null" + } + ], "description": "Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation." }, "xref": { @@ -1591,7 +2269,10 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -1613,38 +2294,62 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "cell_source_oligo_name": { "description": "Name of cell source oligo used in cell plexing. The oligo molecularly tags all the cells in the enriched cell sample and allows separate enriched cell samples to be combined downstream in the barcoded cell sample. The oligo name is associated with a sequence in a lookup table. This sequence will be needed during alignment to associate reads with the parent source enriched cell sample.", - "type": "string" + "type": [ + "string", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "enrichment_population": { "description": "Actual percentage of cells as a result of using set of fluorescent marker label(s) to enrich dissociated_cell_sample with desired mix of cell populations. This plan can also be used to describe 'No FACS' where no enrichment was performed. This is a property of enriched_cell_prep_container.", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "histone_modification_marker": { "description": "Histone modification marker antibodies (eg H3K27ac, H3K27me3, H3K9me3) used in conjunction with an Enriched Cell Source Barcode in order to combine multiple Enriched Cell Populations before Barcoded Cell Sample step for 10xMultiome method. Each of the Histone antibodies captures an essential part of the epigenome.", - "type": "string" + "type": [ + "string", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -1652,31 +2357,46 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "Name of collection of enriched cells or nuclei after enrichment process (usually via FACS using the Enrichment Plan) applied to dissociated_cell_sample.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "was_derived_from": { "description": "The dissociated or enriched cell sample(s) from which the enriched cell sample was derived from.", @@ -1691,16 +2411,21 @@ } ] }, - "type": "array" + "type": [ + "array", + "null" + ] }, "was_generated_by": { - "$ref": "#/$defs/ProvActivity", "anyOf": [ { "type": "string" }, { "type": "string" + }, + { + "type": "null" } ], "description": "The cell enrichment or sample splitting process from which the enriched cell sample was generated by." @@ -1710,7 +2435,10 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -1732,26 +2460,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -1759,42 +2502,63 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "used": { "description": "The enrichment cell sample splitting process from which the enriched cell sample was generated by.", - "type": "string" + "type": [ + "string", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -1816,30 +2580,48 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "has_biological_sequence": { "description": "connects a genomic feature to its sequence", - "type": "string" + "type": [ + "string", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -1850,50 +2632,77 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "in_taxon_label": { "description": "The human readable scientific name for the taxon of the entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "symbol": { "description": "Symbol for a particular thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -1915,30 +2724,48 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "has_biological_sequence": { "description": "connects a genomic feature to its sequence", - "type": "string" + "type": [ + "string", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -1949,46 +2776,70 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "in_taxon_label": { "description": "The human readable scientific name for the taxon of the entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -2014,26 +2865,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -2041,15 +2907,24 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "library_avg_size_bp": { "description": "Average size of the library in terms of base pairs. This is used to calculate the molarity before pooling and sequencing.", - "type": "integer" + "type": [ + "integer", + "null" + ] }, "library_concentration_nm": { "description": "Concentration of library in terms of nM (nMol/L). Number of molecules is needed for accurate pooling of the libraries and for generating the number of target reads/cell in sequencing.", - "type": "number" + "type": [ + "number", + "null" + ] }, "library_prep_pass_fail": { "$ref": "#/$defs/LibraryPrepPassFail", @@ -2057,58 +2932,84 @@ }, "library_quantification_fmol": { "description": "Amount of library generated in terms of femtomoles", - "type": "number" + "type": [ + "number", + "null" + ] }, "library_quantification_ng": { "description": "Amount of library generated in terms of nanograms", - "type": "number" + "type": [ + "number", + "null" + ] }, "name": { "description": "Name of a library, which is a collection of fragmented and barcode-indexed DNA molecules for sequencing. An index or barcode is typically introduced to enable identification of library origin to allow libraries to be pooled together for sequencing.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "was_derived_from": { - "$ref": "#/$defs/ProvEntity", "anyOf": [ { "type": "string" }, { "type": "string" + }, + { + "type": "null" } ], "description": "The input barcoded cell sample or amplified cDNA from which the library was derived from." }, "was_generated_by": { "description": "The library construction process from which the library was generated by.", - "type": "string" + "type": [ + "string", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -2130,26 +3031,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -2157,38 +3073,63 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "One library in the library pool. Each Library_aliquot_name in a library pool will have a unique R1/R2 index to allow for sequencing together then separating the sequencing output by originating library aliquot through the process of demultiplexing. The resulting demultiplexed fastq files will include the library_aliquot_name.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "was_derived_from": { "description": "The input library from which the library aliquot was derived from.", - "type": "string" + "type": [ + "string", + "null" + ] }, "was_generated_by": { - "$ref": "#/$defs/ProvActivity", + "anyOf": [ + { + "$ref": "#/$defs/ProvActivity" + }, + { + "type": "null" + } + ], "description": "Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation." }, "xref": { @@ -2196,7 +3137,10 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -2218,26 +3162,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -2245,16 +3204,25 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "library_creation_date": { "description": "Date of library construction.", "format": "date", - "type": "string" + "type": [ + "string", + "null" + ] }, "library_input_ng": { "description": "Amount of cDNA going into library construction in nanograms.", - "type": "number" + "type": [ + "number", + "null" + ] }, "library_method": { "$ref": "#/$defs/LibraryTechnique", @@ -2262,40 +3230,57 @@ }, "library_prep_set": { "description": "Library set, containing multiple library_names that were processed at the same time.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "used": { - "$ref": "#/$defs/ProvEntity", "anyOf": [ { "type": "string" }, { "type": "string" + }, + { + "type": "null" } ], "description": "The input barcoded cell sample or amplified cDNA from which the library was derived from." @@ -2305,7 +3290,10 @@ "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -2327,26 +3315,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -2354,53 +3357,80 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "library_pool_tube_internal_label": { "description": "Library Pool Tube local name. Label of the tube containing the library pool, which is made up of multiple library_aliquots. This is a Library Lab local tube name, before the pool is aliquoted to the Seq Core provided tube 'Library Pool Tube Name'.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "Library lab's library pool name. For some labs this may be the same as \"Libray pool tube local name\". Other labs distinguish between the local tube label of the library pool and the library pool name provided to SeqCore for tracking. Local Pool Name is used to communicate sequencing status between SeqCore and Library Labs.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "was_derived_from": { "description": "The input aliquot(s) from which the library pool was derived from.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "was_generated_by": { "description": "The pooling process from which the library pool was generated by.", - "type": "string" + "type": [ + "string", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -2422,26 +3452,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -2449,49 +3494,73 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "process_date": { "description": "Date of library pooling process.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "used": { "description": "The input aliquot(s) from which the library pool was derived from.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -3064,26 +4133,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -3091,38 +4175,56 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -3144,26 +4246,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -3171,38 +4288,56 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -3224,29 +4359,47 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "has_taxonomic_rank": { - "type": "string" + "type": [ + "string", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -3254,38 +4407,56 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -3307,26 +4478,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -3334,38 +4520,56 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -3387,26 +4591,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -3414,38 +4633,56 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -3460,11 +4697,17 @@ "properties": { "has_numeric_value": { "description": "connects a quantity value to a number", - "type": "number" + "type": [ + "number", + "null" + ] }, "has_unit": { "description": "connects a quantity value to a unit", - "type": "string" + "type": [ + "string", + "null" + ] } }, "title": "QuantityValue", @@ -3510,26 +4753,41 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -3537,46 +4795,70 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "A human-readable name for an attribute or entity.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "used": { "description": "The brain slab from which the tissue sample was dissected from.", - "type": "string" + "type": [ + "string", + "null" + ] }, "was_guided_by": { "description": "The dissection ROI polygon which was used to guide the tissue dissection.", - "type": "string" + "type": [ + "string", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ @@ -3598,30 +4880,48 @@ "pattern": "^bican:[A-Z][A-Za-z]+$", "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "deprecated": { "description": "A boolean flag indicating that an entity is no longer considered current or valid.", - "type": "boolean" + "type": [ + "boolean", + "null" + ] }, "description": { "description": "a human-readable description of an entity", - "type": "string" + "type": [ + "string", + "null" + ] }, "dissection_was_guided_by": { "description": "The dissection ROI polygon that was used to guide the dissection.", - "type": "string" + "type": [ + "string", + "null" + ] }, "full_name": { "description": "a long-form human readable name for a thing", - "type": "string" + "type": [ + "string", + "null" + ] }, "has_attribute": { "description": "connects any entity to an attribute", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "id": { "description": "A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI", @@ -3629,53 +4929,80 @@ }, "iri": { "description": "An IRI for an entity. This is determined by the id using expansion rules.", - "type": "string" + "type": [ + "string", + "null" + ] }, "name": { "description": "Identifier name for final intact piece of tissue before cell or nuclei prep. This piece of tissue will be used in dissociation and has an ROI associated with it.", - "type": "string" + "type": [ + "string", + "null" + ] }, "provided_by": { "description": "The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "synonym": { "description": "Alternate human-readable names for a thing", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "tissue_sample_structure": { "description": "Strucure of tissue sample.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "type": { "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] }, "was_derived_from": { "description": "The donor or brain slab from which the tissue sample was derived from.", - "type": "string" + "type": [ + "string", + "null" + ] }, "was_generated_by": { "description": "The dissection process from which the tissue sample was generated by.", - "type": "string" + "type": [ + "string", + "null" + ] }, "xref": { "description": "A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.", "items": { "type": "string" }, - "type": "array" + "type": [ + "array", + "null" + ] } }, "required": [ diff --git a/jsonld-context-autogen/anatomical_structure.context.jsonld b/jsonld-context-autogen/anatomical_structure.context.jsonld index 0e7dc546..23da6b9f 100644 --- a/jsonld-context-autogen/anatomical_structure.context.jsonld +++ b/jsonld-context-autogen/anatomical_structure.context.jsonld @@ -4,6 +4,7 @@ "source": "anatomical_structure.yaml" }, "@context": { + "xsd": "http://www.w3.org/2001/XMLSchema#", "AnS": "https://w3id.org/my-org/anatomical-structure-schema/", "PATO": { "@id": "http://purl.obolibrary.org/obo/PATO_", @@ -23,7 +24,7 @@ "@id": "measures" }, "category": { - "@type": "@id", + "@type": "xsd:anyURI", "@id": "category" }, "description": { @@ -32,7 +33,6 @@ "id": "@id", "unit": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -41,7 +41,6 @@ }, "x_direction": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -58,7 +57,6 @@ }, "y_direction": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -75,7 +73,6 @@ }, "z_direction": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" diff --git a/jsonld-context-autogen/assertion_evidence.context.jsonld b/jsonld-context-autogen/assertion_evidence.context.jsonld index 552ad74f..07cd57e5 100644 --- a/jsonld-context-autogen/assertion_evidence.context.jsonld +++ b/jsonld-context-autogen/assertion_evidence.context.jsonld @@ -4,6 +4,7 @@ "source": "assertion_evidence.yaml" }, "@context": { + "xsd": "http://www.w3.org/2001/XMLSchema#", "bican": "https://identifiers.org/brain-bican/vocab/", "braiankb": "http://example.org/braiankb/", "brainkb": "https://brainkb.org/", @@ -48,7 +49,6 @@ }, "has_assertion_category": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -62,12 +62,11 @@ "@id": "has_assertion_summary" }, "identifier": { - "@type": "@id", + "@type": "xsd:anyURI", "@id": "datacite:identifier" }, "evidence_direction": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -76,7 +75,6 @@ }, "evidence_line_strength": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -85,7 +83,6 @@ }, "has_evidence_category": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" diff --git a/jsonld-context-autogen/genome_annotation.context.jsonld b/jsonld-context-autogen/genome_annotation.context.jsonld index 1525e3c8..451268ca 100644 --- a/jsonld-context-autogen/genome_annotation.context.jsonld +++ b/jsonld-context-autogen/genome_annotation.context.jsonld @@ -4,6 +4,7 @@ "source": "genome_annotation.yaml" }, "@context": { + "xsd": "http://www.w3.org/2001/XMLSchema#", "AGRKB": "https://www.alliancegenome.org/", "AspGD": { "@id": "http://www.aspergillusgenome.org/cgi-bin/locus.pl?dbid=", @@ -192,23 +193,21 @@ "rdfs": "http://www.w3.org/2000/01/rdf-schema#", "schema": "http://schema.org/", "skos": "http://www.w3.org/2004/02/skos/core#", - "xsd": "http://www.w3.org/2001/XMLSchema#", "@vocab": "https://identifiers.org/brain-bican/vocab/", "annotations": { - "@type": "@id", + "@type": "bican:GeneAnnotation", "@id": "annotations" }, "genome_annotations": { - "@type": "@id", + "@type": "bican:GenomeAnnotation", "@id": "genome_annotations" }, "genome_assemblies": { - "@type": "@id", + "@type": "bican:GenomeAssembly", "@id": "genome_assemblies" }, "authority": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -220,7 +219,6 @@ }, "checksum_algorithm": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -282,7 +280,7 @@ "@id": "biolink:has_qualitative_value" }, "has_quantitative_value": { - "@type": "@id", + "@type": "biolink:QuantityValue", "@id": "biolink:has_quantitative_value" }, "has_taxonomic_rank": { @@ -302,7 +300,7 @@ "@id": "biolink:in_taxon_label" }, "iri": { - "@type": "@id", + "@type": "xsd:anyURI", "@id": "biolink:iri" }, "license": { @@ -350,7 +348,7 @@ "@id": "biolink:version" }, "xref": { - "@type": "@id", + "@type": "xsd:anyURI", "@id": "biolink:xref" }, "Activity": { diff --git a/jsonld-context-autogen/library_generation.context.jsonld b/jsonld-context-autogen/library_generation.context.jsonld index ccc63588..0288bce3 100644 --- a/jsonld-context-autogen/library_generation.context.jsonld +++ b/jsonld-context-autogen/library_generation.context.jsonld @@ -4,6 +4,7 @@ "source": "library_generation.yaml" }, "@context": { + "xsd": "http://www.w3.org/2001/XMLSchema#", "AGRKB": "https://www.alliancegenome.org/", "AspGD": { "@id": "http://www.aspergillusgenome.org/cgi-bin/locus.pl?dbid=", @@ -197,11 +198,9 @@ "schema": "http://schema.org/", "skos": "http://www.w3.org/2004/02/skos/core#", "spdx": "http://spdx.org/rdf/terms#", - "xsd": "http://www.w3.org/2001/XMLSchema#", "@vocab": "https://identifiers.org/brain-bican/vocab/", "amplified_cDNA_RNA_amplification_pass_fail": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -240,7 +239,6 @@ }, "method": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -255,7 +253,6 @@ }, "checksum_algorithm": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -292,7 +289,6 @@ }, "dissociated_cell_sample_cell_prep_type": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -301,7 +297,6 @@ }, "dissociated_cell_oligo_tag_name": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -313,7 +308,6 @@ }, "age_at_death_reference_point": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -322,7 +316,6 @@ }, "age_at_death_unit": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -335,7 +328,6 @@ }, "biological_sex": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -380,7 +372,7 @@ "@id": "biolink:has_qualitative_value" }, "has_quantitative_value": { - "@type": "@id", + "@type": "biolink:QuantityValue", "@id": "biolink:has_quantitative_value" }, "has_taxonomic_rank": { @@ -400,7 +392,7 @@ "@id": "biolink:in_taxon_label" }, "iri": { - "@type": "@id", + "@type": "xsd:anyURI", "@id": "biolink:iri" }, "library_avg_size_bp": { @@ -413,7 +405,6 @@ }, "library_prep_pass_fail": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -430,7 +421,6 @@ }, "R1_R2_index_name": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -443,7 +433,6 @@ }, "library_method": { "@context": { - "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" @@ -504,22 +493,22 @@ "@id": "rdf:type" }, "used": { - "@type": "@id", + "@type": "prov:Entity", "@id": "prov:used" }, "version": { "@id": "biolink:version" }, "was_derived_from": { - "@type": "@id", + "@type": "prov:Entity", "@id": "prov:wasDerivedFrom" }, "was_generated_by": { - "@type": "@id", + "@type": "prov:Activity", "@id": "prov:wasGeneratedBy" }, "xref": { - "@type": "@id", + "@type": "xsd:anyURI", "@id": "biolink:xref" }, "Activity": { diff --git a/models_py-autogen/anatomical_structure.py b/models_py-autogen/anatomical_structure.py index fe8926f4..ec53d18d 100644 --- a/models_py-autogen/anatomical_structure.py +++ b/models_py-autogen/anatomical_structure.py @@ -1,36 +1,32 @@ from __future__ import annotations + +import re +import sys from datetime import ( + date, datetime, - date + time ) from decimal import Decimal from enum import Enum -import re -import sys from typing import ( Any, ClassVar, + Dict, List, Literal, - Dict, Optional, Union ) -from pydantic.version import VERSION as PYDANTIC_VERSION -if int(PYDANTIC_VERSION[0])>=2: - from pydantic import ( - BaseModel, - ConfigDict, - Field, - RootModel, - field_validator - ) -else: - from pydantic import ( - BaseModel, - Field, - validator - ) + +from pydantic import ( + BaseModel, + ConfigDict, + Field, + RootModel, + field_validator +) + metamodel_version = "None" version = "None" @@ -117,10 +113,10 @@ class NamedThing(ConfiguredBaseModel): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'abstract': True, 'from_schema': 'https://w3id.org/my-org/anatomical-structure-core-schema'}) - id: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) - name: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) - description: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) - category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/NamedThing","AnS:NamedThing"]] = Field(["AnS:NamedThing"], json_schema_extra = { "linkml_meta": {'alias': 'category', + id: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) + name: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) + description: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) + category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/NamedThing","AnS:NamedThing"]] = Field(default=["AnS:NamedThing"], json_schema_extra = { "linkml_meta": {'alias': 'category', 'designates_type': True, 'domain_of': ['NamedThing'], 'is_class_field': True} }) @@ -133,12 +129,12 @@ class VersionedNamedThing(NamedThing): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'abstract': True, 'from_schema': 'https://w3id.org/my-org/anatomical-structure-core-schema'}) - version: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'version', 'domain_of': ['VersionedNamedThing']} }) - revision_of: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'revision_of', 'domain_of': ['VersionedNamedThing']} }) - id: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) - name: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) - description: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) - category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/VersionedNamedThing","AnS:VersionedNamedThing"]] = Field(["AnS:VersionedNamedThing"], json_schema_extra = { "linkml_meta": {'alias': 'category', + version: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'version', 'domain_of': ['VersionedNamedThing']} }) + revision_of: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'revision_of', 'domain_of': ['VersionedNamedThing']} }) + id: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) + name: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) + description: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) + category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/VersionedNamedThing","AnS:VersionedNamedThing"]] = Field(default=["AnS:VersionedNamedThing"], json_schema_extra = { "linkml_meta": {'alias': 'category', 'designates_type': True, 'domain_of': ['NamedThing'], 'is_class_field': True} }) @@ -153,30 +149,30 @@ class ImageDataset(VersionedNamedThing): {'range': 'string'}], 'name': 'revision_of'}}}) - x_direction: Optional[ANATOMICALDIRECTION] = Field(None, description="""A controlled vocabulary attribute defining the x axis direction in terms of anatomical direction.""", json_schema_extra = { "linkml_meta": {'alias': 'x_direction', 'domain_of': ['ImageDataset']} }) - y_direction: Optional[ANATOMICALDIRECTION] = Field(None, description="""A controlled vocabulary attribute defining the y axis direction in terms of anatomical direction.""", json_schema_extra = { "linkml_meta": {'alias': 'y_direction', 'domain_of': ['ImageDataset']} }) - z_direction: Optional[ANATOMICALDIRECTION] = Field(None, description="""A controlled vocabulary attribute defining the z axis direction in terms of anatomical direction.""", json_schema_extra = { "linkml_meta": {'alias': 'z_direction', 'domain_of': ['ImageDataset']} }) - x_size: Optional[int] = Field(None, description="""The number of pixels/voxels (size) along the x axis.""", ge=1, json_schema_extra = { "linkml_meta": {'alias': 'x_size', 'domain_of': ['ImageDataset']} }) - y_size: Optional[int] = Field(None, description="""The number of pixels/voxels (size) along the y axis.""", ge=1, json_schema_extra = { "linkml_meta": {'alias': 'y_size', 'domain_of': ['ImageDataset']} }) - z_size: Optional[int] = Field(None, description="""The number of pixels/voxels (size) along the y axis.""", ge=1, json_schema_extra = { "linkml_meta": {'alias': 'z_size', 'domain_of': ['ImageDataset']} }) - x_resolution: Optional[float] = Field(None, description="""The resolution (length / pixel) in along the x axis (numerical value part).""", json_schema_extra = { "linkml_meta": {'alias': 'x_resolution', + x_direction: Optional[ANATOMICALDIRECTION] = Field(default=None, description="""A controlled vocabulary attribute defining the x axis direction in terms of anatomical direction.""", json_schema_extra = { "linkml_meta": {'alias': 'x_direction', 'domain_of': ['ImageDataset']} }) + y_direction: Optional[ANATOMICALDIRECTION] = Field(default=None, description="""A controlled vocabulary attribute defining the y axis direction in terms of anatomical direction.""", json_schema_extra = { "linkml_meta": {'alias': 'y_direction', 'domain_of': ['ImageDataset']} }) + z_direction: Optional[ANATOMICALDIRECTION] = Field(default=None, description="""A controlled vocabulary attribute defining the z axis direction in terms of anatomical direction.""", json_schema_extra = { "linkml_meta": {'alias': 'z_direction', 'domain_of': ['ImageDataset']} }) + x_size: Optional[int] = Field(default=None, description="""The number of pixels/voxels (size) along the x axis.""", ge=1, json_schema_extra = { "linkml_meta": {'alias': 'x_size', 'domain_of': ['ImageDataset']} }) + y_size: Optional[int] = Field(default=None, description="""The number of pixels/voxels (size) along the y axis.""", ge=1, json_schema_extra = { "linkml_meta": {'alias': 'y_size', 'domain_of': ['ImageDataset']} }) + z_size: Optional[int] = Field(default=None, description="""The number of pixels/voxels (size) along the y axis.""", ge=1, json_schema_extra = { "linkml_meta": {'alias': 'z_size', 'domain_of': ['ImageDataset']} }) + x_resolution: Optional[float] = Field(default=None, description="""The resolution (length / pixel) in along the x axis (numerical value part).""", json_schema_extra = { "linkml_meta": {'alias': 'x_resolution', 'domain_of': ['ImageDataset'], 'structured_pattern': {'syntax': '{PositiveFloat}'}} }) - y_resolution: Optional[float] = Field(None, description="""The resolution (length / pixel) in along the y axis (numerical value part).""", json_schema_extra = { "linkml_meta": {'alias': 'y_resolution', + y_resolution: Optional[float] = Field(default=None, description="""The resolution (length / pixel) in along the y axis (numerical value part).""", json_schema_extra = { "linkml_meta": {'alias': 'y_resolution', 'domain_of': ['ImageDataset'], 'structured_pattern': {'syntax': '{PositiveFloat}'}} }) - z_resolution: Optional[float] = Field(None, description="""The resolution (length / pixel) in along the z axis (numerical value part).""", json_schema_extra = { "linkml_meta": {'alias': 'z_resolution', + z_resolution: Optional[float] = Field(default=None, description="""The resolution (length / pixel) in along the z axis (numerical value part).""", json_schema_extra = { "linkml_meta": {'alias': 'z_resolution', 'domain_of': ['ImageDataset'], 'structured_pattern': {'syntax': '{PositiveFloat}'}} }) - unit: Optional[DISTANCEUNIT] = Field(None, description="""A controlled vocabulary attribute defining the length unit of the x, y, and z resolution values.""", json_schema_extra = { "linkml_meta": {'alias': 'unit', 'domain_of': ['ImageDataset']} }) - version: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'version', 'domain_of': ['VersionedNamedThing']} }) - revision_of: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'revision_of', + unit: Optional[DISTANCEUNIT] = Field(default=None, description="""A controlled vocabulary attribute defining the length unit of the x, y, and z resolution values.""", json_schema_extra = { "linkml_meta": {'alias': 'unit', 'domain_of': ['ImageDataset']} }) + version: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'version', 'domain_of': ['VersionedNamedThing']} }) + revision_of: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'revision_of', 'any_of': [{'range': 'ImageDataset'}, {'range': 'string'}], 'domain_of': ['VersionedNamedThing']} }) - id: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) - name: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) - description: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) - category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/ImageDataset","AnS:ImageDataset"]] = Field(["AnS:ImageDataset"], json_schema_extra = { "linkml_meta": {'alias': 'category', + id: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) + name: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) + description: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) + category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/ImageDataset","AnS:ImageDataset"]] = Field(default=["AnS:ImageDataset"], json_schema_extra = { "linkml_meta": {'alias': 'category', 'designates_type': True, 'domain_of': ['NamedThing'], 'is_class_field': True} }) @@ -191,17 +187,17 @@ class AnatomicalSpace(VersionedNamedThing): {'range': 'string'}], 'name': 'revision_of'}}}) - measures: str = Field(..., description="""Reference to the specific image dataset used to define the anatomical space.""", json_schema_extra = { "linkml_meta": {'alias': 'measures', + measures: str = Field(default=..., description="""Reference to the specific image dataset used to define the anatomical space.""", json_schema_extra = { "linkml_meta": {'alias': 'measures', 'any_of': [{'range': 'ImageDataset'}, {'range': 'string'}], 'domain_of': ['AnatomicalSpace']} }) - version: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'version', 'domain_of': ['VersionedNamedThing']} }) - revision_of: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'revision_of', + version: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'version', 'domain_of': ['VersionedNamedThing']} }) + revision_of: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'revision_of', 'any_of': [{'range': 'AnatomicalSpace'}, {'range': 'string'}], 'domain_of': ['VersionedNamedThing']} }) - id: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) - name: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) - description: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) - category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/AnatomicalSpace","AnS:AnatomicalSpace"]] = Field(["AnS:AnatomicalSpace"], json_schema_extra = { "linkml_meta": {'alias': 'category', + id: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) + name: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) + description: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) + category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/AnatomicalSpace","AnS:AnatomicalSpace"]] = Field(default=["AnS:AnatomicalSpace"], json_schema_extra = { "linkml_meta": {'alias': 'category', 'designates_type': True, 'domain_of': ['NamedThing'], 'is_class_field': True} }) @@ -216,14 +212,14 @@ class ParcellationTerminology(VersionedNamedThing): {'range': 'string'}], 'name': 'revision_of'}}}) - version: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'version', 'domain_of': ['VersionedNamedThing']} }) - revision_of: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'revision_of', + version: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'version', 'domain_of': ['VersionedNamedThing']} }) + revision_of: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'revision_of', 'any_of': [{'range': 'ParcellationTerminology'}, {'range': 'string'}], 'domain_of': ['VersionedNamedThing']} }) - id: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) - name: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) - description: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) - category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/ParcellationTerminology","AnS:ParcellationTerminology"]] = Field(["AnS:ParcellationTerminology"], json_schema_extra = { "linkml_meta": {'alias': 'category', + id: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) + name: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) + description: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) + category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/ParcellationTerminology","AnS:ParcellationTerminology"]] = Field(default=["AnS:ParcellationTerminology"], json_schema_extra = { "linkml_meta": {'alias': 'category', 'designates_type': True, 'domain_of': ['NamedThing'], 'is_class_field': True} }) @@ -235,17 +231,17 @@ class ParcellationTermSet(NamedThing): """ linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/my-org/anatomical-structure-schema'}) - part_of_parcellation_terminology: str = Field(..., description="""Reference to the parcellation terminology for which the parcellation term set partitions.""", json_schema_extra = { "linkml_meta": {'alias': 'part_of_parcellation_terminology', + part_of_parcellation_terminology: str = Field(default=..., description="""Reference to the parcellation terminology for which the parcellation term set partitions.""", json_schema_extra = { "linkml_meta": {'alias': 'part_of_parcellation_terminology', 'any_of': [{'range': 'ParcellationTerminology'}, {'range': 'string'}], 'domain_of': ['ParcellationTermSet']} }) - ordinal: Optional[int] = Field(None, description="""Ordinal of the parcellation term set among other term sets within the context of the associated parcellation terminology.""", ge=0, json_schema_extra = { "linkml_meta": {'alias': 'ordinal', 'domain_of': ['ParcellationTermSet', 'ParcellationTerm']} }) - has_parent_parcellation_term_set: Optional[str] = Field(None, description="""Reference to the parent parcellation term set for which the parcellation term set is a child (lower taxonomic rank) of.""", json_schema_extra = { "linkml_meta": {'alias': 'has_parent_parcellation_term_set', + ordinal: Optional[int] = Field(default=None, description="""Ordinal of the parcellation term set among other term sets within the context of the associated parcellation terminology.""", ge=0, json_schema_extra = { "linkml_meta": {'alias': 'ordinal', 'domain_of': ['ParcellationTermSet', 'ParcellationTerm']} }) + has_parent_parcellation_term_set: Optional[str] = Field(default=None, description="""Reference to the parent parcellation term set for which the parcellation term set is a child (lower taxonomic rank) of.""", json_schema_extra = { "linkml_meta": {'alias': 'has_parent_parcellation_term_set', 'any_of': [{'range': 'ParcellationTermSet'}, {'range': 'string'}], 'domain_of': ['ParcellationTermSet']} }) - id: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) - name: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) - description: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) - category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/ParcellationTermSet","AnS:ParcellationTermSet"]] = Field(["AnS:ParcellationTermSet"], json_schema_extra = { "linkml_meta": {'alias': 'category', + id: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) + name: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) + description: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) + category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/ParcellationTermSet","AnS:ParcellationTermSet"]] = Field(default=["AnS:ParcellationTermSet"], json_schema_extra = { "linkml_meta": {'alias': 'category', 'designates_type': True, 'domain_of': ['NamedThing'], 'is_class_field': True} }) @@ -257,18 +253,18 @@ class ParcellationTerm(NamedThing): """ linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/my-org/anatomical-structure-schema'}) - symbol: Optional[str] = Field(None, description="""Symbol representing a parcellation term.""", json_schema_extra = { "linkml_meta": {'alias': 'symbol', 'domain_of': ['ParcellationTerm']} }) - part_of_parcellation_term_set: str = Field(..., description="""Reference to the parcellation term set for which the parcellation term is part of.""", json_schema_extra = { "linkml_meta": {'alias': 'part_of_parcellation_term_set', + symbol: Optional[str] = Field(default=None, description="""Symbol representing a parcellation term.""", json_schema_extra = { "linkml_meta": {'alias': 'symbol', 'domain_of': ['ParcellationTerm']} }) + part_of_parcellation_term_set: str = Field(default=..., description="""Reference to the parcellation term set for which the parcellation term is part of.""", json_schema_extra = { "linkml_meta": {'alias': 'part_of_parcellation_term_set', 'any_of': [{'range': 'ParcellationTermSet'}, {'range': 'string'}], 'domain_of': ['ParcellationTerm']} }) - ordinal: Optional[int] = Field(None, description="""Ordinal of the parcellation term among other terms within the context of the associated parcellation terminology.""", ge=0, json_schema_extra = { "linkml_meta": {'alias': 'ordinal', 'domain_of': ['ParcellationTermSet', 'ParcellationTerm']} }) - has_parent_parcellation_term: Optional[str] = Field(None, description="""Reference to the parent parcellation term for which the parcellation term is a child ( spatially part) of""", json_schema_extra = { "linkml_meta": {'alias': 'has_parent_parcellation_term', + ordinal: Optional[int] = Field(default=None, description="""Ordinal of the parcellation term among other terms within the context of the associated parcellation terminology.""", ge=0, json_schema_extra = { "linkml_meta": {'alias': 'ordinal', 'domain_of': ['ParcellationTermSet', 'ParcellationTerm']} }) + has_parent_parcellation_term: Optional[str] = Field(default=None, description="""Reference to the parent parcellation term for which the parcellation term is a child ( spatially part) of""", json_schema_extra = { "linkml_meta": {'alias': 'has_parent_parcellation_term', 'any_of': [{'range': 'ParcellationTerm'}, {'range': 'string'}], 'domain_of': ['ParcellationTerm']} }) - id: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) - name: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) - description: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) - category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/ParcellationTerm","AnS:ParcellationTerm"]] = Field(["AnS:ParcellationTerm"], json_schema_extra = { "linkml_meta": {'alias': 'category', + id: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) + name: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) + description: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) + category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/ParcellationTerm","AnS:ParcellationTerm"]] = Field(default=["AnS:ParcellationTerm"], json_schema_extra = { "linkml_meta": {'alias': 'category', 'designates_type': True, 'domain_of': ['NamedThing'], 'is_class_field': True} }) @@ -283,17 +279,17 @@ class ParcellationColorScheme(VersionedNamedThing): {'range': 'string'}], 'name': 'revision_of'}}}) - subject_parcellation_terminology: str = Field(..., description="""Reference to the parcellation terminology for which the parcellation color scheme is in context of.""", json_schema_extra = { "linkml_meta": {'alias': 'subject_parcellation_terminology', + subject_parcellation_terminology: str = Field(default=..., description="""Reference to the parcellation terminology for which the parcellation color scheme is in context of.""", json_schema_extra = { "linkml_meta": {'alias': 'subject_parcellation_terminology', 'any_of': [{'range': 'ParcellationTerminology'}, {'range': 'string'}], 'domain_of': ['ParcellationColorScheme']} }) - version: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'version', 'domain_of': ['VersionedNamedThing']} }) - revision_of: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'revision_of', + version: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'version', 'domain_of': ['VersionedNamedThing']} }) + revision_of: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'revision_of', 'any_of': [{'range': 'ParcellationColorScheme'}, {'range': 'string'}], 'domain_of': ['VersionedNamedThing']} }) - id: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) - name: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) - description: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) - category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/ParcellationColorScheme","AnS:ParcellationColorScheme"]] = Field(["AnS:ParcellationColorScheme"], json_schema_extra = { "linkml_meta": {'alias': 'category', + id: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) + name: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) + description: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) + category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/ParcellationColorScheme","AnS:ParcellationColorScheme"]] = Field(default=["AnS:ParcellationColorScheme"], json_schema_extra = { "linkml_meta": {'alias': 'category', 'designates_type': True, 'domain_of': ['NamedThing'], 'is_class_field': True} }) @@ -305,13 +301,13 @@ class ParcellationColorAssignment(ConfiguredBaseModel): """ linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/my-org/anatomical-structure-schema'}) - part_of_parcellation_color_scheme: str = Field(..., description="""Reference to the parcellation color scheme for which the color assignment is part of.""", json_schema_extra = { "linkml_meta": {'alias': 'part_of_parcellation_color_scheme', + part_of_parcellation_color_scheme: str = Field(default=..., description="""Reference to the parcellation color scheme for which the color assignment is part of.""", json_schema_extra = { "linkml_meta": {'alias': 'part_of_parcellation_color_scheme', 'any_of': [{'range': 'ParcellationColorScheme'}, {'range': 'string'}], 'domain_of': ['ParcellationColorAssignment']} }) - subject_parcellation_term: str = Field(..., description="""Reference to the parcellation term identifier for which the color assignment is about.""", json_schema_extra = { "linkml_meta": {'alias': 'subject_parcellation_term', + subject_parcellation_term: str = Field(default=..., description="""Reference to the parcellation term identifier for which the color assignment is about.""", json_schema_extra = { "linkml_meta": {'alias': 'subject_parcellation_term', 'any_of': [{'range': 'ParcellationTerm'}, {'range': 'string'}], 'domain_of': ['ParcellationColorAssignment', 'ParcellationAnnotationTermMap']} }) - color: Optional[str] = Field(None, description="""A string representing to hex triplet code of a color""", json_schema_extra = { "linkml_meta": {'alias': 'color', + color: Optional[str] = Field(default=None, description="""A string representing to hex triplet code of a color""", json_schema_extra = { "linkml_meta": {'alias': 'color', 'domain_of': ['ParcellationColorAssignment'], 'structured_pattern': {'syntax': '{ColorHexTriplet}'}} }) @@ -325,17 +321,17 @@ class AnatomicalAnnotationSet(VersionedNamedThing): {'range': 'string'}], 'name': 'revision_of'}}}) - parameterizes: str = Field(..., description="""Reference to the anatomical space for which the anatomical annotation set is anchored""", json_schema_extra = { "linkml_meta": {'alias': 'parameterizes', + parameterizes: str = Field(default=..., description="""Reference to the anatomical space for which the anatomical annotation set is anchored""", json_schema_extra = { "linkml_meta": {'alias': 'parameterizes', 'any_of': [{'range': 'AnatomicalSpace'}, {'range': 'string'}], 'domain_of': ['AnatomicalAnnotationSet']} }) - version: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'version', 'domain_of': ['VersionedNamedThing']} }) - revision_of: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'revision_of', + version: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'version', 'domain_of': ['VersionedNamedThing']} }) + revision_of: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'revision_of', 'any_of': [{'range': 'AnatomicalAnnotationSet'}, {'range': 'string'}], 'domain_of': ['VersionedNamedThing']} }) - id: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) - name: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) - description: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) - category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/AnatomicalAnnotationSet","AnS:AnatomicalAnnotationSet"]] = Field(["AnS:AnatomicalAnnotationSet"], json_schema_extra = { "linkml_meta": {'alias': 'category', + id: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) + name: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) + description: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) + category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/AnatomicalAnnotationSet","AnS:AnatomicalAnnotationSet"]] = Field(default=["AnS:AnatomicalAnnotationSet"], json_schema_extra = { "linkml_meta": {'alias': 'category', 'designates_type': True, 'domain_of': ['NamedThing'], 'is_class_field': True} }) @@ -347,11 +343,11 @@ class ParcellationAnnotation(ConfiguredBaseModel): """ linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/my-org/anatomical-structure-schema'}) - part_of_anatomical_annotation_set: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'part_of_anatomical_annotation_set', + part_of_anatomical_annotation_set: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'part_of_anatomical_annotation_set', 'any_of': [{'range': 'AnatomicalAnnotationSet'}, {'range': 'string'}], 'domain_of': ['ParcellationAnnotation']} }) - internal_identifier: str = Field(..., description="""An identifier that uniquely denotes a specific parcellation annotation within the context of an anatomical annotation set""", json_schema_extra = { "linkml_meta": {'alias': 'internal_identifier', 'domain_of': ['ParcellationAnnotation']} }) - voxel_count: Optional[int] = Field(None, description="""The number of voxels (3D pixels) spanned by the parcellation annotation (optional).""", ge=0, json_schema_extra = { "linkml_meta": {'alias': 'voxel_count', 'domain_of': ['ParcellationAnnotation']} }) + internal_identifier: str = Field(default=..., description="""An identifier that uniquely denotes a specific parcellation annotation within the context of an anatomical annotation set""", json_schema_extra = { "linkml_meta": {'alias': 'internal_identifier', 'domain_of': ['ParcellationAnnotation']} }) + voxel_count: Optional[int] = Field(default=None, description="""The number of voxels (3D pixels) spanned by the parcellation annotation (optional).""", ge=0, json_schema_extra = { "linkml_meta": {'alias': 'voxel_count', 'domain_of': ['ParcellationAnnotation']} }) class ParcellationAnnotationTermMap(ConfiguredBaseModel): @@ -360,10 +356,10 @@ class ParcellationAnnotationTermMap(ConfiguredBaseModel): """ linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/my-org/anatomical-structure-schema'}) - subject_parcellation_annotation: Union[ParcellationAnnotation, str] = Field(..., description="""Reference to the parcellation annotation that is the subject of the association.""", json_schema_extra = { "linkml_meta": {'alias': 'subject_parcellation_annotation', + subject_parcellation_annotation: Union[ParcellationAnnotation, str] = Field(default=..., description="""Reference to the parcellation annotation that is the subject of the association.""", json_schema_extra = { "linkml_meta": {'alias': 'subject_parcellation_annotation', 'any_of': [{'range': 'ParcellationAnnotation'}, {'range': 'string'}], 'domain_of': ['ParcellationAnnotationTermMap']} }) - subject_parcellation_term: str = Field(..., description="""Reference to the parcellation term that is the subject of the association.""", json_schema_extra = { "linkml_meta": {'alias': 'subject_parcellation_term', + subject_parcellation_term: str = Field(default=..., description="""Reference to the parcellation term that is the subject of the association.""", json_schema_extra = { "linkml_meta": {'alias': 'subject_parcellation_term', 'any_of': [{'range': 'ParcellationTerm'}, {'range': 'string'}], 'domain_of': ['ParcellationColorAssignment', 'ParcellationAnnotationTermMap']} }) @@ -377,26 +373,26 @@ class ParcellationAtlas(VersionedNamedThing): {'range': 'string'}], 'name': 'revision_of'}}}) - has_anatomical_space: str = Field(..., description="""Reference to the anatomical space component of the parcellation atlas""", json_schema_extra = { "linkml_meta": {'alias': 'has_anatomical_space', + has_anatomical_space: str = Field(default=..., description="""Reference to the anatomical space component of the parcellation atlas""", json_schema_extra = { "linkml_meta": {'alias': 'has_anatomical_space', 'any_of': [{'range': 'AnatomicalSpace'}, {'range': 'string'}], 'domain_of': ['ParcellationAtlas']} }) - has_anatomical_annotation_set: str = Field(..., description="""Reference to the anatomical annotation set component of the parcellation atlas""", json_schema_extra = { "linkml_meta": {'alias': 'has_anatomical_annotation_set', + has_anatomical_annotation_set: str = Field(default=..., description="""Reference to the anatomical annotation set component of the parcellation atlas""", json_schema_extra = { "linkml_meta": {'alias': 'has_anatomical_annotation_set', 'any_of': [{'range': 'AnatomicalAnnotationSet'}, {'range': 'string'}], 'domain_of': ['ParcellationAtlas']} }) - has_parcellation_terminology: str = Field(..., description="""Reference to the parcellation terminology component of the parcellation atlas""", json_schema_extra = { "linkml_meta": {'alias': 'has_parcellation_terminology', + has_parcellation_terminology: str = Field(default=..., description="""Reference to the parcellation terminology component of the parcellation atlas""", json_schema_extra = { "linkml_meta": {'alias': 'has_parcellation_terminology', 'any_of': [{'range': 'ParcellationTerminology'}, {'range': 'string'}], 'domain_of': ['ParcellationAtlas']} }) - specialization_of: Optional[str] = Field(None, description="""Reference to the general (non versioned) parcellation atlas for which the parcellation atlas is a specific version release of.""", json_schema_extra = { "linkml_meta": {'alias': 'specialization_of', + specialization_of: Optional[str] = Field(default=None, description="""Reference to the general (non versioned) parcellation atlas for which the parcellation atlas is a specific version release of.""", json_schema_extra = { "linkml_meta": {'alias': 'specialization_of', 'any_of': [{'range': 'ParcellationAtlas'}, {'range': 'string'}], 'domain_of': ['ParcellationAtlas']} }) - version: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'version', 'domain_of': ['VersionedNamedThing']} }) - revision_of: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'revision_of', + version: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'version', 'domain_of': ['VersionedNamedThing']} }) + revision_of: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'revision_of', 'any_of': [{'range': 'ParcellationAtlas'}, {'range': 'string'}], 'domain_of': ['VersionedNamedThing']} }) - id: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) - name: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) - description: str = Field(..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) - category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/ParcellationAtlas","AnS:ParcellationAtlas"]] = Field(["AnS:ParcellationAtlas"], json_schema_extra = { "linkml_meta": {'alias': 'category', + id: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedThing']} }) + name: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['NamedThing']} }) + description: str = Field(default=..., json_schema_extra = { "linkml_meta": {'alias': 'description', 'domain_of': ['NamedThing']} }) + category: List[Literal["https://w3id.org/my-org/anatomical-structure-schema/ParcellationAtlas","AnS:ParcellationAtlas"]] = Field(default=["AnS:ParcellationAtlas"], json_schema_extra = { "linkml_meta": {'alias': 'category', 'designates_type': True, 'domain_of': ['NamedThing'], 'is_class_field': True} }) diff --git a/models_py-autogen/assertion_evidence.py b/models_py-autogen/assertion_evidence.py index aa5d3db8..4385987a 100644 --- a/models_py-autogen/assertion_evidence.py +++ b/models_py-autogen/assertion_evidence.py @@ -1,36 +1,32 @@ from __future__ import annotations + +import re +import sys from datetime import ( + date, datetime, - date + time ) from decimal import Decimal from enum import Enum -import re -import sys from typing import ( Any, ClassVar, + Dict, List, Literal, - Dict, Optional, Union ) -from pydantic.version import VERSION as PYDANTIC_VERSION -if int(PYDANTIC_VERSION[0])>=2: - from pydantic import ( - BaseModel, - ConfigDict, - Field, - RootModel, - field_validator - ) -else: - from pydantic import ( - BaseModel, - Field, - validator - ) + +from pydantic import ( + BaseModel, + ConfigDict, + Field, + RootModel, + field_validator +) + metamodel_version = "None" version = "None" @@ -170,11 +166,11 @@ class Activity(ConfiguredBaseModel): 'range': 'Agent', 'slot_uri': 'prov:wasAssociatedWith'}}}) - was_associate_with: Optional[Agent] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'was_associate_with', + was_associate_with: Optional[Agent] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'was_associate_with', 'domain_of': ['Activity'], 'slot_uri': 'prov:wasAssociatedWith'} }) - ended_at_time: Optional[datetime ] = Field(None, description="""The prov:endedAtTime establishes the relationship between prov:Activity and xsd:DateTime that allows one to specify the time when the activity ended.""", json_schema_extra = { "linkml_meta": {'alias': 'endedAtTime', 'domain_of': ['Activity']} }) - started_at_time: Optional[datetime ] = Field(None, description="""The prov:startedAtTime establishes the relationship between prov:Activity and xsd:DateTime that allows one to specify the time when the activity started.""", json_schema_extra = { "linkml_meta": {'alias': 'startedAtTime', 'domain_of': ['Activity']} }) + endedAtTime: Optional[datetime ] = Field(default=None, description="""The prov:endedAtTime establishes the relationship between prov:Activity and xsd:DateTime that allows one to specify the time when the activity ended.""", json_schema_extra = { "linkml_meta": {'alias': 'endedAtTime', 'domain_of': ['Activity']} }) + startedAtTime: Optional[datetime ] = Field(default=None, description="""The prov:startedAtTime establishes the relationship between prov:Activity and xsd:DateTime that allows one to specify the time when the activity started.""", json_schema_extra = { "linkml_meta": {'alias': 'startedAtTime', 'domain_of': ['Activity']} }) class Agent(ConfiguredBaseModel): @@ -183,12 +179,11 @@ class Agent(ConfiguredBaseModel): """ linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'prov:Agent', 'from_schema': 'https://identifiers.org/brain-bican/assertion-evidence-schema', - 'slot_usage': {'has_identifier': {'domain_of': ['Agent'], - 'name': 'has_identifier', + 'slot_usage': {'has_identifier': {'name': 'has_identifier', 'range': 'Identifier', 'slot_uri': 'edam:has_identifier'}}}) - has_identifier: Optional[Identifier] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'has_identifier', + has_identifier: Optional[Identifier] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'has_identifier', 'domain_of': ['Agent'], 'slot_uri': 'edam:has_identifier'} }) @@ -224,22 +219,22 @@ class Assertion(ConfiguredBaseModel): 'range': 'Activity', 'slot_uri': 'prov:wasGeneratedBy'}}}) - has_annotation: Optional[Annotation] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'has_annotation', + has_annotation: Optional[Annotation] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'has_annotation', 'domain_of': ['Assertion'], 'slot_uri': 'sio:000255'} }) - was_generated_by: Optional[Activity] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + was_generated_by: Optional[Activity] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', 'domain_of': ['Assertion', 'EvidenceLine'], 'slot_uri': 'prov:wasGeneratedBy'} }) - has_evidence_line: Optional[EvidenceLine] = Field(None, description="""A relationship between an assertion or proposition and an evidence line used in evaluating its validity.""", json_schema_extra = { "linkml_meta": {'alias': 'has_evidence_line', + has_evidence_line: Optional[EvidenceLine] = Field(default=None, description="""A relationship between an assertion or proposition and an evidence line used in evaluating its validity.""", json_schema_extra = { "linkml_meta": {'alias': 'has_evidence_line', 'domain_of': ['Assertion'], 'slot_uri': 'sepio:0000006'} }) - has_assertion_category: Optional[Categories] = Field(None, description="""The brainkb:hasAssertionCategory property relates brainkb:Evidence and brainkb:Categories, specifying the classification or category that the assertion belongs to.""", json_schema_extra = { "linkml_meta": {'alias': 'has_assertion_category', + has_assertion_category: Optional[Categories] = Field(default=None, description="""The brainkb:hasAssertionCategory property relates brainkb:Evidence and brainkb:Categories, specifying the classification or category that the assertion belongs to.""", json_schema_extra = { "linkml_meta": {'alias': 'has_assertion_category', 'domain_of': ['Assertion'], 'slot_uri': 'brainkb:has_assertion_category'} }) - has_assertion_description: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'has_assertion_description', + has_assertion_description: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'has_assertion_description', 'domain_of': ['Assertion'], 'slot_uri': 'brainkb:has_assertion_description'} }) - has_assertion_summary: Optional[str] = Field(None, description="""The brainkb:has_assertion_text property relates an eco:Assertion to an xsd:string, providing a textual excerpt of the assertion being made.""", json_schema_extra = { "linkml_meta": {'alias': 'has_assertion_summary', + has_assertion_summary: Optional[str] = Field(default=None, description="""The brainkb:has_assertion_text property relates an eco:Assertion to an xsd:string, providing a textual excerpt of the assertion being made.""", json_schema_extra = { "linkml_meta": {'alias': 'has_assertion_summary', 'domain_of': ['Assertion'], 'slot_uri': 'brainkb:has_assertion_summary'} }) @@ -258,7 +253,7 @@ class EvidenceItem(ConfiguredBaseModel): 'range': 'Document', 'slot_uri': 'sepio:0000442'}}}) - reference: Optional[Document] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'reference', + reference: Optional[Document] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'reference', 'domain_of': ['EvidenceItem'], 'slot_uri': 'sepio:0000442'} }) @@ -270,10 +265,10 @@ class Document(EvidenceItem): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'iao:0000310', 'from_schema': 'https://identifiers.org/brain-bican/assertion-evidence-schema'}) - identifier: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'identifier', + identifier: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'identifier', 'domain_of': ['Document'], 'slot_uri': 'datacite:identifier'} }) - reference: Optional[Document] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'reference', + reference: Optional[Document] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'reference', 'domain_of': ['EvidenceItem'], 'slot_uri': 'sepio:0000442'} }) @@ -290,31 +285,29 @@ class EvidenceLine(ConfiguredBaseModel): 'information entity that ' 'contributes to the ' 'argument it represents.', - 'domain_of': ['EvidenceLine'], 'name': 'has_evidence_item', 'range': 'EvidenceItem', 'slot_uri': 'sepio:0000084'}, - 'was_generated_by': {'domain_of': ['Assertion', 'EvidenceLine'], - 'name': 'was_generated_by', + 'was_generated_by': {'name': 'was_generated_by', 'range': 'Activity', 'slot_uri': 'prov:wasGeneratedBy'}}}) - has_evidence_item: Optional[EvidenceItem] = Field(None, description="""A relation holding between an evidence line and an individual information entity that contributes to the argument it represents.""", json_schema_extra = { "linkml_meta": {'alias': 'has_evidence_item', + has_evidence_item: Optional[EvidenceItem] = Field(default=None, description="""A relation holding between an evidence line and an individual information entity that contributes to the argument it represents.""", json_schema_extra = { "linkml_meta": {'alias': 'has_evidence_item', 'domain_of': ['EvidenceLine'], 'slot_uri': 'sepio:0000084'} }) - was_generated_by: Optional[Activity] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + was_generated_by: Optional[Activity] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', 'domain_of': ['Assertion', 'EvidenceLine'], 'slot_uri': 'prov:wasGeneratedBy'} }) - evidence_direction: Optional[EvidenceDirection] = Field(None, description="""A relation indicating whether an evidence line supports or disputes a target proposition (or represents inconclusive evidence that is not sufficient for either).""", json_schema_extra = { "linkml_meta": {'alias': 'evidence_direction', + evidence_direction: Optional[EvidenceDirection] = Field(default=None, description="""A relation indicating whether an evidence line supports or disputes a target proposition (or represents inconclusive evidence that is not sufficient for either).""", json_schema_extra = { "linkml_meta": {'alias': 'evidence_direction', 'domain_of': ['EvidenceLine'], 'slot_uri': 'sepio:0000183'} }) - evidence_line_strength: Optional[EvidenceStrength] = Field(None, description="""A relation describing the degree of support provided by an evidence line for a target assertion or proposition.""", json_schema_extra = { "linkml_meta": {'alias': 'evidence_line_strength', + evidence_line_strength: Optional[EvidenceStrength] = Field(default=None, description="""A relation describing the degree of support provided by an evidence line for a target assertion or proposition.""", json_schema_extra = { "linkml_meta": {'alias': 'evidence_line_strength', 'domain_of': ['EvidenceLine'], 'slot_uri': 'sepio:0000132'} }) - has_evidence_category: Optional[Categories] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'has_evidence_category', + has_evidence_category: Optional[Categories] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'has_evidence_category', 'domain_of': ['EvidenceLine'], 'slot_uri': 'brainkb:has_evidence_category'} }) - has_evidenceline_description: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'has_evidenceline_description', + has_evidenceline_description: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'has_evidenceline_description', 'domain_of': ['EvidenceLine'], 'slot_uri': 'braiankb:has_evidenceline_description'} }) @@ -323,7 +316,7 @@ class Group(Agent): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'foaf:Group', 'from_schema': 'https://identifiers.org/brain-bican/assertion-evidence-schema'}) - has_identifier: Optional[Identifier] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'has_identifier', + has_identifier: Optional[Identifier] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'has_identifier', 'domain_of': ['Agent'], 'slot_uri': 'edam:has_identifier'} }) @@ -339,7 +332,7 @@ class Organization(Group): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'prov:Organization', 'from_schema': 'https://identifiers.org/brain-bican/assertion-evidence-schema'}) - has_identifier: Optional[Identifier] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'has_identifier', + has_identifier: Optional[Identifier] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'has_identifier', 'domain_of': ['Agent'], 'slot_uri': 'edam:has_identifier'} }) @@ -351,8 +344,8 @@ class Person(Agent): 'range': 'Organization', 'slot_uri': 'foaf:member'}}}) - member: Optional[Organization] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'member', 'domain_of': ['Person'], 'slot_uri': 'foaf:member'} }) - has_identifier: Optional[Identifier] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'has_identifier', + member: Optional[Organization] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'member', 'domain_of': ['Person'], 'slot_uri': 'foaf:member'} }) + has_identifier: Optional[Identifier] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'has_identifier', 'domain_of': ['Agent'], 'slot_uri': 'edam:has_identifier'} }) @@ -375,7 +368,7 @@ class SoftwareAgent(Agent): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'prov:SoftwareAgent', 'from_schema': 'https://identifiers.org/brain-bican/assertion-evidence-schema'}) - has_identifier: Optional[Identifier] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'has_identifier', + has_identifier: Optional[Identifier] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'has_identifier', 'domain_of': ['Agent'], 'slot_uri': 'edam:has_identifier'} }) diff --git a/models_py-autogen/genome_annotation.py b/models_py-autogen/genome_annotation.py index 539ae72e..c07e3505 100644 --- a/models_py-autogen/genome_annotation.py +++ b/models_py-autogen/genome_annotation.py @@ -1,36 +1,32 @@ from __future__ import annotations + +import re +import sys from datetime import ( + date, datetime, - date + time ) from decimal import Decimal from enum import Enum -import re -import sys from typing import ( Any, ClassVar, + Dict, List, Literal, - Dict, Optional, Union ) -from pydantic.version import VERSION as PYDANTIC_VERSION -if int(PYDANTIC_VERSION[0])>=2: - from pydantic import ( - BaseModel, - ConfigDict, - Field, - RootModel, - field_validator - ) -else: - from pydantic import ( - BaseModel, - Field, - validator - ) + +from pydantic import ( + BaseModel, + ConfigDict, + Field, + RootModel, + field_validator +) + metamodel_version = "None" version = "None" @@ -130,7 +126,7 @@ class OntologyClass(ConfiguredBaseModel): 'mixin': True, 'see_also': ['https://github.com/biolink/biolink-model/issues/486']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -173,7 +169,7 @@ class QuantityValue(Annotation): 'definition_uri': 'https://w3id.org/biolink/vocab/QuantityValue', 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema'}) - has_unit: Optional[str] = Field(None, description="""connects a quantity value to a unit""", json_schema_extra = { "linkml_meta": {'alias': 'has_unit', + has_unit: Optional[str] = Field(default=None, description="""connects a quantity value to a unit""", json_schema_extra = { "linkml_meta": {'alias': 'has_unit', 'close_mappings': ['EFO:0001697', 'UO-PROPERTY:is_unit_of'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_unit', 'domain': 'quantity value', @@ -186,7 +182,7 @@ class QuantityValue(Annotation): 'SNOMED:has_presentation_strength_numerator_unit', 'SNOMED:has_unit_of_presentation'], 'slot_uri': 'biolink:has_unit'} }) - has_numeric_value: Optional[float] = Field(None, description="""connects a quantity value to a number""", json_schema_extra = { "linkml_meta": {'alias': 'has_numeric_value', + has_numeric_value: Optional[float] = Field(default=None, description="""connects a quantity value to a number""", json_schema_extra = { "linkml_meta": {'alias': 'has_numeric_value', 'definition_uri': 'https://w3id.org/biolink/vocab/has_numeric_value', 'domain': 'quantity value', 'domain_of': ['quantity value'], @@ -204,7 +200,7 @@ class Entity(ConfiguredBaseModel): 'definition_uri': 'https://w3id.org/biolink/vocab/Entity', 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema'}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -225,7 +221,7 @@ class Entity(ConfiguredBaseModel): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -243,7 +239,7 @@ class Entity(ConfiguredBaseModel): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/Entity","biolink:Entity"]] = Field(["biolink:Entity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/Entity","biolink:Entity"]] = Field(default=["biolink:Entity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -264,7 +260,7 @@ class Entity(ConfiguredBaseModel): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -283,7 +279,7 @@ class Entity(ConfiguredBaseModel): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -307,7 +303,7 @@ class Entity(ConfiguredBaseModel): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -328,7 +324,7 @@ class Entity(ConfiguredBaseModel): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -422,7 +418,7 @@ class Entity(ConfiguredBaseModel): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -445,7 +441,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -466,7 +462,7 @@ class NamedThing(Entity): 'dcid:Thing'], 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema'}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -487,7 +483,7 @@ class NamedThing(Entity): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -505,7 +501,7 @@ class NamedThing(Entity): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/NamedThing","biolink:NamedThing"]] = Field(["biolink:NamedThing"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/NamedThing","biolink:NamedThing"]] = Field(default=["biolink:NamedThing"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -526,7 +522,7 @@ class NamedThing(Entity): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -545,7 +541,7 @@ class NamedThing(Entity): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -569,7 +565,7 @@ class NamedThing(Entity): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -590,7 +586,7 @@ class NamedThing(Entity): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -684,7 +680,7 @@ class NamedThing(Entity): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -701,7 +697,7 @@ class NamedThing(Entity): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -718,7 +714,7 @@ class NamedThing(Entity): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -737,7 +733,7 @@ class NamedThing(Entity): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -754,7 +750,7 @@ class NamedThing(Entity): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -786,7 +782,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -804,7 +800,7 @@ class Attribute(NamedThing, OntologyClass): 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', 'id_prefixes': ['EDAM-DATA', 'EDAM-FORMAT', 'EDAM-OPERATION', 'EDAM-TOPIC'], 'in_subset': ['samples'], - 'mixins': ['OntologyClass'], + 'mixins': ['ontology class'], 'slot_usage': {'name': {'description': "The human-readable 'attribute name' " 'can be set to a string which reflects ' 'its context of interpretation, e.g. ' @@ -814,7 +810,7 @@ class Attribute(NamedThing, OntologyClass): "attribute type' slot ontology term.", 'name': 'name'}}}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -835,7 +831,7 @@ class Attribute(NamedThing, OntologyClass): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - category: List[Literal["https://w3id.org/biolink/vocab/Attribute","biolink:Attribute"]] = Field(["biolink:Attribute"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/Attribute","biolink:Attribute"]] = Field(default=["biolink:Attribute"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -856,7 +852,7 @@ class Attribute(NamedThing, OntologyClass): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -875,7 +871,7 @@ class Attribute(NamedThing, OntologyClass): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -896,7 +892,7 @@ class Attribute(NamedThing, OntologyClass): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -990,7 +986,7 @@ class Attribute(NamedThing, OntologyClass): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -1007,7 +1003,7 @@ class Attribute(NamedThing, OntologyClass): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -1024,7 +1020,7 @@ class Attribute(NamedThing, OntologyClass): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -1043,7 +1039,7 @@ class Attribute(NamedThing, OntologyClass): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -1060,7 +1056,7 @@ class Attribute(NamedThing, OntologyClass): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -1086,27 +1082,38 @@ class Attribute(NamedThing, OntologyClass): 'IAO:0000136', 'RXNORM:has_tradename'], 'slot_uri': 'biolink:synonym'} }) - attribute_name: Optional[str] = Field(None, description="""The human-readable 'attribute name' can be set to a string which reflects its context of interpretation, e.g. SEPIO evidence/provenance/confidence annotation or it can default to the name associated with the 'has attribute type' slot ontology term.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""The human-readable 'attribute name' can be set to a string which reflects its context of interpretation, e.g. SEPIO evidence/provenance/confidence annotation or it can default to the name associated with the 'has attribute type' slot ontology term.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', - 'domain': 'attribute', - 'domain_of': ['attribute'], + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome'], 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], 'in_subset': ['translator_minimal', 'samples'], - 'is_a': 'name', - 'is_usage_slot': True, 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], - 'slot_uri': 'rdfs:label', - 'usage_slot_name': 'name'} }) - has_attribute_type: str = Field(..., description="""connects an attribute to a class that describes it""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute_type', + 'slot_uri': 'rdfs:label'} }) + has_attribute_type: str = Field(default=..., description="""connects an attribute to a class that describes it""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute_type', 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute_type', 'domain': 'attribute', 'domain_of': ['attribute'], 'in_subset': ['samples'], 'narrow_mappings': ['LOINC:has_modality_type', 'LOINC:has_view_type'], 'slot_uri': 'biolink:has_attribute_type'} }) - has_quantitative_value: Optional[List[QuantityValue]] = Field(None, description="""connects an attribute to a value""", json_schema_extra = { "linkml_meta": {'alias': 'has_quantitative_value', + has_quantitative_value: Optional[List[QuantityValue]] = Field(default=None, description="""connects an attribute to a value""", json_schema_extra = { "linkml_meta": {'alias': 'has_quantitative_value', 'definition_uri': 'https://w3id.org/biolink/vocab/has_quantitative_value', 'domain': 'attribute', 'domain_of': ['attribute'], @@ -1116,13 +1123,13 @@ class Attribute(NamedThing, OntologyClass): 'SNOMED:has_presentation_strength_denominator_value', 'SNOMED:has_presentation_strength_numerator_value'], 'slot_uri': 'biolink:has_quantitative_value'} }) - has_qualitative_value: Optional[str] = Field(None, description="""connects an attribute to a value""", json_schema_extra = { "linkml_meta": {'alias': 'has_qualitative_value', + has_qualitative_value: Optional[str] = Field(default=None, description="""connects an attribute to a value""", json_schema_extra = { "linkml_meta": {'alias': 'has_qualitative_value', 'definition_uri': 'https://w3id.org/biolink/vocab/has_qualitative_value', 'domain': 'attribute', 'domain_of': ['attribute'], 'in_subset': ['samples'], 'slot_uri': 'biolink:has_qualitative_value'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -1140,31 +1147,13 @@ class Attribute(NamedThing, OntologyClass): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - name: Optional[str] = Field(None, description="""The human-readable 'attribute name' can be set to a string which reflects its context of interpretation, e.g. SEPIO evidence/provenance/confidence annotation or it can default to the name associated with the 'has attribute type' slot ontology term.""", json_schema_extra = { "linkml_meta": {'alias': 'name', - 'definition_uri': 'https://w3id.org/biolink/vocab/name', - 'domain': 'entity', - 'domain_of': ['entity', - 'named thing', - 'organism taxon', - 'information content entity', - 'dataset', - 'physical entity', - 'activity', - 'procedure', - 'material sample', - 'biological entity', - 'macromolecular machine mixin', - 'gene or gene product', - 'gene', - 'genome'], - 'slot_uri': 'rdfs:label'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -1182,7 +1171,7 @@ class TaxonomicRank(OntologyClass): 'id_prefixes': ['TAXRANK'], 'mappings': ['WIKIDATA:Q427626']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -1219,7 +1208,7 @@ class OrganismTaxon(NamedThing): 'narrow_mappings': ['dcid:BiologicalSpecies'], 'values_from': ['NCBITaxon']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -1240,7 +1229,7 @@ class OrganismTaxon(NamedThing): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -1258,7 +1247,7 @@ class OrganismTaxon(NamedThing): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/OrganismTaxon","biolink:OrganismTaxon"]] = Field(["biolink:OrganismTaxon"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/OrganismTaxon","biolink:OrganismTaxon"]] = Field(default=["biolink:OrganismTaxon"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -1279,7 +1268,7 @@ class OrganismTaxon(NamedThing): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -1298,7 +1287,7 @@ class OrganismTaxon(NamedThing): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -1322,7 +1311,7 @@ class OrganismTaxon(NamedThing): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -1343,7 +1332,7 @@ class OrganismTaxon(NamedThing): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -1437,7 +1426,7 @@ class OrganismTaxon(NamedThing): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -1454,7 +1443,7 @@ class OrganismTaxon(NamedThing): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -1471,7 +1460,7 @@ class OrganismTaxon(NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -1490,7 +1479,7 @@ class OrganismTaxon(NamedThing): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -1507,7 +1496,7 @@ class OrganismTaxon(NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -1533,7 +1522,7 @@ class OrganismTaxon(NamedThing): 'IAO:0000136', 'RXNORM:has_tradename'], 'slot_uri': 'biolink:synonym'} }) - has_taxonomic_rank: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'has_taxonomic_rank', + has_taxonomic_rank: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'has_taxonomic_rank', 'definition_uri': 'https://w3id.org/biolink/vocab/has_taxonomic_rank', 'domain': 'named thing', 'domain_of': ['organism taxon'], @@ -1546,7 +1535,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -1578,7 +1567,7 @@ class InformationContentEntity(NamedThing): 'STY:T171', 'STY:T185']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -1599,7 +1588,7 @@ class InformationContentEntity(NamedThing): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -1617,7 +1606,7 @@ class InformationContentEntity(NamedThing): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/InformationContentEntity","biolink:InformationContentEntity"]] = Field(["biolink:InformationContentEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/InformationContentEntity","biolink:InformationContentEntity"]] = Field(default=["biolink:InformationContentEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -1638,7 +1627,7 @@ class InformationContentEntity(NamedThing): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -1657,7 +1646,7 @@ class InformationContentEntity(NamedThing): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -1681,7 +1670,7 @@ class InformationContentEntity(NamedThing): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -1702,7 +1691,7 @@ class InformationContentEntity(NamedThing): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -1796,7 +1785,7 @@ class InformationContentEntity(NamedThing): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -1813,7 +1802,7 @@ class InformationContentEntity(NamedThing): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -1830,7 +1819,7 @@ class InformationContentEntity(NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -1849,7 +1838,7 @@ class InformationContentEntity(NamedThing): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -1866,7 +1855,7 @@ class InformationContentEntity(NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -1892,7 +1881,7 @@ class InformationContentEntity(NamedThing): 'IAO:0000136', 'RXNORM:has_tradename'], 'slot_uri': 'biolink:synonym'} }) - license: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'license', + license: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'license', 'definition_uri': 'https://w3id.org/biolink/vocab/license', 'domain': 'information content entity', 'domain_of': ['information content entity', 'dataset'], @@ -1900,21 +1889,21 @@ class InformationContentEntity(NamedThing): 'is_a': 'node property', 'narrow_mappings': ['WIKIDATA_PROPERTY:P275'], 'slot_uri': 'biolink:license'} }) - rights: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'rights', + rights: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'rights', 'definition_uri': 'https://w3id.org/biolink/vocab/rights', 'domain': 'information content entity', 'domain_of': ['information content entity', 'dataset'], 'exact_mappings': ['dct:rights'], 'is_a': 'node property', 'slot_uri': 'biolink:rights'} }) - format: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'format', + format: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'format', 'definition_uri': 'https://w3id.org/biolink/vocab/format', 'domain': 'information content entity', 'domain_of': ['information content entity', 'dataset'], 'exact_mappings': ['dct:format', 'WIKIDATA_PROPERTY:P2701'], 'is_a': 'node property', 'slot_uri': 'biolink:format'} }) - creation_date: Optional[date] = Field(None, description="""date on which an entity was created. This can be applied to nodes or edges""", json_schema_extra = { "linkml_meta": {'alias': 'creation_date', + creation_date: Optional[date] = Field(default=None, description="""date on which an entity was created. This can be applied to nodes or edges""", json_schema_extra = { "linkml_meta": {'alias': 'creation_date', 'aliases': ['publication date'], 'definition_uri': 'https://w3id.org/biolink/vocab/creation_date', 'domain': 'named thing', @@ -1928,7 +1917,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -1948,7 +1937,7 @@ class Dataset(InformationContentEntity): 'dcid:Dataset'], 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema'}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -1969,7 +1958,7 @@ class Dataset(InformationContentEntity): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -1987,7 +1976,7 @@ class Dataset(InformationContentEntity): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/Dataset","biolink:Dataset"]] = Field(["biolink:Dataset"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/Dataset","biolink:Dataset"]] = Field(default=["biolink:Dataset"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -2008,7 +1997,7 @@ class Dataset(InformationContentEntity): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -2027,7 +2016,7 @@ class Dataset(InformationContentEntity): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -2051,7 +2040,7 @@ class Dataset(InformationContentEntity): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -2072,7 +2061,7 @@ class Dataset(InformationContentEntity): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -2166,7 +2155,7 @@ class Dataset(InformationContentEntity): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -2183,7 +2172,7 @@ class Dataset(InformationContentEntity): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -2200,7 +2189,7 @@ class Dataset(InformationContentEntity): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -2219,7 +2208,7 @@ class Dataset(InformationContentEntity): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -2236,7 +2225,7 @@ class Dataset(InformationContentEntity): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -2262,7 +2251,7 @@ class Dataset(InformationContentEntity): 'IAO:0000136', 'RXNORM:has_tradename'], 'slot_uri': 'biolink:synonym'} }) - license: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'license', + license: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'license', 'definition_uri': 'https://w3id.org/biolink/vocab/license', 'domain': 'information content entity', 'domain_of': ['information content entity', 'dataset'], @@ -2270,21 +2259,21 @@ class Dataset(InformationContentEntity): 'is_a': 'node property', 'narrow_mappings': ['WIKIDATA_PROPERTY:P275'], 'slot_uri': 'biolink:license'} }) - rights: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'rights', + rights: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'rights', 'definition_uri': 'https://w3id.org/biolink/vocab/rights', 'domain': 'information content entity', 'domain_of': ['information content entity', 'dataset'], 'exact_mappings': ['dct:rights'], 'is_a': 'node property', 'slot_uri': 'biolink:rights'} }) - format: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'format', + format: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'format', 'definition_uri': 'https://w3id.org/biolink/vocab/format', 'domain': 'information content entity', 'domain_of': ['information content entity', 'dataset'], 'exact_mappings': ['dct:format', 'WIKIDATA_PROPERTY:P2701'], 'is_a': 'node property', 'slot_uri': 'biolink:format'} }) - creation_date: Optional[date] = Field(None, description="""date on which an entity was created. This can be applied to nodes or edges""", json_schema_extra = { "linkml_meta": {'alias': 'creation_date', + creation_date: Optional[date] = Field(default=None, description="""date on which an entity was created. This can be applied to nodes or edges""", json_schema_extra = { "linkml_meta": {'alias': 'creation_date', 'aliases': ['publication date'], 'definition_uri': 'https://w3id.org/biolink/vocab/creation_date', 'domain': 'named thing', @@ -2298,7 +2287,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -2338,10 +2327,10 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'definition_uri': 'https://w3id.org/biolink/vocab/PhysicalEntity', 'exact_mappings': ['STY:T072'], 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', - 'mixins': ['PhysicalEssence'], + 'mixins': ['physical essence'], 'narrow_mappings': ['STY:T073']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -2362,7 +2351,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -2380,7 +2369,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/PhysicalEntity","biolink:PhysicalEntity"]] = Field(["biolink:PhysicalEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/PhysicalEntity","biolink:PhysicalEntity"]] = Field(default=["biolink:PhysicalEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -2401,7 +2390,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -2420,7 +2409,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -2444,7 +2433,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -2465,7 +2454,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -2559,7 +2548,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -2576,7 +2565,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -2593,7 +2582,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -2612,7 +2601,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -2629,7 +2618,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -2661,7 +2650,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -2703,7 +2692,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'definition_uri': 'https://w3id.org/biolink/vocab/Activity', 'exact_mappings': ['prov:Activity', 'NCIT:C43431', 'STY:T052'], 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', - 'mixins': ['ActivityAndBehavior'], + 'mixins': ['activity and behavior'], 'narrow_mappings': ['STY:T056', 'STY:T057', 'STY:T064', @@ -2712,7 +2701,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'STY:T065', 'STY:T058']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -2733,7 +2722,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -2751,7 +2740,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/Activity","biolink:Activity"]] = Field(["biolink:Activity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/Activity","biolink:Activity"]] = Field(default=["biolink:Activity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -2772,7 +2761,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -2791,7 +2780,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -2815,7 +2804,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -2836,7 +2825,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -2930,7 +2919,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -2947,7 +2936,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -2964,7 +2953,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -2983,7 +2972,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -3000,7 +2989,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -3032,7 +3021,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -3049,10 +3038,10 @@ class Procedure(ActivityAndBehavior, NamedThing): 'exact_mappings': ['UMLSSG:PROC', 'dcid:MedicalProcedure'], 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', 'id_prefixes': ['CPT'], - 'mixins': ['ActivityAndBehavior'], + 'mixins': ['activity and behavior'], 'narrow_mappings': ['STY:T059', 'STY:T060', 'STY:T061', 'STY:T063']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -3073,7 +3062,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -3091,7 +3080,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/Procedure","biolink:Procedure"]] = Field(["biolink:Procedure"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/Procedure","biolink:Procedure"]] = Field(default=["biolink:Procedure"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -3112,7 +3101,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -3131,7 +3120,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -3155,7 +3144,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -3176,7 +3165,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -3270,7 +3259,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -3287,7 +3276,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -3304,7 +3293,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -3323,7 +3312,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -3340,7 +3329,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -3372,7 +3361,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -3402,9 +3391,9 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'exact_mappings': ['OBI:0000747', 'SIO:001050'], 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', 'id_prefixes': ['BIOSAMPLE', 'GOLD.META'], - 'mixins': ['SubjectOfInvestigation']}) + 'mixins': ['subject of investigation']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -3425,7 +3414,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -3443,7 +3432,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/MaterialSample","biolink:MaterialSample"]] = Field(["biolink:MaterialSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/MaterialSample","biolink:MaterialSample"]] = Field(default=["biolink:MaterialSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -3464,7 +3453,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -3483,7 +3472,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -3507,7 +3496,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -3528,7 +3517,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -3622,7 +3611,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -3639,7 +3628,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -3656,7 +3645,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -3675,7 +3664,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -3692,7 +3681,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -3724,7 +3713,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -3741,12 +3730,14 @@ class ThingWithTaxon(ConfiguredBaseModel): 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', 'mixin': True}) - in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', + in_taxon: Optional[List[str]] = Field(default=None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', 'aliases': ['instance of', 'is organism source of gene product', 'organism has gene', 'gene found in organism', 'gene product has organism source'], + 'annotations': {'canonical_predicate': {'tag': 'canonical_predicate', + 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -3756,7 +3747,8 @@ class ThingWithTaxon(ConfiguredBaseModel): 'is_a': 'related to at instance level', 'narrow_mappings': ['RO:0002160'], 'slot_uri': 'biolink:in_taxon'} }) - in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + in_taxon_label: Optional[str] = Field(default=None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + 'annotations': {'denormalized': {'tag': 'denormalized', 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon_label', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -3772,13 +3764,13 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'class_uri': 'biolink:BiologicalEntity', 'definition_uri': 'https://w3id.org/biolink/vocab/BiologicalEntity', 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', - 'mixins': ['ThingWithTaxon'], + 'mixins': ['thing with taxon'], 'narrow_mappings': ['WIKIDATA:Q28845870', 'STY:T050', 'SIO:010046', 'STY:T129']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -3799,7 +3791,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -3817,7 +3809,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/BiologicalEntity","biolink:BiologicalEntity"]] = Field(["biolink:BiologicalEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/BiologicalEntity","biolink:BiologicalEntity"]] = Field(default=["biolink:BiologicalEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -3838,7 +3830,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -3857,7 +3849,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -3881,7 +3873,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -3902,7 +3894,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -3996,7 +3988,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -4013,7 +4005,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -4030,7 +4022,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -4049,7 +4041,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -4066,7 +4058,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -4092,12 +4084,14 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'IAO:0000136', 'RXNORM:has_tradename'], 'slot_uri': 'biolink:synonym'} }) - in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', + in_taxon: Optional[List[str]] = Field(default=None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', 'aliases': ['instance of', 'is organism source of gene product', 'organism has gene', 'gene found in organism', 'gene product has organism source'], + 'annotations': {'canonical_predicate': {'tag': 'canonical_predicate', + 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -4107,7 +4101,8 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'is_a': 'related to at instance level', 'narrow_mappings': ['RO:0002160'], 'slot_uri': 'biolink:in_taxon'} }) - in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + in_taxon_label: Optional[str] = Field(default=None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + 'annotations': {'denormalized': {'tag': 'denormalized', 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon_label', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -4121,7 +4116,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -4137,7 +4132,7 @@ class GenomicEntity(ConfiguredBaseModel): 'mixin': True, 'narrow_mappings': ['STY:T028', 'GENO:0000897']}) - has_biological_sequence: Optional[str] = Field(None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', + has_biological_sequence: Optional[str] = Field(default=None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', 'definition_uri': 'https://w3id.org/biolink/vocab/has_biological_sequence', 'domain': 'named thing', 'domain_of': ['genomic entity', 'gene', 'genome'], @@ -4166,7 +4161,7 @@ class MacromolecularMachineMixin(ConfiguredBaseModel): 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', 'mixin': True}) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -4202,7 +4197,7 @@ class GeneOrGeneProduct(MacromolecularMachineMixin): 'id_prefixes': ['CHEMBL.TARGET', 'IUPHAR.FAMILY'], 'mixin': True}) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -4256,14 +4251,14 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'AspGD', 'PHARMGKB.GENE'], 'in_subset': ['translator_minimal', 'model_organism_database'], - 'mixins': ['GeneOrGeneProduct', - 'GenomicEntity', - 'ChemicalEntityOrGeneOrGeneProduct', - 'PhysicalEssence', - 'OntologyClass'], + 'mixins': ['gene or gene product', + 'genomic entity', + 'chemical entity or gene or gene product', + 'physical essence', + 'ontology class'], 'narrow_mappings': ['bioschemas:gene']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -4284,7 +4279,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -4302,7 +4297,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/Gene","biolink:Gene"]] = Field(["biolink:Gene"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/Gene","biolink:Gene"]] = Field(default=["biolink:Gene"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -4323,7 +4318,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -4342,7 +4337,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -4366,7 +4361,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -4387,7 +4382,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -4481,7 +4476,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -4498,7 +4493,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -4515,7 +4510,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -4532,7 +4527,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -4558,12 +4553,14 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'IAO:0000136', 'RXNORM:has_tradename'], 'slot_uri': 'biolink:synonym'} }) - in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', + in_taxon: Optional[List[str]] = Field(default=None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', 'aliases': ['instance of', 'is organism source of gene product', 'organism has gene', 'gene found in organism', 'gene product has organism source'], + 'annotations': {'canonical_predicate': {'tag': 'canonical_predicate', + 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -4573,7 +4570,8 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'is_a': 'related to at instance level', 'narrow_mappings': ['RO:0002160'], 'slot_uri': 'biolink:in_taxon'} }) - in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + in_taxon_label: Optional[str] = Field(default=None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + 'annotations': {'denormalized': {'tag': 'denormalized', 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon_label', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -4581,14 +4579,14 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'in_subset': ['translator_minimal'], 'is_a': 'node property', 'slot_uri': 'biolink:in_taxon_label'} }) - symbol: Optional[str] = Field(None, description="""Symbol for a particular thing""", json_schema_extra = { "linkml_meta": {'alias': 'symbol', + symbol: Optional[str] = Field(default=None, description="""Symbol for a particular thing""", json_schema_extra = { "linkml_meta": {'alias': 'symbol', 'definition_uri': 'https://w3id.org/biolink/vocab/symbol', 'domain': 'named thing', 'domain_of': ['gene'], 'exact_mappings': ['AGRKB:symbol', 'gpi:DB_Object_Symbol'], 'is_a': 'node property', 'slot_uri': 'biolink:symbol'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -4607,7 +4605,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - has_biological_sequence: Optional[str] = Field(None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', + has_biological_sequence: Optional[str] = Field(default=None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', 'definition_uri': 'https://w3id.org/biolink/vocab/has_biological_sequence', 'domain': 'named thing', 'domain_of': ['genomic entity', 'gene', 'genome'], @@ -4619,7 +4617,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -4637,9 +4635,9 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'exact_mappings': ['SO:0001026', 'SIO:000984', 'WIKIDATA:Q7020'], 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', 'in_subset': ['model_organism_database'], - 'mixins': ['GenomicEntity', 'PhysicalEssence', 'OntologyClass']}) + 'mixins': ['genomic entity', 'physical essence', 'ontology class']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -4660,7 +4658,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -4678,7 +4676,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/Genome","biolink:Genome"]] = Field(["biolink:Genome"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/Genome","biolink:Genome"]] = Field(default=["biolink:Genome"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -4699,7 +4697,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -4718,7 +4716,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -4742,7 +4740,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -4763,7 +4761,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -4857,7 +4855,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -4874,7 +4872,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -4891,7 +4889,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -4910,7 +4908,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -4927,7 +4925,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -4953,12 +4951,14 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'IAO:0000136', 'RXNORM:has_tradename'], 'slot_uri': 'biolink:synonym'} }) - in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', + in_taxon: Optional[List[str]] = Field(default=None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', 'aliases': ['instance of', 'is organism source of gene product', 'organism has gene', 'gene found in organism', 'gene product has organism source'], + 'annotations': {'canonical_predicate': {'tag': 'canonical_predicate', + 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -4968,7 +4968,8 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'is_a': 'related to at instance level', 'narrow_mappings': ['RO:0002160'], 'slot_uri': 'biolink:in_taxon'} }) - in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + in_taxon_label: Optional[str] = Field(default=None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + 'annotations': {'denormalized': {'tag': 'denormalized', 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon_label', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -4976,7 +4977,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'in_subset': ['translator_minimal'], 'is_a': 'node property', 'slot_uri': 'biolink:in_taxon_label'} }) - has_biological_sequence: Optional[str] = Field(None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', + has_biological_sequence: Optional[str] = Field(default=None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', 'definition_uri': 'https://w3id.org/biolink/vocab/has_biological_sequence', 'domain': 'named thing', 'domain_of': ['genomic entity', 'gene', 'genome'], @@ -4988,7 +4989,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -5002,9 +5003,9 @@ class Checksum(Entity): """ linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://identifiers.org/brain-bican/bican-core-schema'}) - checksum_algorithm: Optional[DigestType] = Field(None, description="""The type of cryptographic hash function used to calculate the checksum value.""", json_schema_extra = { "linkml_meta": {'alias': 'checksum_algorithm', 'domain_of': ['checksum']} }) - value: Optional[str] = Field(None, description="""The checksum value obtained from a specific cryotographic hash function.""", json_schema_extra = { "linkml_meta": {'alias': 'value', 'domain_of': ['checksum']} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + checksum_algorithm: Optional[DigestType] = Field(default=None, description="""The type of cryptographic hash function used to calculate the checksum value.""", json_schema_extra = { "linkml_meta": {'alias': 'checksum_algorithm', 'domain_of': ['checksum']} }) + value: Optional[str] = Field(default=None, description="""The checksum value obtained from a specific cryotographic hash function.""", json_schema_extra = { "linkml_meta": {'alias': 'value', 'domain_of': ['checksum']} }) + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -5025,7 +5026,7 @@ class Checksum(Entity): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -5043,7 +5044,7 @@ class Checksum(Entity): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/Checksum","bican:Checksum"]] = Field(["bican:Checksum"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/Checksum","bican:Checksum"]] = Field(default=["bican:Checksum"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -5064,7 +5065,7 @@ class Checksum(Entity): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -5083,7 +5084,7 @@ class Checksum(Entity): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -5107,7 +5108,7 @@ class Checksum(Entity): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -5128,7 +5129,7 @@ class Checksum(Entity): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -5222,7 +5223,7 @@ class Checksum(Entity): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -5245,7 +5246,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -5260,16 +5261,16 @@ class GeneAnnotation(Gene): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://identifiers.org/brain-bican/genome-annotation-schema', 'id_prefixes': ['ENSEMBL', 'MGI', 'NCBIGene']}) - molecular_type: Optional[Union[BioType, str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'molecular_type', + molecular_type: Optional[Union[BioType, str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'molecular_type', 'any_of': [{'range': 'BioType'}, {'range': 'string'}], 'domain_of': ['gene annotation']} }) - source_id: Optional[str] = Field(None, description="""The authority specific identifier.""", json_schema_extra = { "linkml_meta": {'alias': 'source_id', + source_id: Optional[str] = Field(default=None, description="""The authority specific identifier.""", json_schema_extra = { "linkml_meta": {'alias': 'source_id', 'domain_of': ['gene annotation'], 'slot_uri': 'schema:identifier'} }) - referenced_in: Union[GenomeAnnotation, str] = Field(..., description="""The genome annotation that this gene annotation was referenced from.""", json_schema_extra = { "linkml_meta": {'alias': 'referenced_in', + referenced_in: Union[GenomeAnnotation, str] = Field(default=..., description="""The genome annotation that this gene annotation was referenced from.""", json_schema_extra = { "linkml_meta": {'alias': 'referenced_in', 'any_of': [{'range': 'genome annotation'}, {'range': 'string'}], 'domain_of': ['gene annotation']} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -5290,7 +5291,7 @@ class GeneAnnotation(Gene): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -5308,7 +5309,7 @@ class GeneAnnotation(Gene): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/GeneAnnotation","bican:GeneAnnotation"]] = Field(["bican:GeneAnnotation"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/GeneAnnotation","bican:GeneAnnotation"]] = Field(default=["bican:GeneAnnotation"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -5329,7 +5330,7 @@ class GeneAnnotation(Gene): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -5348,7 +5349,7 @@ class GeneAnnotation(Gene): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -5372,7 +5373,7 @@ class GeneAnnotation(Gene): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -5393,7 +5394,7 @@ class GeneAnnotation(Gene): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -5487,7 +5488,7 @@ class GeneAnnotation(Gene): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -5504,7 +5505,7 @@ class GeneAnnotation(Gene): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -5521,7 +5522,7 @@ class GeneAnnotation(Gene): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -5538,7 +5539,7 @@ class GeneAnnotation(Gene): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -5564,12 +5565,14 @@ class GeneAnnotation(Gene): 'IAO:0000136', 'RXNORM:has_tradename'], 'slot_uri': 'biolink:synonym'} }) - in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', + in_taxon: Optional[List[str]] = Field(default=None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', 'aliases': ['instance of', 'is organism source of gene product', 'organism has gene', 'gene found in organism', 'gene product has organism source'], + 'annotations': {'canonical_predicate': {'tag': 'canonical_predicate', + 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -5579,7 +5582,8 @@ class GeneAnnotation(Gene): 'is_a': 'related to at instance level', 'narrow_mappings': ['RO:0002160'], 'slot_uri': 'biolink:in_taxon'} }) - in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + in_taxon_label: Optional[str] = Field(default=None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + 'annotations': {'denormalized': {'tag': 'denormalized', 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon_label', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -5587,14 +5591,14 @@ class GeneAnnotation(Gene): 'in_subset': ['translator_minimal'], 'is_a': 'node property', 'slot_uri': 'biolink:in_taxon_label'} }) - symbol: Optional[str] = Field(None, description="""Symbol for a particular thing""", json_schema_extra = { "linkml_meta": {'alias': 'symbol', + symbol: Optional[str] = Field(default=None, description="""Symbol for a particular thing""", json_schema_extra = { "linkml_meta": {'alias': 'symbol', 'definition_uri': 'https://w3id.org/biolink/vocab/symbol', 'domain': 'named thing', 'domain_of': ['gene'], 'exact_mappings': ['AGRKB:symbol', 'gpi:DB_Object_Symbol'], 'is_a': 'node property', 'slot_uri': 'biolink:symbol'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -5613,7 +5617,7 @@ class GeneAnnotation(Gene): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - has_biological_sequence: Optional[str] = Field(None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', + has_biological_sequence: Optional[str] = Field(default=None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', 'definition_uri': 'https://w3id.org/biolink/vocab/has_biological_sequence', 'domain': 'named thing', 'domain_of': ['genomic entity', 'gene', 'genome'], @@ -5625,7 +5629,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -5639,24 +5643,24 @@ class GenomeAnnotation(Genome): """ linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://identifiers.org/brain-bican/genome-annotation-schema'}) - version: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'version', + version: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'version', 'broad_mappings': ['pav:version', 'owl:versionInfo'], 'definition_uri': 'https://w3id.org/biolink/vocab/version', 'domain': 'dataset', 'domain_of': ['genome annotation', 'genome assembly'], 'is_a': 'node property', 'slot_uri': 'biolink:version'} }) - digest: Optional[List[Union[Checksum, str]]] = Field(default_factory=list, description="""Stores checksum information.""", json_schema_extra = { "linkml_meta": {'alias': 'digest', + digest: Optional[List[Union[Checksum, str]]] = Field(default=None, description="""Stores checksum information.""", json_schema_extra = { "linkml_meta": {'alias': 'digest', 'any_of': [{'range': 'checksum'}, {'range': 'string'}], 'domain_of': ['genome annotation']} }) - content_url: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'content_url', + content_url: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'content_url', 'domain_of': ['genome annotation'], 'slot_uri': 'schema:url'} }) - authority: Optional[AuthorityType] = Field(None, description="""The organization responsible for publishing the data.""", json_schema_extra = { "linkml_meta": {'alias': 'authority', 'domain_of': ['genome annotation']} }) - reference_assembly: Union[GenomeAssembly, str] = Field(..., description="""The reference genome assembly that this genome annotation was created from.""", json_schema_extra = { "linkml_meta": {'alias': 'reference_assembly', + authority: Optional[AuthorityType] = Field(default=None, description="""The organization responsible for publishing the data.""", json_schema_extra = { "linkml_meta": {'alias': 'authority', 'domain_of': ['genome annotation']} }) + reference_assembly: Union[GenomeAssembly, str] = Field(default=..., description="""The reference genome assembly that this genome annotation was created from.""", json_schema_extra = { "linkml_meta": {'alias': 'reference_assembly', 'any_of': [{'range': 'genome assembly'}, {'range': 'string'}], 'domain_of': ['genome annotation']} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -5677,7 +5681,7 @@ class GenomeAnnotation(Genome): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -5695,7 +5699,7 @@ class GenomeAnnotation(Genome): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/GenomeAnnotation","bican:GenomeAnnotation"]] = Field(["bican:GenomeAnnotation"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/GenomeAnnotation","bican:GenomeAnnotation"]] = Field(default=["bican:GenomeAnnotation"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -5716,7 +5720,7 @@ class GenomeAnnotation(Genome): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -5735,7 +5739,7 @@ class GenomeAnnotation(Genome): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -5759,7 +5763,7 @@ class GenomeAnnotation(Genome): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -5780,7 +5784,7 @@ class GenomeAnnotation(Genome): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -5874,7 +5878,7 @@ class GenomeAnnotation(Genome): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -5891,7 +5895,7 @@ class GenomeAnnotation(Genome): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -5908,7 +5912,7 @@ class GenomeAnnotation(Genome): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -5927,7 +5931,7 @@ class GenomeAnnotation(Genome): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -5944,7 +5948,7 @@ class GenomeAnnotation(Genome): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -5970,12 +5974,14 @@ class GenomeAnnotation(Genome): 'IAO:0000136', 'RXNORM:has_tradename'], 'slot_uri': 'biolink:synonym'} }) - in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', + in_taxon: Optional[List[str]] = Field(default=None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', 'aliases': ['instance of', 'is organism source of gene product', 'organism has gene', 'gene found in organism', 'gene product has organism source'], + 'annotations': {'canonical_predicate': {'tag': 'canonical_predicate', + 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -5985,7 +5991,8 @@ class GenomeAnnotation(Genome): 'is_a': 'related to at instance level', 'narrow_mappings': ['RO:0002160'], 'slot_uri': 'biolink:in_taxon'} }) - in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + in_taxon_label: Optional[str] = Field(default=None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + 'annotations': {'denormalized': {'tag': 'denormalized', 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon_label', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -5993,7 +6000,7 @@ class GenomeAnnotation(Genome): 'in_subset': ['translator_minimal'], 'is_a': 'node property', 'slot_uri': 'biolink:in_taxon_label'} }) - has_biological_sequence: Optional[str] = Field(None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', + has_biological_sequence: Optional[str] = Field(default=None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', 'definition_uri': 'https://w3id.org/biolink/vocab/has_biological_sequence', 'domain': 'named thing', 'domain_of': ['genomic entity', 'gene', 'genome'], @@ -6005,7 +6012,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -6018,22 +6025,24 @@ class GenomeAssembly(ThingWithTaxon, NamedThing): Genome assembly to contain version and label information """ linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://identifiers.org/brain-bican/genome-annotation-schema', - 'mixins': ['ThingWithTaxon']}) + 'mixins': ['thing with taxon']}) - version: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'version', + version: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'version', 'broad_mappings': ['pav:version', 'owl:versionInfo'], 'definition_uri': 'https://w3id.org/biolink/vocab/version', 'domain': 'dataset', 'domain_of': ['genome annotation', 'genome assembly'], 'is_a': 'node property', 'slot_uri': 'biolink:version'} }) - strain: Optional[str] = Field(None, description="""The genetic variant or subtype of a species or organism.""", json_schema_extra = { "linkml_meta": {'alias': 'strain', 'domain_of': ['genome assembly']} }) - in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', + strain: Optional[str] = Field(default=None, description="""The genetic variant or subtype of a species or organism.""", json_schema_extra = { "linkml_meta": {'alias': 'strain', 'domain_of': ['genome assembly']} }) + in_taxon: Optional[List[str]] = Field(default=None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', 'aliases': ['instance of', 'is organism source of gene product', 'organism has gene', 'gene found in organism', 'gene product has organism source'], + 'annotations': {'canonical_predicate': {'tag': 'canonical_predicate', + 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -6043,7 +6052,8 @@ class GenomeAssembly(ThingWithTaxon, NamedThing): 'is_a': 'related to at instance level', 'narrow_mappings': ['RO:0002160'], 'slot_uri': 'biolink:in_taxon'} }) - in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + in_taxon_label: Optional[str] = Field(default=None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + 'annotations': {'denormalized': {'tag': 'denormalized', 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon_label', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -6051,7 +6061,7 @@ class GenomeAssembly(ThingWithTaxon, NamedThing): 'in_subset': ['translator_minimal'], 'is_a': 'node property', 'slot_uri': 'biolink:in_taxon_label'} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -6072,7 +6082,7 @@ class GenomeAssembly(ThingWithTaxon, NamedThing): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -6090,7 +6100,7 @@ class GenomeAssembly(ThingWithTaxon, NamedThing): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/GenomeAssembly","bican:GenomeAssembly"]] = Field(["bican:GenomeAssembly"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/GenomeAssembly","bican:GenomeAssembly"]] = Field(default=["bican:GenomeAssembly"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -6111,7 +6121,7 @@ class GenomeAssembly(ThingWithTaxon, NamedThing): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -6130,7 +6140,7 @@ class GenomeAssembly(ThingWithTaxon, NamedThing): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -6154,7 +6164,7 @@ class GenomeAssembly(ThingWithTaxon, NamedThing): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -6175,7 +6185,7 @@ class GenomeAssembly(ThingWithTaxon, NamedThing): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -6269,7 +6279,7 @@ class GenomeAssembly(ThingWithTaxon, NamedThing): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -6286,7 +6296,7 @@ class GenomeAssembly(ThingWithTaxon, NamedThing): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -6303,7 +6313,7 @@ class GenomeAssembly(ThingWithTaxon, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -6322,7 +6332,7 @@ class GenomeAssembly(ThingWithTaxon, NamedThing): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -6339,7 +6349,7 @@ class GenomeAssembly(ThingWithTaxon, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -6371,7 +6381,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -6383,9 +6393,9 @@ class AnnotationCollection(ConfiguredBaseModel): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://identifiers.org/brain-bican/genome-annotation-schema', 'tree_root': True}) - annotations: Optional[List[GeneAnnotation]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'annotations', 'domain_of': ['annotation collection']} }) - genome_annotations: Optional[List[GenomeAnnotation]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'genome_annotations', 'domain_of': ['annotation collection']} }) - genome_assemblies: Optional[List[GenomeAssembly]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'genome_assemblies', 'domain_of': ['annotation collection']} }) + annotations: Optional[List[GeneAnnotation]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'annotations', 'domain_of': ['annotation collection']} }) + genome_annotations: Optional[List[GenomeAnnotation]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'genome_annotations', 'domain_of': ['annotation collection']} }) + genome_assemblies: Optional[List[GenomeAssembly]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'genome_assemblies', 'domain_of': ['annotation collection']} }) # Model rebuild diff --git a/models_py-autogen/library_generation.py b/models_py-autogen/library_generation.py index 5b2796b2..0e5b2904 100644 --- a/models_py-autogen/library_generation.py +++ b/models_py-autogen/library_generation.py @@ -1,36 +1,32 @@ from __future__ import annotations + +import re +import sys from datetime import ( + date, datetime, - date + time ) from decimal import Decimal from enum import Enum -import re -import sys from typing import ( Any, ClassVar, + Dict, List, Literal, - Dict, Optional, Union ) -from pydantic.version import VERSION as PYDANTIC_VERSION -if int(PYDANTIC_VERSION[0])>=2: - from pydantic import ( - BaseModel, - ConfigDict, - Field, - RootModel, - field_validator - ) -else: - from pydantic import ( - BaseModel, - Field, - validator - ) + +from pydantic import ( + BaseModel, + ConfigDict, + Field, + RootModel, + field_validator +) + metamodel_version = "None" version = "None" @@ -1336,7 +1332,7 @@ class OntologyClass(ConfiguredBaseModel): 'mixin': True, 'see_also': ['https://github.com/biolink/biolink-model/issues/486']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -1379,7 +1375,7 @@ class QuantityValue(Annotation): 'definition_uri': 'https://w3id.org/biolink/vocab/QuantityValue', 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema'}) - has_unit: Optional[str] = Field(None, description="""connects a quantity value to a unit""", json_schema_extra = { "linkml_meta": {'alias': 'has_unit', + has_unit: Optional[str] = Field(default=None, description="""connects a quantity value to a unit""", json_schema_extra = { "linkml_meta": {'alias': 'has_unit', 'close_mappings': ['EFO:0001697', 'UO-PROPERTY:is_unit_of'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_unit', 'domain': 'quantity value', @@ -1392,7 +1388,7 @@ class QuantityValue(Annotation): 'SNOMED:has_presentation_strength_numerator_unit', 'SNOMED:has_unit_of_presentation'], 'slot_uri': 'biolink:has_unit'} }) - has_numeric_value: Optional[float] = Field(None, description="""connects a quantity value to a number""", json_schema_extra = { "linkml_meta": {'alias': 'has_numeric_value', + has_numeric_value: Optional[float] = Field(default=None, description="""connects a quantity value to a number""", json_schema_extra = { "linkml_meta": {'alias': 'has_numeric_value', 'definition_uri': 'https://w3id.org/biolink/vocab/has_numeric_value', 'domain': 'quantity value', 'domain_of': ['quantity value'], @@ -1410,7 +1406,7 @@ class Entity(ConfiguredBaseModel): 'definition_uri': 'https://w3id.org/biolink/vocab/Entity', 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema'}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -1431,7 +1427,7 @@ class Entity(ConfiguredBaseModel): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -1449,7 +1445,7 @@ class Entity(ConfiguredBaseModel): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/Entity","biolink:Entity"]] = Field(["biolink:Entity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/Entity","biolink:Entity"]] = Field(default=["biolink:Entity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -1470,7 +1466,7 @@ class Entity(ConfiguredBaseModel): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -1489,7 +1485,7 @@ class Entity(ConfiguredBaseModel): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -1524,7 +1520,7 @@ class Entity(ConfiguredBaseModel): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -1545,7 +1541,7 @@ class Entity(ConfiguredBaseModel): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -1639,7 +1635,7 @@ class Entity(ConfiguredBaseModel): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -1662,7 +1658,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -1683,7 +1679,7 @@ class NamedThing(Entity): 'dcid:Thing'], 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema'}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -1704,7 +1700,7 @@ class NamedThing(Entity): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -1722,7 +1718,7 @@ class NamedThing(Entity): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/NamedThing","biolink:NamedThing"]] = Field(["biolink:NamedThing"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/NamedThing","biolink:NamedThing"]] = Field(default=["biolink:NamedThing"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -1743,7 +1739,7 @@ class NamedThing(Entity): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -1762,7 +1758,7 @@ class NamedThing(Entity): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -1797,7 +1793,7 @@ class NamedThing(Entity): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -1818,7 +1814,7 @@ class NamedThing(Entity): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -1912,7 +1908,7 @@ class NamedThing(Entity): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -1929,7 +1925,7 @@ class NamedThing(Entity): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -1946,7 +1942,7 @@ class NamedThing(Entity): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -1965,7 +1961,7 @@ class NamedThing(Entity): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -1982,7 +1978,7 @@ class NamedThing(Entity): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -2014,7 +2010,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -2032,7 +2028,7 @@ class Attribute(NamedThing, OntologyClass): 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', 'id_prefixes': ['EDAM-DATA', 'EDAM-FORMAT', 'EDAM-OPERATION', 'EDAM-TOPIC'], 'in_subset': ['samples'], - 'mixins': ['OntologyClass'], + 'mixins': ['ontology class'], 'slot_usage': {'name': {'description': "The human-readable 'attribute name' " 'can be set to a string which reflects ' 'its context of interpretation, e.g. ' @@ -2042,7 +2038,7 @@ class Attribute(NamedThing, OntologyClass): "attribute type' slot ontology term.", 'name': 'name'}}}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -2063,7 +2059,7 @@ class Attribute(NamedThing, OntologyClass): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - category: List[Literal["https://w3id.org/biolink/vocab/Attribute","biolink:Attribute"]] = Field(["biolink:Attribute"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/Attribute","biolink:Attribute"]] = Field(default=["biolink:Attribute"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -2084,7 +2080,7 @@ class Attribute(NamedThing, OntologyClass): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -2103,7 +2099,7 @@ class Attribute(NamedThing, OntologyClass): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -2124,7 +2120,7 @@ class Attribute(NamedThing, OntologyClass): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -2218,7 +2214,7 @@ class Attribute(NamedThing, OntologyClass): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -2235,7 +2231,7 @@ class Attribute(NamedThing, OntologyClass): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -2252,7 +2248,7 @@ class Attribute(NamedThing, OntologyClass): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -2271,7 +2267,7 @@ class Attribute(NamedThing, OntologyClass): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -2288,7 +2284,7 @@ class Attribute(NamedThing, OntologyClass): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -2314,27 +2310,49 @@ class Attribute(NamedThing, OntologyClass): 'IAO:0000136', 'RXNORM:has_tradename'], 'slot_uri': 'biolink:synonym'} }) - attribute_name: Optional[str] = Field(None, description="""The human-readable 'attribute name' can be set to a string which reflects its context of interpretation, e.g. SEPIO evidence/provenance/confidence annotation or it can default to the name associated with the 'has attribute type' slot ontology term.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""The human-readable 'attribute name' can be set to a string which reflects its context of interpretation, e.g. SEPIO evidence/provenance/confidence annotation or it can default to the name associated with the 'has attribute type' slot ontology term.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', - 'domain': 'attribute', - 'domain_of': ['attribute'], + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], 'in_subset': ['translator_minimal', 'samples'], - 'is_a': 'name', - 'is_usage_slot': True, 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], - 'slot_uri': 'rdfs:label', - 'usage_slot_name': 'name'} }) - has_attribute_type: str = Field(..., description="""connects an attribute to a class that describes it""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute_type', + 'slot_uri': 'rdfs:label'} }) + has_attribute_type: str = Field(default=..., description="""connects an attribute to a class that describes it""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute_type', 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute_type', 'domain': 'attribute', 'domain_of': ['attribute'], 'in_subset': ['samples'], 'narrow_mappings': ['LOINC:has_modality_type', 'LOINC:has_view_type'], 'slot_uri': 'biolink:has_attribute_type'} }) - has_quantitative_value: Optional[List[QuantityValue]] = Field(None, description="""connects an attribute to a value""", json_schema_extra = { "linkml_meta": {'alias': 'has_quantitative_value', + has_quantitative_value: Optional[List[QuantityValue]] = Field(default=None, description="""connects an attribute to a value""", json_schema_extra = { "linkml_meta": {'alias': 'has_quantitative_value', 'definition_uri': 'https://w3id.org/biolink/vocab/has_quantitative_value', 'domain': 'attribute', 'domain_of': ['attribute'], @@ -2344,13 +2362,13 @@ class Attribute(NamedThing, OntologyClass): 'SNOMED:has_presentation_strength_denominator_value', 'SNOMED:has_presentation_strength_numerator_value'], 'slot_uri': 'biolink:has_quantitative_value'} }) - has_qualitative_value: Optional[str] = Field(None, description="""connects an attribute to a value""", json_schema_extra = { "linkml_meta": {'alias': 'has_qualitative_value', + has_qualitative_value: Optional[str] = Field(default=None, description="""connects an attribute to a value""", json_schema_extra = { "linkml_meta": {'alias': 'has_qualitative_value', 'definition_uri': 'https://w3id.org/biolink/vocab/has_qualitative_value', 'domain': 'attribute', 'domain_of': ['attribute'], 'in_subset': ['samples'], 'slot_uri': 'biolink:has_qualitative_value'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -2368,42 +2386,13 @@ class Attribute(NamedThing, OntologyClass): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - name: Optional[str] = Field(None, description="""The human-readable 'attribute name' can be set to a string which reflects its context of interpretation, e.g. SEPIO evidence/provenance/confidence annotation or it can default to the name associated with the 'has attribute type' slot ontology term.""", json_schema_extra = { "linkml_meta": {'alias': 'name', - 'definition_uri': 'https://w3id.org/biolink/vocab/name', - 'domain': 'entity', - 'domain_of': ['entity', - 'named thing', - 'organism taxon', - 'information content entity', - 'dataset', - 'physical entity', - 'activity', - 'procedure', - 'material sample', - 'biological entity', - 'macromolecular machine mixin', - 'gene or gene product', - 'gene', - 'genome', - 'Donor', - 'BrainSlab', - 'TissueSample', - 'DissociatedCellSample', - 'EnrichedCellSample', - 'BarcodedCellSample', - 'AmplifiedCdna', - 'Library', - 'LibraryAliquot', - 'LibraryPool', - 'DissectionRoiPolygon'], - 'slot_uri': 'rdfs:label'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -2421,7 +2410,7 @@ class TaxonomicRank(OntologyClass): 'id_prefixes': ['TAXRANK'], 'mappings': ['WIKIDATA:Q427626']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -2458,7 +2447,7 @@ class OrganismTaxon(NamedThing): 'narrow_mappings': ['dcid:BiologicalSpecies'], 'values_from': ['NCBITaxon']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -2479,7 +2468,7 @@ class OrganismTaxon(NamedThing): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -2497,7 +2486,7 @@ class OrganismTaxon(NamedThing): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/OrganismTaxon","biolink:OrganismTaxon"]] = Field(["biolink:OrganismTaxon"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/OrganismTaxon","biolink:OrganismTaxon"]] = Field(default=["biolink:OrganismTaxon"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -2518,7 +2507,7 @@ class OrganismTaxon(NamedThing): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -2537,7 +2526,7 @@ class OrganismTaxon(NamedThing): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -2572,7 +2561,7 @@ class OrganismTaxon(NamedThing): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -2593,7 +2582,7 @@ class OrganismTaxon(NamedThing): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -2687,7 +2676,7 @@ class OrganismTaxon(NamedThing): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -2704,7 +2693,7 @@ class OrganismTaxon(NamedThing): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -2721,7 +2710,7 @@ class OrganismTaxon(NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -2740,7 +2729,7 @@ class OrganismTaxon(NamedThing): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -2757,7 +2746,7 @@ class OrganismTaxon(NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -2783,7 +2772,7 @@ class OrganismTaxon(NamedThing): 'IAO:0000136', 'RXNORM:has_tradename'], 'slot_uri': 'biolink:synonym'} }) - has_taxonomic_rank: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'has_taxonomic_rank', + has_taxonomic_rank: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'has_taxonomic_rank', 'definition_uri': 'https://w3id.org/biolink/vocab/has_taxonomic_rank', 'domain': 'named thing', 'domain_of': ['organism taxon'], @@ -2796,7 +2785,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -2828,7 +2817,7 @@ class InformationContentEntity(NamedThing): 'STY:T171', 'STY:T185']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -2849,7 +2838,7 @@ class InformationContentEntity(NamedThing): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -2867,7 +2856,7 @@ class InformationContentEntity(NamedThing): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/InformationContentEntity","biolink:InformationContentEntity"]] = Field(["biolink:InformationContentEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/InformationContentEntity","biolink:InformationContentEntity"]] = Field(default=["biolink:InformationContentEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -2888,7 +2877,7 @@ class InformationContentEntity(NamedThing): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -2907,7 +2896,7 @@ class InformationContentEntity(NamedThing): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -2942,7 +2931,7 @@ class InformationContentEntity(NamedThing): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -2963,7 +2952,7 @@ class InformationContentEntity(NamedThing): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -3057,7 +3046,7 @@ class InformationContentEntity(NamedThing): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -3074,7 +3063,7 @@ class InformationContentEntity(NamedThing): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -3091,7 +3080,7 @@ class InformationContentEntity(NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -3110,7 +3099,7 @@ class InformationContentEntity(NamedThing): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -3127,7 +3116,7 @@ class InformationContentEntity(NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -3153,7 +3142,7 @@ class InformationContentEntity(NamedThing): 'IAO:0000136', 'RXNORM:has_tradename'], 'slot_uri': 'biolink:synonym'} }) - license: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'license', + license: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'license', 'definition_uri': 'https://w3id.org/biolink/vocab/license', 'domain': 'information content entity', 'domain_of': ['information content entity', 'dataset'], @@ -3161,21 +3150,21 @@ class InformationContentEntity(NamedThing): 'is_a': 'node property', 'narrow_mappings': ['WIKIDATA_PROPERTY:P275'], 'slot_uri': 'biolink:license'} }) - rights: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'rights', + rights: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'rights', 'definition_uri': 'https://w3id.org/biolink/vocab/rights', 'domain': 'information content entity', 'domain_of': ['information content entity', 'dataset'], 'exact_mappings': ['dct:rights'], 'is_a': 'node property', 'slot_uri': 'biolink:rights'} }) - format: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'format', + format: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'format', 'definition_uri': 'https://w3id.org/biolink/vocab/format', 'domain': 'information content entity', 'domain_of': ['information content entity', 'dataset'], 'exact_mappings': ['dct:format', 'WIKIDATA_PROPERTY:P2701'], 'is_a': 'node property', 'slot_uri': 'biolink:format'} }) - creation_date: Optional[date] = Field(None, description="""date on which an entity was created. This can be applied to nodes or edges""", json_schema_extra = { "linkml_meta": {'alias': 'creation_date', + creation_date: Optional[date] = Field(default=None, description="""date on which an entity was created. This can be applied to nodes or edges""", json_schema_extra = { "linkml_meta": {'alias': 'creation_date', 'aliases': ['publication date'], 'definition_uri': 'https://w3id.org/biolink/vocab/creation_date', 'domain': 'named thing', @@ -3189,7 +3178,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -3209,7 +3198,7 @@ class Dataset(InformationContentEntity): 'dcid:Dataset'], 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema'}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -3230,7 +3219,7 @@ class Dataset(InformationContentEntity): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -3248,7 +3237,7 @@ class Dataset(InformationContentEntity): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/Dataset","biolink:Dataset"]] = Field(["biolink:Dataset"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/Dataset","biolink:Dataset"]] = Field(default=["biolink:Dataset"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -3269,7 +3258,7 @@ class Dataset(InformationContentEntity): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -3288,7 +3277,7 @@ class Dataset(InformationContentEntity): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -3323,7 +3312,7 @@ class Dataset(InformationContentEntity): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -3344,7 +3333,7 @@ class Dataset(InformationContentEntity): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -3438,7 +3427,7 @@ class Dataset(InformationContentEntity): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -3455,7 +3444,7 @@ class Dataset(InformationContentEntity): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -3472,7 +3461,7 @@ class Dataset(InformationContentEntity): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -3491,7 +3480,7 @@ class Dataset(InformationContentEntity): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -3508,7 +3497,7 @@ class Dataset(InformationContentEntity): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -3534,7 +3523,7 @@ class Dataset(InformationContentEntity): 'IAO:0000136', 'RXNORM:has_tradename'], 'slot_uri': 'biolink:synonym'} }) - license: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'license', + license: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'license', 'definition_uri': 'https://w3id.org/biolink/vocab/license', 'domain': 'information content entity', 'domain_of': ['information content entity', 'dataset'], @@ -3542,21 +3531,21 @@ class Dataset(InformationContentEntity): 'is_a': 'node property', 'narrow_mappings': ['WIKIDATA_PROPERTY:P275'], 'slot_uri': 'biolink:license'} }) - rights: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'rights', + rights: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'rights', 'definition_uri': 'https://w3id.org/biolink/vocab/rights', 'domain': 'information content entity', 'domain_of': ['information content entity', 'dataset'], 'exact_mappings': ['dct:rights'], 'is_a': 'node property', 'slot_uri': 'biolink:rights'} }) - format: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'format', + format: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'format', 'definition_uri': 'https://w3id.org/biolink/vocab/format', 'domain': 'information content entity', 'domain_of': ['information content entity', 'dataset'], 'exact_mappings': ['dct:format', 'WIKIDATA_PROPERTY:P2701'], 'is_a': 'node property', 'slot_uri': 'biolink:format'} }) - creation_date: Optional[date] = Field(None, description="""date on which an entity was created. This can be applied to nodes or edges""", json_schema_extra = { "linkml_meta": {'alias': 'creation_date', + creation_date: Optional[date] = Field(default=None, description="""date on which an entity was created. This can be applied to nodes or edges""", json_schema_extra = { "linkml_meta": {'alias': 'creation_date', 'aliases': ['publication date'], 'definition_uri': 'https://w3id.org/biolink/vocab/creation_date', 'domain': 'named thing', @@ -3570,7 +3559,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -3610,10 +3599,10 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'definition_uri': 'https://w3id.org/biolink/vocab/PhysicalEntity', 'exact_mappings': ['STY:T072'], 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', - 'mixins': ['PhysicalEssence'], + 'mixins': ['physical essence'], 'narrow_mappings': ['STY:T073']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -3634,7 +3623,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -3652,7 +3641,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/PhysicalEntity","biolink:PhysicalEntity"]] = Field(["biolink:PhysicalEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/PhysicalEntity","biolink:PhysicalEntity"]] = Field(default=["biolink:PhysicalEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -3673,7 +3662,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -3692,7 +3681,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -3727,7 +3716,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -3748,7 +3737,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -3842,7 +3831,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -3859,7 +3848,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -3876,7 +3865,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -3895,7 +3884,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -3912,7 +3901,7 @@ class PhysicalEntity(PhysicalEssence, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -3944,7 +3933,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -3986,7 +3975,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'definition_uri': 'https://w3id.org/biolink/vocab/Activity', 'exact_mappings': ['prov:Activity', 'NCIT:C43431', 'STY:T052'], 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', - 'mixins': ['ActivityAndBehavior'], + 'mixins': ['activity and behavior'], 'narrow_mappings': ['STY:T056', 'STY:T057', 'STY:T064', @@ -3995,7 +3984,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'STY:T065', 'STY:T058']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -4016,7 +4005,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -4034,7 +4023,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/Activity","biolink:Activity"]] = Field(["biolink:Activity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/Activity","biolink:Activity"]] = Field(default=["biolink:Activity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -4055,7 +4044,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -4074,7 +4063,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -4109,7 +4098,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -4130,7 +4119,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -4224,7 +4213,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -4241,7 +4230,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -4258,7 +4247,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -4277,7 +4266,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -4294,7 +4283,7 @@ class Activity(ActivityAndBehavior, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -4326,7 +4315,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -4343,10 +4332,10 @@ class Procedure(ActivityAndBehavior, NamedThing): 'exact_mappings': ['UMLSSG:PROC', 'dcid:MedicalProcedure'], 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', 'id_prefixes': ['CPT'], - 'mixins': ['ActivityAndBehavior'], + 'mixins': ['activity and behavior'], 'narrow_mappings': ['STY:T059', 'STY:T060', 'STY:T061', 'STY:T063']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -4367,7 +4356,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -4385,7 +4374,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/Procedure","biolink:Procedure"]] = Field(["biolink:Procedure"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/Procedure","biolink:Procedure"]] = Field(default=["biolink:Procedure"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -4406,7 +4395,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -4425,7 +4414,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -4460,7 +4449,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -4481,7 +4470,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -4575,7 +4564,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -4592,7 +4581,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -4609,7 +4598,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -4628,7 +4617,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -4645,7 +4634,7 @@ class Procedure(ActivityAndBehavior, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -4677,7 +4666,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -4707,9 +4696,9 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'exact_mappings': ['OBI:0000747', 'SIO:001050'], 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', 'id_prefixes': ['BIOSAMPLE', 'GOLD.META'], - 'mixins': ['SubjectOfInvestigation']}) + 'mixins': ['subject of investigation']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -4730,7 +4719,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -4748,7 +4737,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/MaterialSample","biolink:MaterialSample"]] = Field(["biolink:MaterialSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/MaterialSample","biolink:MaterialSample"]] = Field(default=["biolink:MaterialSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -4769,7 +4758,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -4788,7 +4777,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -4823,7 +4812,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -4844,7 +4833,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -4938,7 +4927,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -4955,7 +4944,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -4972,7 +4961,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -4991,7 +4980,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -5008,7 +4997,7 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -5040,7 +5029,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -5057,12 +5046,14 @@ class ThingWithTaxon(ConfiguredBaseModel): 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', 'mixin': True}) - in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', + in_taxon: Optional[List[str]] = Field(default=None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', 'aliases': ['instance of', 'is organism source of gene product', 'organism has gene', 'gene found in organism', 'gene product has organism source'], + 'annotations': {'canonical_predicate': {'tag': 'canonical_predicate', + 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -5072,7 +5063,8 @@ class ThingWithTaxon(ConfiguredBaseModel): 'is_a': 'related to at instance level', 'narrow_mappings': ['RO:0002160'], 'slot_uri': 'biolink:in_taxon'} }) - in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + in_taxon_label: Optional[str] = Field(default=None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + 'annotations': {'denormalized': {'tag': 'denormalized', 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon_label', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -5088,13 +5080,13 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'class_uri': 'biolink:BiologicalEntity', 'definition_uri': 'https://w3id.org/biolink/vocab/BiologicalEntity', 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', - 'mixins': ['ThingWithTaxon'], + 'mixins': ['thing with taxon'], 'narrow_mappings': ['WIKIDATA:Q28845870', 'STY:T050', 'SIO:010046', 'STY:T129']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -5115,7 +5107,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -5133,7 +5125,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/BiologicalEntity","biolink:BiologicalEntity"]] = Field(["biolink:BiologicalEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/BiologicalEntity","biolink:BiologicalEntity"]] = Field(default=["biolink:BiologicalEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -5154,7 +5146,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -5173,7 +5165,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -5208,7 +5200,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -5229,7 +5221,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -5323,7 +5315,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -5340,7 +5332,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -5357,7 +5349,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -5376,7 +5368,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -5393,7 +5385,7 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -5419,12 +5411,14 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'IAO:0000136', 'RXNORM:has_tradename'], 'slot_uri': 'biolink:synonym'} }) - in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', + in_taxon: Optional[List[str]] = Field(default=None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', 'aliases': ['instance of', 'is organism source of gene product', 'organism has gene', 'gene found in organism', 'gene product has organism source'], + 'annotations': {'canonical_predicate': {'tag': 'canonical_predicate', + 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -5434,7 +5428,8 @@ class BiologicalEntity(ThingWithTaxon, NamedThing): 'is_a': 'related to at instance level', 'narrow_mappings': ['RO:0002160'], 'slot_uri': 'biolink:in_taxon'} }) - in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + in_taxon_label: Optional[str] = Field(default=None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + 'annotations': {'denormalized': {'tag': 'denormalized', 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon_label', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -5448,7 +5443,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -5464,7 +5459,7 @@ class GenomicEntity(ConfiguredBaseModel): 'mixin': True, 'narrow_mappings': ['STY:T028', 'GENO:0000897']}) - has_biological_sequence: Optional[str] = Field(None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', + has_biological_sequence: Optional[str] = Field(default=None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', 'definition_uri': 'https://w3id.org/biolink/vocab/has_biological_sequence', 'domain': 'named thing', 'domain_of': ['genomic entity', 'gene', 'genome'], @@ -5493,7 +5488,7 @@ class MacromolecularMachineMixin(ConfiguredBaseModel): 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', 'mixin': True}) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -5540,7 +5535,7 @@ class GeneOrGeneProduct(MacromolecularMachineMixin): 'id_prefixes': ['CHEMBL.TARGET', 'IUPHAR.FAMILY'], 'mixin': True}) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -5605,14 +5600,14 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'AspGD', 'PHARMGKB.GENE'], 'in_subset': ['translator_minimal', 'model_organism_database'], - 'mixins': ['GeneOrGeneProduct', - 'GenomicEntity', - 'ChemicalEntityOrGeneOrGeneProduct', - 'PhysicalEssence', - 'OntologyClass'], + 'mixins': ['gene or gene product', + 'genomic entity', + 'chemical entity or gene or gene product', + 'physical essence', + 'ontology class'], 'narrow_mappings': ['bioschemas:gene']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -5633,7 +5628,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -5651,7 +5646,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/Gene","biolink:Gene"]] = Field(["biolink:Gene"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/Gene","biolink:Gene"]] = Field(default=["biolink:Gene"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -5672,7 +5667,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -5691,7 +5686,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -5726,7 +5721,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -5747,7 +5742,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -5841,7 +5836,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -5858,7 +5853,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -5875,7 +5870,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -5892,7 +5887,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -5918,12 +5913,14 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'IAO:0000136', 'RXNORM:has_tradename'], 'slot_uri': 'biolink:synonym'} }) - in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', + in_taxon: Optional[List[str]] = Field(default=None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', 'aliases': ['instance of', 'is organism source of gene product', 'organism has gene', 'gene found in organism', 'gene product has organism source'], + 'annotations': {'canonical_predicate': {'tag': 'canonical_predicate', + 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -5933,7 +5930,8 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'is_a': 'related to at instance level', 'narrow_mappings': ['RO:0002160'], 'slot_uri': 'biolink:in_taxon'} }) - in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + in_taxon_label: Optional[str] = Field(default=None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + 'annotations': {'denormalized': {'tag': 'denormalized', 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon_label', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -5941,14 +5939,14 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'in_subset': ['translator_minimal'], 'is_a': 'node property', 'slot_uri': 'biolink:in_taxon_label'} }) - symbol: Optional[str] = Field(None, description="""Symbol for a particular thing""", json_schema_extra = { "linkml_meta": {'alias': 'symbol', + symbol: Optional[str] = Field(default=None, description="""Symbol for a particular thing""", json_schema_extra = { "linkml_meta": {'alias': 'symbol', 'definition_uri': 'https://w3id.org/biolink/vocab/symbol', 'domain': 'named thing', 'domain_of': ['gene'], 'exact_mappings': ['AGRKB:symbol', 'gpi:DB_Object_Symbol'], 'is_a': 'node property', 'slot_uri': 'biolink:symbol'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -5967,7 +5965,7 @@ class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - has_biological_sequence: Optional[str] = Field(None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', + has_biological_sequence: Optional[str] = Field(default=None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', 'definition_uri': 'https://w3id.org/biolink/vocab/has_biological_sequence', 'domain': 'named thing', 'domain_of': ['genomic entity', 'gene', 'genome'], @@ -5979,7 +5977,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -5997,9 +5995,9 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'exact_mappings': ['SO:0001026', 'SIO:000984', 'WIKIDATA:Q7020'], 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', 'in_subset': ['model_organism_database'], - 'mixins': ['GenomicEntity', 'PhysicalEssence', 'OntologyClass']}) + 'mixins': ['genomic entity', 'physical essence', 'ontology class']}) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -6020,7 +6018,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -6038,7 +6036,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://w3id.org/biolink/vocab/Genome","biolink:Genome"]] = Field(["biolink:Genome"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://w3id.org/biolink/vocab/Genome","biolink:Genome"]] = Field(default=["biolink:Genome"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -6059,7 +6057,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -6078,7 +6076,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -6113,7 +6111,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -6134,7 +6132,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -6228,7 +6226,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -6245,7 +6243,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -6262,7 +6260,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -6281,7 +6279,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -6298,7 +6296,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -6324,12 +6322,14 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'IAO:0000136', 'RXNORM:has_tradename'], 'slot_uri': 'biolink:synonym'} }) - in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', + in_taxon: Optional[List[str]] = Field(default=None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', 'aliases': ['instance of', 'is organism source of gene product', 'organism has gene', 'gene found in organism', 'gene product has organism source'], + 'annotations': {'canonical_predicate': {'tag': 'canonical_predicate', + 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -6339,7 +6339,8 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'is_a': 'related to at instance level', 'narrow_mappings': ['RO:0002160'], 'slot_uri': 'biolink:in_taxon'} }) - in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + in_taxon_label: Optional[str] = Field(default=None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + 'annotations': {'denormalized': {'tag': 'denormalized', 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon_label', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -6347,7 +6348,7 @@ class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): 'in_subset': ['translator_minimal'], 'is_a': 'node property', 'slot_uri': 'biolink:in_taxon_label'} }) - has_biological_sequence: Optional[str] = Field(None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', + has_biological_sequence: Optional[str] = Field(default=None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', 'definition_uri': 'https://w3id.org/biolink/vocab/has_biological_sequence', 'domain': 'named thing', 'domain_of': ['genomic entity', 'gene', 'genome'], @@ -6359,7 +6360,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -6375,7 +6376,7 @@ class ProvActivity(ConfiguredBaseModel): 'from_schema': 'https://identifiers.org/brain-bican/genome-prov-schema', 'mixin': True}) - used: Optional[str] = Field(None, description="""Usage is the beginning of utilizing an entity by an activity. Before usage, the activity had not begun to utilize this entity and could not have been affected by the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + used: Optional[str] = Field(default=None, description="""Usage is the beginning of utilizing an entity by an activity. Before usage, the activity had not begun to utilize this entity and could not have been affected by the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'used', 'domain_of': ['ProvActivity', 'DissectionRoiDelineation', 'TissueDissection', @@ -6397,7 +6398,7 @@ class ProvEntity(ConfiguredBaseModel): 'from_schema': 'https://identifiers.org/brain-bican/genome-prov-schema', 'mixin': True}) - was_derived_from: Optional[str] = Field(None, description="""A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + was_derived_from: Optional[str] = Field(default=None, description="""A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', 'domain_of': ['ProvEntity', 'BrainSlab', 'TissueSample', @@ -6410,7 +6411,7 @@ class ProvEntity(ConfiguredBaseModel): 'LibraryPool', 'DigitalAsset'], 'slot_uri': 'prov:wasDerivedFrom'} }) - was_generated_by: Optional[str] = Field(None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + was_generated_by: Optional[str] = Field(default=None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', 'domain_of': ['ProvEntity', 'TissueSample', 'DissociatedCellSample', @@ -6429,9 +6430,9 @@ class Checksum(Entity): """ linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://identifiers.org/brain-bican/bican-core-schema'}) - checksum_algorithm: Optional[DigestType] = Field(None, description="""The type of cryptographic hash function used to calculate the checksum value.""", json_schema_extra = { "linkml_meta": {'alias': 'checksum_algorithm', 'domain_of': ['checksum']} }) - value: Optional[str] = Field(None, description="""The checksum value obtained from a specific cryotographic hash function.""", json_schema_extra = { "linkml_meta": {'alias': 'value', 'domain_of': ['checksum']} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + checksum_algorithm: Optional[DigestType] = Field(default=None, description="""The type of cryptographic hash function used to calculate the checksum value.""", json_schema_extra = { "linkml_meta": {'alias': 'checksum_algorithm', 'domain_of': ['checksum']} }) + value: Optional[str] = Field(default=None, description="""The checksum value obtained from a specific cryotographic hash function.""", json_schema_extra = { "linkml_meta": {'alias': 'value', 'domain_of': ['checksum']} }) + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -6452,7 +6453,7 @@ class Checksum(Entity): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -6470,7 +6471,7 @@ class Checksum(Entity): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/Checksum","bican:Checksum"]] = Field(["bican:Checksum"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/Checksum","bican:Checksum"]] = Field(default=["bican:Checksum"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -6491,7 +6492,7 @@ class Checksum(Entity): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -6510,7 +6511,7 @@ class Checksum(Entity): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -6545,7 +6546,7 @@ class Checksum(Entity): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -6566,7 +6567,7 @@ class Checksum(Entity): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -6660,7 +6661,7 @@ class Checksum(Entity): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -6683,7 +6684,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -6697,7 +6698,7 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): """ linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'exact_mappings': ['NIMP:Donor'], 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', - 'mixins': ['ThingWithTaxon', 'ProvEntity'], + 'mixins': ['thing with taxon', 'ProvEntity'], 'slot_usage': {'name': {'description': 'Name of person or organism that is ' 'the source of a biological sample for ' 'scientific study. Many biological ' @@ -6707,10 +6708,13 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): 'local_name_value': 'donor_local_id'}}, 'name': 'name'}}}) - name: Optional[str] = Field(None, description="""Name of person or organism that is the source of a biological sample for scientific study. Many biological samples are generated from a single donor.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""Name of person or organism that is the source of a biological sample for scientific study. Many biological samples are generated from a single donor.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', - 'domain_of': ['entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', 'named thing', 'organism taxon', 'information content entity', @@ -6720,7 +6724,6 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): 'procedure', 'material sample', 'biological entity', - 'macromolecular machine mixin', 'gene or gene product', 'gene', 'genome', @@ -6735,50 +6738,56 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): 'LibraryAliquot', 'LibraryPool', 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'donor_local_id'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - biological_sex: Optional[Sex] = Field(None, description="""Biological sex of donor at birth""", json_schema_extra = { "linkml_meta": {'alias': 'biological_sex', + biological_sex: Optional[Sex] = Field(default=None, description="""Biological sex of donor at birth""", json_schema_extra = { "linkml_meta": {'alias': 'biological_sex', 'domain_of': ['Donor'], 'exact_mappings': ['NIMP:PD-LXUBTM45'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'sex'}}, 'slot_uri': 'bican:632d3d3f-f85b-4efc-a1ab-010fe417ae81'} }) - age_at_death_description: Optional[str] = Field(None, description="""Text description of the age of death following typical scientific convention for the species or developmental stage. For example: P56, E11.5""", json_schema_extra = { "linkml_meta": {'alias': 'age_at_death_description', + age_at_death_description: Optional[str] = Field(default=None, description="""Text description of the age of death following typical scientific convention for the species or developmental stage. For example: P56, E11.5""", json_schema_extra = { "linkml_meta": {'alias': 'age_at_death_description', 'domain_of': ['Donor'], 'exact_mappings': ['NIMP:PD-ZJZJLE33'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'age_at_death_description'}}, 'slot_uri': 'bican:0630a265-4a63-48f4-8853-66b929002306'} }) - age_at_death_reference_point: Optional[AgeAtDeathReferencePoint] = Field(None, description="""The reference point for an age interval; for example, birth or conception.""", json_schema_extra = { "linkml_meta": {'alias': 'age_at_death_reference_point', + age_at_death_reference_point: Optional[AgeAtDeathReferencePoint] = Field(default=None, description="""The reference point for an age interval; for example, birth or conception.""", json_schema_extra = { "linkml_meta": {'alias': 'age_at_death_reference_point', 'domain_of': ['Donor'], 'exact_mappings': ['NIMP:PD-RARAGG39'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'age_at_death_reference_point'}}, 'slot_uri': 'bican:3bed1f94-9d82-4ed7-afdf-79d896b24dbb'} }) - age_at_death_unit: Optional[AgeAtDeathUnit] = Field(None, description="""The unit used for representing the donor age from the reference point.""", json_schema_extra = { "linkml_meta": {'alias': 'age_at_death_unit', + age_at_death_unit: Optional[AgeAtDeathUnit] = Field(default=None, description="""The unit used for representing the donor age from the reference point.""", json_schema_extra = { "linkml_meta": {'alias': 'age_at_death_unit', 'domain_of': ['Donor'], 'exact_mappings': ['NIMP:PD-AVAVEV39'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'age_at_death_unit'}}, 'slot_uri': 'bican:b5436e99-f0a7-4c30-825d-56b88ee2ac1d'} }) - age_at_death_value: Optional[float] = Field(None, description="""The value representing the donor age from the reference point.""", json_schema_extra = { "linkml_meta": {'alias': 'age_at_death_value', + age_at_death_value: Optional[float] = Field(default=None, description="""The value representing the donor age from the reference point.""", json_schema_extra = { "linkml_meta": {'alias': 'age_at_death_value', 'domain_of': ['Donor'], 'exact_mappings': ['NIMP:PD-FTFTCP24'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'age_at_death'}}, 'slot_uri': 'bican:57e24d3c-c9c7-4ef3-9809-a35802d563ec'} }) - species: Optional[str] = Field(None, description="""Species of donor.""", json_schema_extra = { "linkml_meta": {'alias': 'donor_species', + donor_species: Optional[str] = Field(default=None, description="""Species of donor.""", json_schema_extra = { "linkml_meta": {'alias': 'donor_species', 'domain_of': ['Donor'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'donor_species'}}, 'slot_uri': 'bican:6837cb02-6bd7-4fb8-838c-9062ead96ba4'} }) - in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', + in_taxon: Optional[List[str]] = Field(default=None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', 'aliases': ['instance of', 'is organism source of gene product', 'organism has gene', 'gene found in organism', 'gene product has organism source'], + 'annotations': {'canonical_predicate': {'tag': 'canonical_predicate', + 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -6788,7 +6797,8 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): 'is_a': 'related to at instance level', 'narrow_mappings': ['RO:0002160'], 'slot_uri': 'biolink:in_taxon'} }) - in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + in_taxon_label: Optional[str] = Field(default=None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + 'annotations': {'denormalized': {'tag': 'denormalized', 'value': True}}, 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon_label', 'domain': 'thing with taxon', 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], @@ -6796,7 +6806,7 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): 'in_subset': ['translator_minimal'], 'is_a': 'node property', 'slot_uri': 'biolink:in_taxon_label'} }) - was_derived_from: Optional[str] = Field(None, description="""A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + was_derived_from: Optional[str] = Field(default=None, description="""A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', 'domain_of': ['ProvEntity', 'BrainSlab', 'TissueSample', @@ -6809,7 +6819,7 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): 'LibraryPool', 'DigitalAsset'], 'slot_uri': 'prov:wasDerivedFrom'} }) - was_generated_by: Optional[str] = Field(None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + was_generated_by: Optional[str] = Field(default=None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', 'domain_of': ['ProvEntity', 'TissueSample', 'DissociatedCellSample', @@ -6820,7 +6830,7 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): 'LibraryPool', 'DissectionRoiPolygon'], 'slot_uri': 'prov:wasGeneratedBy'} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -6841,7 +6851,7 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -6859,7 +6869,7 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/Donor","bican:Donor"]] = Field(["bican:Donor"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/Donor","bican:Donor"]] = Field(default=["bican:Donor"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -6880,7 +6890,7 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -6899,7 +6909,7 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -6920,7 +6930,7 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -7014,7 +7024,7 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -7031,7 +7041,7 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -7048,7 +7058,7 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -7067,7 +7077,7 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -7084,7 +7094,7 @@ class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -7116,7 +7126,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -7152,7 +7162,7 @@ class BrainSlab(ProvEntity, MaterialSample): 'exact_mappings': ['NIMP:has_parent'], 'name': 'was_derived_from'}}}) - was_derived_from: Optional[str] = Field(None, description="""The donor from which the brain slab was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + was_derived_from: Optional[str] = Field(default=None, description="""The donor from which the brain slab was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', 'any_of': [{'range': 'Donor'}, {'range': 'BrainSlab'}], 'domain_of': ['ProvEntity', 'BrainSlab', @@ -7167,10 +7177,13 @@ class BrainSlab(ProvEntity, MaterialSample): 'DigitalAsset'], 'exact_mappings': ['NIMP:has_parent'], 'slot_uri': 'prov:wasDerivedFrom'} }) - name: Optional[str] = Field(None, description="""Name of a thick flat piece of brain tissue obtained by slicing a whole brain, brain hemisphere or subdivision with a blade at regular interval. When multiple brain slabs are obtained from the slicing process, an ordinal is assigned to provide information about the relative positioning of the slabs.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""Name of a thick flat piece of brain tissue obtained by slicing a whole brain, brain hemisphere or subdivision with a blade at regular interval. When multiple brain slabs are obtained from the slicing process, an ordinal is assigned to provide information about the relative positioning of the slabs.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', - 'domain_of': ['entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', 'named thing', 'organism taxon', 'information content entity', @@ -7180,7 +7193,6 @@ class BrainSlab(ProvEntity, MaterialSample): 'procedure', 'material sample', 'biological entity', - 'macromolecular machine mixin', 'gene or gene product', 'gene', 'genome', @@ -7195,10 +7207,14 @@ class BrainSlab(ProvEntity, MaterialSample): 'LibraryAliquot', 'LibraryPool', 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - was_generated_by: Optional[str] = Field(None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + was_generated_by: Optional[str] = Field(default=None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', 'domain_of': ['ProvEntity', 'TissueSample', 'DissociatedCellSample', @@ -7209,7 +7225,7 @@ class BrainSlab(ProvEntity, MaterialSample): 'LibraryPool', 'DissectionRoiPolygon'], 'slot_uri': 'prov:wasGeneratedBy'} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -7230,7 +7246,7 @@ class BrainSlab(ProvEntity, MaterialSample): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -7248,7 +7264,7 @@ class BrainSlab(ProvEntity, MaterialSample): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/BrainSlab","bican:BrainSlab"]] = Field(["bican:BrainSlab"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/BrainSlab","bican:BrainSlab"]] = Field(default=["bican:BrainSlab"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -7269,7 +7285,7 @@ class BrainSlab(ProvEntity, MaterialSample): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -7288,7 +7304,7 @@ class BrainSlab(ProvEntity, MaterialSample): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -7309,7 +7325,7 @@ class BrainSlab(ProvEntity, MaterialSample): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -7403,7 +7419,7 @@ class BrainSlab(ProvEntity, MaterialSample): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -7420,7 +7436,7 @@ class BrainSlab(ProvEntity, MaterialSample): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -7437,7 +7453,7 @@ class BrainSlab(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -7456,7 +7472,7 @@ class BrainSlab(ProvEntity, MaterialSample): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -7473,7 +7489,7 @@ class BrainSlab(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -7505,7 +7521,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -7543,7 +7559,7 @@ class TissueSample(ProvEntity, MaterialSample): 'name': 'was_generated_by', 'range': 'TissueDissection'}}}) - was_derived_from: Optional[str] = Field(None, description="""The donor or brain slab from which the tissue sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + was_derived_from: Optional[str] = Field(default=None, description="""The donor or brain slab from which the tissue sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', 'domain_of': ['ProvEntity', 'BrainSlab', 'TissueSample', @@ -7557,7 +7573,7 @@ class TissueSample(ProvEntity, MaterialSample): 'DigitalAsset'], 'exact_mappings': ['NIMP:has_parent'], 'slot_uri': 'prov:wasDerivedFrom'} }) - was_generated_by: Optional[str] = Field(None, description="""The dissection process from which the tissue sample was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + was_generated_by: Optional[str] = Field(default=None, description="""The dissection process from which the tissue sample was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', 'domain_of': ['ProvEntity', 'TissueSample', 'DissociatedCellSample', @@ -7568,10 +7584,13 @@ class TissueSample(ProvEntity, MaterialSample): 'LibraryPool', 'DissectionRoiPolygon'], 'slot_uri': 'prov:wasGeneratedBy'} }) - name: Optional[str] = Field(None, description="""Identifier name for final intact piece of tissue before cell or nuclei prep. This piece of tissue will be used in dissociation and has an ROI associated with it.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""Identifier name for final intact piece of tissue before cell or nuclei prep. This piece of tissue will be used in dissociation and has an ROI associated with it.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', - 'domain_of': ['entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', 'named thing', 'organism taxon', 'information content entity', @@ -7581,7 +7600,6 @@ class TissueSample(ProvEntity, MaterialSample): 'procedure', 'material sample', 'biological entity', - 'macromolecular machine mixin', 'gene or gene product', 'gene', 'genome', @@ -7597,17 +7615,20 @@ class TissueSample(ProvEntity, MaterialSample): 'LibraryPool', 'DissectionRoiPolygon'], 'exact_mappings': ['NIMP:PD-LJCRCC35'], + 'in_subset': ['translator_minimal', 'samples'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'tissue_sample_local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'bican:2e4ca2fc-2d77-4d19-af45-d0fb7bbc2269'} }) - dissection_was_guided_by: Optional[str] = Field(None, description="""The dissection ROI polygon that was used to guide the dissection.""", json_schema_extra = { "linkml_meta": {'alias': 'dissection_was_guided_by', + dissection_was_guided_by: Optional[str] = Field(default=None, description="""The dissection ROI polygon that was used to guide the dissection.""", json_schema_extra = { "linkml_meta": {'alias': 'dissection_was_guided_by', 'domain_of': ['TissueSample'], 'exact_mappings': ['NIMP:has_parent']} }) - structure: Optional[List[str]] = Field(default_factory=list, description="""Strucure of tissue sample.""", json_schema_extra = { "linkml_meta": {'alias': 'tissue_sample_structure', + tissue_sample_structure: Optional[List[str]] = Field(default=None, description="""Strucure of tissue sample.""", json_schema_extra = { "linkml_meta": {'alias': 'tissue_sample_structure', 'domain_of': ['TissueSample'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'structure'}}} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -7628,7 +7649,7 @@ class TissueSample(ProvEntity, MaterialSample): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -7646,7 +7667,7 @@ class TissueSample(ProvEntity, MaterialSample): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/TissueSample","bican:TissueSample"]] = Field(["bican:TissueSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/TissueSample","bican:TissueSample"]] = Field(default=["bican:TissueSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -7667,7 +7688,7 @@ class TissueSample(ProvEntity, MaterialSample): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -7686,7 +7707,7 @@ class TissueSample(ProvEntity, MaterialSample): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -7707,7 +7728,7 @@ class TissueSample(ProvEntity, MaterialSample): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -7801,7 +7822,7 @@ class TissueSample(ProvEntity, MaterialSample): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -7818,7 +7839,7 @@ class TissueSample(ProvEntity, MaterialSample): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -7835,7 +7856,7 @@ class TissueSample(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -7854,7 +7875,7 @@ class TissueSample(ProvEntity, MaterialSample): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -7871,7 +7892,7 @@ class TissueSample(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -7903,7 +7924,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -7942,7 +7963,7 @@ class DissociatedCellSample(ProvEntity, MaterialSample): 'name': 'was_generated_by', 'range': 'CellDissociation'}}}) - was_generated_by: Optional[str] = Field(None, description="""The cell dissociation process from which the dissociated cell sample was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + was_generated_by: Optional[str] = Field(default=None, description="""The cell dissociation process from which the dissociated cell sample was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', 'domain_of': ['ProvEntity', 'TissueSample', 'DissociatedCellSample', @@ -7953,7 +7974,7 @@ class DissociatedCellSample(ProvEntity, MaterialSample): 'LibraryPool', 'DissectionRoiPolygon'], 'slot_uri': 'prov:wasGeneratedBy'} }) - was_derived_from: Optional[List[str]] = Field(default_factory=list, description="""The input tissue sample(s) from which dissociated cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + was_derived_from: Optional[List[str]] = Field(default=None, description="""The input tissue sample(s) from which dissociated cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', 'domain_of': ['ProvEntity', 'BrainSlab', 'TissueSample', @@ -7967,10 +7988,13 @@ class DissociatedCellSample(ProvEntity, MaterialSample): 'DigitalAsset'], 'exact_mappings': ['NIMP:has_parent'], 'slot_uri': 'prov:wasDerivedFrom'} }) - name: Optional[str] = Field(None, description="""Name of a collection of dissociated cells or nuclei derived from dissociation of a tissue sample.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""Name of a collection of dissociated cells or nuclei derived from dissociation of a tissue sample.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', - 'domain_of': ['entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', 'named thing', 'organism taxon', 'information content entity', @@ -7980,7 +8004,6 @@ class DissociatedCellSample(ProvEntity, MaterialSample): 'procedure', 'material sample', 'biological entity', - 'macromolecular machine mixin', 'gene or gene product', 'gene', 'genome', @@ -7996,23 +8019,26 @@ class DissociatedCellSample(ProvEntity, MaterialSample): 'LibraryPool', 'DissectionRoiPolygon'], 'exact_mappings': ['NIMP:PD-RQRWHS40'], + 'in_subset': ['translator_minimal', 'samples'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'dissociated_cell_sample_local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'bican:65e2c7da-9eb4-45b2-8ccb-d69ef9785ee2'} }) - cell_prep_type: Optional[DissociatedCellSampleCellPrepType] = Field(None, description="""The type of cell preparation. For example: Cells, Nuclei. This is a property of dissociated_cell_sample.""", json_schema_extra = { "linkml_meta": {'alias': 'dissociated cell sample cell prep type', + dissociated_cell_sample_cell_prep_type: Optional[DissociatedCellSampleCellPrepType] = Field(default=None, description="""The type of cell preparation. For example: Cells, Nuclei. This is a property of dissociated_cell_sample.""", json_schema_extra = { "linkml_meta": {'alias': 'dissociated cell sample cell prep type', 'domain_of': ['DissociatedCellSample'], 'exact_mappings': ['NIMP:PD-RELLGO26'], 'in_subset': ['analysis', 'tracking'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'dissociated_cell_sample_cell_prep_type'}}, 'slot_uri': 'bican:baae4ac3-f959-4594-b943-3a82ec19bd34'} }) - cell_source_oligo_name: Optional[DissociatedCellSampleCellLabelBarcode] = Field(None, description="""Name of cell source oligo used in cell plexing. The oligo molecularly tags all the cells in the dissociated cell sample and allows separate dissociated cell samples to be combined downstream in the barcoded cell sample. The oligo name is associated with a sequence in a lookup table. This sequence will be needed during alignment to associate reads with the parent source dissociated cell sample.""", json_schema_extra = { "linkml_meta": {'alias': 'dissociated cell oligo tag name', + dissociated_cell_oligo_tag_name: Optional[DissociatedCellSampleCellLabelBarcode] = Field(default=None, description="""Name of cell source oligo used in cell plexing. The oligo molecularly tags all the cells in the dissociated cell sample and allows separate dissociated cell samples to be combined downstream in the barcoded cell sample. The oligo name is associated with a sequence in a lookup table. This sequence will be needed during alignment to associate reads with the parent source dissociated cell sample.""", json_schema_extra = { "linkml_meta": {'alias': 'dissociated cell oligo tag name', 'domain_of': ['DissociatedCellSample', 'EnrichedCellSample'], 'exact_mappings': ['NIMP:PD-CFCFPS27'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'dissociated_cell_sample_cell_label_barcode'}}, 'slot_uri': 'bican:184abbaf-baff-4b5f-b51e-dd38de6006af'} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -8033,7 +8059,7 @@ class DissociatedCellSample(ProvEntity, MaterialSample): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -8051,7 +8077,7 @@ class DissociatedCellSample(ProvEntity, MaterialSample): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/DissociatedCellSample","bican:DissociatedCellSample"]] = Field(["bican:DissociatedCellSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/DissociatedCellSample","bican:DissociatedCellSample"]] = Field(default=["bican:DissociatedCellSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -8072,7 +8098,7 @@ class DissociatedCellSample(ProvEntity, MaterialSample): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -8091,7 +8117,7 @@ class DissociatedCellSample(ProvEntity, MaterialSample): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -8112,7 +8138,7 @@ class DissociatedCellSample(ProvEntity, MaterialSample): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -8206,7 +8232,7 @@ class DissociatedCellSample(ProvEntity, MaterialSample): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -8223,7 +8249,7 @@ class DissociatedCellSample(ProvEntity, MaterialSample): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -8240,7 +8266,7 @@ class DissociatedCellSample(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -8259,7 +8285,7 @@ class DissociatedCellSample(ProvEntity, MaterialSample): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -8276,7 +8302,7 @@ class DissociatedCellSample(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -8308,7 +8334,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -8353,7 +8379,7 @@ class EnrichedCellSample(ProvEntity, MaterialSample): 'by.', 'name': 'was_generated_by'}}}) - was_generated_by: Optional[str] = Field(None, description="""The cell enrichment or sample splitting process from which the enriched cell sample was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + was_generated_by: Optional[str] = Field(default=None, description="""The cell enrichment or sample splitting process from which the enriched cell sample was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', 'any_of': [{'range': 'CellEnrichment'}, {'range': 'EnrichedCellSampleSplitting'}], 'domain_of': ['ProvEntity', @@ -8366,7 +8392,7 @@ class EnrichedCellSample(ProvEntity, MaterialSample): 'LibraryPool', 'DissectionRoiPolygon'], 'slot_uri': 'prov:wasGeneratedBy'} }) - was_derived_from: Optional[List[str]] = Field(default_factory=list, description="""The dissociated or enriched cell sample(s) from which the enriched cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + was_derived_from: Optional[List[str]] = Field(default=None, description="""The dissociated or enriched cell sample(s) from which the enriched cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', 'domain_of': ['ProvEntity', 'BrainSlab', 'TissueSample', @@ -8382,10 +8408,13 @@ class EnrichedCellSample(ProvEntity, MaterialSample): 'exactly_one_of': [{'range': 'DissociatedCellSample'}, {'range': 'EnrichedCellSample'}], 'slot_uri': 'prov:wasDerivedFrom'} }) - name: Optional[str] = Field(None, description="""Name of collection of enriched cells or nuclei after enrichment process (usually via FACS using the Enrichment Plan) applied to dissociated_cell_sample.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""Name of collection of enriched cells or nuclei after enrichment process (usually via FACS using the Enrichment Plan) applied to dissociated_cell_sample.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', - 'domain_of': ['entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', 'named thing', 'organism taxon', 'information content entity', @@ -8395,7 +8424,6 @@ class EnrichedCellSample(ProvEntity, MaterialSample): 'procedure', 'material sample', 'biological entity', - 'macromolecular machine mixin', 'gene or gene product', 'gene', 'genome', @@ -8411,27 +8439,30 @@ class EnrichedCellSample(ProvEntity, MaterialSample): 'LibraryPool', 'DissectionRoiPolygon'], 'exact_mappings': ['NIMP:PD-BERWTM41'], + 'in_subset': ['translator_minimal', 'samples'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'enriched_cell_sample_local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'bican:bb3fc701-23a7-45c1-890d-7471730e0ec1'} }) - enrichment_population: Optional[str] = Field(None, description="""Actual percentage of cells as a result of using set of fluorescent marker label(s) to enrich dissociated_cell_sample with desired mix of cell populations. This plan can also be used to describe 'No FACS' where no enrichment was performed. This is a property of enriched_cell_prep_container.""", json_schema_extra = { "linkml_meta": {'alias': 'enrichment population', + enrichment_population: Optional[str] = Field(default=None, description="""Actual percentage of cells as a result of using set of fluorescent marker label(s) to enrich dissociated_cell_sample with desired mix of cell populations. This plan can also be used to describe 'No FACS' where no enrichment was performed. This is a property of enriched_cell_prep_container.""", json_schema_extra = { "linkml_meta": {'alias': 'enrichment population', 'domain_of': ['EnrichedCellSample'], 'exact_mappings': ['NIMP:PD-TZTZPI37'], 'in_subset': ['analysis'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'enrichment_population'}}, 'slot_uri': 'bican:875f1c70-f5aa-45e3-94b9-5e482f6c4830'} }) - cell_source_oligo_name: Optional[str] = Field(None, description="""Name of cell source oligo used in cell plexing. The oligo molecularly tags all the cells in the enriched cell sample and allows separate enriched cell samples to be combined downstream in the barcoded cell sample. The oligo name is associated with a sequence in a lookup table. This sequence will be needed during alignment to associate reads with the parent source enriched cell sample.""", json_schema_extra = { "linkml_meta": {'alias': 'cell_source_oligo_name', + cell_source_oligo_name: Optional[str] = Field(default=None, description="""Name of cell source oligo used in cell plexing. The oligo molecularly tags all the cells in the enriched cell sample and allows separate enriched cell samples to be combined downstream in the barcoded cell sample. The oligo name is associated with a sequence in a lookup table. This sequence will be needed during alignment to associate reads with the parent source enriched cell sample.""", json_schema_extra = { "linkml_meta": {'alias': 'cell_source_oligo_name', 'domain_of': ['DissociatedCellSample', 'EnrichedCellSample'], 'exact_mappings': ['NIMP:PD-CFCFPS27'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'enriched_cell_sample_cell_label_barcode'}}} }) - histone_modification_marker: Optional[str] = Field(None, description="""Histone modification marker antibodies (eg H3K27ac, H3K27me3, H3K9me3) used in conjunction with an Enriched Cell Source Barcode in order to combine multiple Enriched Cell Populations before Barcoded Cell Sample step for 10xMultiome method. Each of the Histone antibodies captures an essential part of the epigenome.""", json_schema_extra = { "linkml_meta": {'alias': 'histone_modification_marker', + histone_modification_marker: Optional[str] = Field(default=None, description="""Histone modification marker antibodies (eg H3K27ac, H3K27me3, H3K9me3) used in conjunction with an Enriched Cell Source Barcode in order to combine multiple Enriched Cell Populations before Barcoded Cell Sample step for 10xMultiome method. Each of the Histone antibodies captures an essential part of the epigenome.""", json_schema_extra = { "linkml_meta": {'alias': 'histone_modification_marker', 'domain_of': ['EnrichedCellSample'], 'exact_mappings': ['NIMP:PD-ESESLW44'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'histone_modification_marker'}}} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -8452,7 +8483,7 @@ class EnrichedCellSample(ProvEntity, MaterialSample): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -8470,7 +8501,7 @@ class EnrichedCellSample(ProvEntity, MaterialSample): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/EnrichedCellSample","bican:EnrichedCellSample"]] = Field(["bican:EnrichedCellSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/EnrichedCellSample","bican:EnrichedCellSample"]] = Field(default=["bican:EnrichedCellSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -8491,7 +8522,7 @@ class EnrichedCellSample(ProvEntity, MaterialSample): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -8510,7 +8541,7 @@ class EnrichedCellSample(ProvEntity, MaterialSample): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -8531,7 +8562,7 @@ class EnrichedCellSample(ProvEntity, MaterialSample): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -8625,7 +8656,7 @@ class EnrichedCellSample(ProvEntity, MaterialSample): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -8642,7 +8673,7 @@ class EnrichedCellSample(ProvEntity, MaterialSample): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -8659,7 +8690,7 @@ class EnrichedCellSample(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -8678,7 +8709,7 @@ class EnrichedCellSample(ProvEntity, MaterialSample): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -8695,7 +8726,7 @@ class EnrichedCellSample(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -8727,7 +8758,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -8774,7 +8805,7 @@ class BarcodedCellSample(ProvEntity, MaterialSample): 'name': 'was_generated_by', 'range': 'CellBarcoding'}}}) - was_generated_by: Optional[str] = Field(None, description="""The barcoding process from which the barcoded cell sample is generated from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + was_generated_by: Optional[str] = Field(default=None, description="""The barcoding process from which the barcoded cell sample is generated from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', 'domain_of': ['ProvEntity', 'TissueSample', 'DissociatedCellSample', @@ -8785,7 +8816,7 @@ class BarcodedCellSample(ProvEntity, MaterialSample): 'LibraryPool', 'DissectionRoiPolygon'], 'slot_uri': 'prov:wasGeneratedBy'} }) - was_derived_from: Optional[List[str]] = Field(default_factory=list, description="""The input dissociated or enriched cell sample(s) from which the barcoded cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + was_derived_from: Optional[List[str]] = Field(default=None, description="""The input dissociated or enriched cell sample(s) from which the barcoded cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', 'domain_of': ['ProvEntity', 'BrainSlab', 'TissueSample', @@ -8801,10 +8832,13 @@ class BarcodedCellSample(ProvEntity, MaterialSample): 'exactly_one_of': [{'range': 'DissociatedCellSample'}, {'range': 'EnrichedCellSample'}], 'slot_uri': 'prov:wasDerivedFrom'} }) - name: Optional[str] = Field(None, description="""Name of a collection of barcoded cells. Input will be either dissociated_cell_sample or enriched_cell_sample. Cell barcodes are only guaranteed to be unique within this one collection. One dissociated_cell_sample or enriched_cell_sample can lead to multiple barcoded_cell_samples.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""Name of a collection of barcoded cells. Input will be either dissociated_cell_sample or enriched_cell_sample. Cell barcodes are only guaranteed to be unique within this one collection. One dissociated_cell_sample or enriched_cell_sample can lead to multiple barcoded_cell_samples.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', - 'domain_of': ['entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', 'named thing', 'organism taxon', 'information content entity', @@ -8814,7 +8848,6 @@ class BarcodedCellSample(ProvEntity, MaterialSample): 'procedure', 'material sample', 'biological entity', - 'macromolecular machine mixin', 'gene or gene product', 'gene', 'genome', @@ -8830,17 +8863,20 @@ class BarcodedCellSample(ProvEntity, MaterialSample): 'LibraryPool', 'DissectionRoiPolygon'], 'exact_mappings': ['NIMP:PD-XEMDJF38'], + 'in_subset': ['translator_minimal', 'samples'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'barcoded_cell_sample_local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'bican:4c0e6380-e53f-4173-a474-d41e836fefe3'} }) - number_of_expected_cells: Optional[int] = Field(None, description="""Expected number of cells/nuclei of a barcoded_cell_sample that will be barcoded and available for sequencing. This is a derived number from 'Barcoded cell input quantity count' that is dependent on the \"capture rate\" of the barcoding method. It is usually a calculated fraction of the 'Barcoded cell input quantity count' going into the barcoding method.""", json_schema_extra = { "linkml_meta": {'alias': 'expected cell capture', + expected_cell_capture: Optional[int] = Field(default=None, description="""Expected number of cells/nuclei of a barcoded_cell_sample that will be barcoded and available for sequencing. This is a derived number from 'Barcoded cell input quantity count' that is dependent on the \"capture rate\" of the barcoding method. It is usually a calculated fraction of the 'Barcoded cell input quantity count' going into the barcoding method.""", json_schema_extra = { "linkml_meta": {'alias': 'expected cell capture', 'domain_of': ['BarcodedCellSample'], 'exact_mappings': ['NIMP:PD-ONONEV39'], 'in_subset': ['analysis'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'barcoded_cell_sample_number_of_expected_cells'}}, 'slot_uri': 'bican:f10e928d-5a2b-4943-af18-d8fe5d05528d'} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -8861,7 +8897,7 @@ class BarcodedCellSample(ProvEntity, MaterialSample): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -8879,7 +8915,7 @@ class BarcodedCellSample(ProvEntity, MaterialSample): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/BarcodedCellSample","bican:BarcodedCellSample"]] = Field(["bican:BarcodedCellSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/BarcodedCellSample","bican:BarcodedCellSample"]] = Field(default=["bican:BarcodedCellSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -8900,7 +8936,7 @@ class BarcodedCellSample(ProvEntity, MaterialSample): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -8919,7 +8955,7 @@ class BarcodedCellSample(ProvEntity, MaterialSample): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -8940,7 +8976,7 @@ class BarcodedCellSample(ProvEntity, MaterialSample): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -9034,7 +9070,7 @@ class BarcodedCellSample(ProvEntity, MaterialSample): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -9051,7 +9087,7 @@ class BarcodedCellSample(ProvEntity, MaterialSample): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -9068,7 +9104,7 @@ class BarcodedCellSample(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -9087,7 +9123,7 @@ class BarcodedCellSample(ProvEntity, MaterialSample): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -9104,7 +9140,7 @@ class BarcodedCellSample(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -9136,7 +9172,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -9181,7 +9217,7 @@ class AmplifiedCdna(ProvEntity, MaterialSample): 'name': 'was_generated_by', 'range': 'CdnaAmplification'}}}) - was_generated_by: Optional[str] = Field(None, description="""The cDNA amplification process from which the amplified cDNA was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + was_generated_by: Optional[str] = Field(default=None, description="""The cDNA amplification process from which the amplified cDNA was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', 'domain_of': ['ProvEntity', 'TissueSample', 'DissociatedCellSample', @@ -9192,7 +9228,7 @@ class AmplifiedCdna(ProvEntity, MaterialSample): 'LibraryPool', 'DissectionRoiPolygon'], 'slot_uri': 'prov:wasGeneratedBy'} }) - was_derived_from: Optional[str] = Field(None, description="""The input barcoded cell sample from which amplified cDNA was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + was_derived_from: Optional[str] = Field(default=None, description="""The input barcoded cell sample from which amplified cDNA was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', 'domain_of': ['ProvEntity', 'BrainSlab', 'TissueSample', @@ -9206,10 +9242,13 @@ class AmplifiedCdna(ProvEntity, MaterialSample): 'DigitalAsset'], 'exact_mappings': ['NIMP:has_parent'], 'slot_uri': 'prov:wasDerivedFrom'} }) - name: Optional[str] = Field(None, description="""Name of a collection of cDNA molecules derived and amplified from an input barcoded_cell_sample. These cDNA molecules represent the gene expression of each cell, with all cDNA molecules from a given cell retaining that cell's unique barcode from the cell barcoding step. This is a necessary step for GEX methods but is not used for ATAC methods.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""Name of a collection of cDNA molecules derived and amplified from an input barcoded_cell_sample. These cDNA molecules represent the gene expression of each cell, with all cDNA molecules from a given cell retaining that cell's unique barcode from the cell barcoding step. This is a necessary step for GEX methods but is not used for ATAC methods.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', - 'domain_of': ['entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', 'named thing', 'organism taxon', 'information content entity', @@ -9219,7 +9258,6 @@ class AmplifiedCdna(ProvEntity, MaterialSample): 'procedure', 'material sample', 'biological entity', - 'macromolecular machine mixin', 'gene or gene product', 'gene', 'genome', @@ -9235,31 +9273,34 @@ class AmplifiedCdna(ProvEntity, MaterialSample): 'LibraryPool', 'DissectionRoiPolygon'], 'exact_mappings': ['NIMP:PD-YAAGGG39'], + 'in_subset': ['translator_minimal', 'samples'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'amplified_cdna_local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'bican:e2606a11-114e-472f-9e05-33f9b6fc3089'} }) - quantity_ng: Optional[float] = Field(None, description="""Amount of cDNA produced after cDNA amplification measured in nanograms.""", json_schema_extra = { "linkml_meta": {'alias': 'amplified cDNA amplified quantity ng', + amplified_cDNA_amplified_quantity_ng: Optional[float] = Field(default=None, description="""Amount of cDNA produced after cDNA amplification measured in nanograms.""", json_schema_extra = { "linkml_meta": {'alias': 'amplified cDNA amplified quantity ng', 'domain_of': ['AmplifiedCdna', 'Library'], 'exact_mappings': ['NIMP:PD-TITIIC26'], 'in_subset': ['analysis'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'amplified_cdna_amplified_quantity_ng'}}, 'slot_uri': 'bican:0db79d05-8612-4896-b9d3-eb1558841449'} }) - pass_fail_result: Optional[AmplifiedCdnaRnaAmplificationPassFail] = Field(None, description="""Pass or Fail result based on qualitative assessment of cDNA yield and size.""", json_schema_extra = { "linkml_meta": {'alias': 'amplified cDNA RNA amplification pass-fail', + amplified_cDNA_RNA_amplification_pass_fail: Optional[AmplifiedCdnaRnaAmplificationPassFail] = Field(default=None, description="""Pass or Fail result based on qualitative assessment of cDNA yield and size.""", json_schema_extra = { "linkml_meta": {'alias': 'amplified cDNA RNA amplification pass-fail', 'domain_of': ['AmplifiedCdna', 'Library'], 'exact_mappings': ['NIMP:PD-XXXXFQ31'], 'in_subset': ['analysis'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'amplified_cdna_rna_amplification_pass_fail'}}, 'slot_uri': 'bican:bc62bdb2-7dc8-4404-bb84-ce0bbcae59e5'} }) - percent_cdna_longer_than_400bp: Optional[float] = Field(None, description="""QC metric to measure mRNA degradation of cDNA. Higher % is higher quality starting material. Over 400bp is used as a universal cutoff for intact (full length) vs degraded cDNA and is a common output from Bioanalyzer and Fragment Analyzer elecropheragrams.""", json_schema_extra = { "linkml_meta": {'alias': 'amplified cDNA percent cDNA longer than 400bp', + amplified_cDNA_percent_cDNA_longer_than_400bp: Optional[float] = Field(default=None, description="""QC metric to measure mRNA degradation of cDNA. Higher % is higher quality starting material. Over 400bp is used as a universal cutoff for intact (full length) vs degraded cDNA and is a common output from Bioanalyzer and Fragment Analyzer elecropheragrams.""", json_schema_extra = { "linkml_meta": {'alias': 'amplified cDNA percent cDNA longer than 400bp', 'domain_of': ['AmplifiedCdna'], 'exact_mappings': ['NIMP:PD-JJJJWD35'], 'in_subset': ['analysis'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'amplified_cdna_percent_cdna_longer_than_400bp'}}, 'slot_uri': 'bican:8d150467-f69e-461c-b54c-bcfd22f581e5'} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -9280,7 +9321,7 @@ class AmplifiedCdna(ProvEntity, MaterialSample): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -9298,7 +9339,7 @@ class AmplifiedCdna(ProvEntity, MaterialSample): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/AmplifiedCdna","bican:AmplifiedCdna"]] = Field(["bican:AmplifiedCdna"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/AmplifiedCdna","bican:AmplifiedCdna"]] = Field(default=["bican:AmplifiedCdna"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -9319,7 +9360,7 @@ class AmplifiedCdna(ProvEntity, MaterialSample): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -9338,7 +9379,7 @@ class AmplifiedCdna(ProvEntity, MaterialSample): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -9359,7 +9400,7 @@ class AmplifiedCdna(ProvEntity, MaterialSample): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -9453,7 +9494,7 @@ class AmplifiedCdna(ProvEntity, MaterialSample): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -9470,7 +9511,7 @@ class AmplifiedCdna(ProvEntity, MaterialSample): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -9487,7 +9528,7 @@ class AmplifiedCdna(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -9506,7 +9547,7 @@ class AmplifiedCdna(ProvEntity, MaterialSample): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -9523,7 +9564,7 @@ class AmplifiedCdna(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -9555,7 +9596,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -9598,7 +9639,7 @@ class Library(ProvEntity, MaterialSample): 'name': 'was_generated_by', 'range': 'LibraryConstruction'}}}) - was_generated_by: Optional[str] = Field(None, description="""The library construction process from which the library was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + was_generated_by: Optional[str] = Field(default=None, description="""The library construction process from which the library was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', 'domain_of': ['ProvEntity', 'TissueSample', 'DissociatedCellSample', @@ -9609,7 +9650,7 @@ class Library(ProvEntity, MaterialSample): 'LibraryPool', 'DissectionRoiPolygon'], 'slot_uri': 'prov:wasGeneratedBy'} }) - was_derived_from: Optional[str] = Field(None, description="""The input barcoded cell sample or amplified cDNA from which the library was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + was_derived_from: Optional[str] = Field(default=None, description="""The input barcoded cell sample or amplified cDNA from which the library was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', 'any_of': [{'range': 'BarcodedCellSample'}, {'range': 'AmplifiedCdna'}], 'domain_of': ['ProvEntity', 'BrainSlab', @@ -9624,10 +9665,13 @@ class Library(ProvEntity, MaterialSample): 'DigitalAsset'], 'exact_mappings': ['NIMP:has_parent'], 'slot_uri': 'prov:wasDerivedFrom'} }) - name: Optional[str] = Field(None, description="""Name of a library, which is a collection of fragmented and barcode-indexed DNA molecules for sequencing. An index or barcode is typically introduced to enable identification of library origin to allow libraries to be pooled together for sequencing.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""Name of a library, which is a collection of fragmented and barcode-indexed DNA molecules for sequencing. An index or barcode is typically introduced to enable identification of library origin to allow libraries to be pooled together for sequencing.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', - 'domain_of': ['entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', 'named thing', 'organism taxon', 'information content entity', @@ -9637,7 +9681,6 @@ class Library(ProvEntity, MaterialSample): 'procedure', 'material sample', 'biological entity', - 'macromolecular machine mixin', 'gene or gene product', 'gene', 'genome', @@ -9653,50 +9696,53 @@ class Library(ProvEntity, MaterialSample): 'LibraryPool', 'DissectionRoiPolygon'], 'exact_mappings': ['NIMP:PD-AJJUCC35'], + 'in_subset': ['translator_minimal', 'samples'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'library_local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'bican:f717e254-3630-4342-be7b-4d56376e7afe'} }) - average_size_bp: Optional[int] = Field(None, description="""Average size of the library in terms of base pairs. This is used to calculate the molarity before pooling and sequencing.""", json_schema_extra = { "linkml_meta": {'alias': 'library avg size bp', + library_avg_size_bp: Optional[int] = Field(default=None, description="""Average size of the library in terms of base pairs. This is used to calculate the molarity before pooling and sequencing.""", json_schema_extra = { "linkml_meta": {'alias': 'library avg size bp', 'domain_of': ['Library'], 'exact_mappings': ['NIMP:PD-VJVJLC46'], 'in_subset': ['analysis'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'library_avg_size_bp'}}, 'slot_uri': 'bican:f851eba9-56d1-4472-9d0c-d7f8bc33000a'} }) - concentration_nm: Optional[float] = Field(None, description="""Concentration of library in terms of nM (nMol/L). Number of molecules is needed for accurate pooling of the libraries and for generating the number of target reads/cell in sequencing.""", json_schema_extra = { "linkml_meta": {'alias': 'library concentration nm', + library_concentration_nm: Optional[float] = Field(default=None, description="""Concentration of library in terms of nM (nMol/L). Number of molecules is needed for accurate pooling of the libraries and for generating the number of target reads/cell in sequencing.""", json_schema_extra = { "linkml_meta": {'alias': 'library concentration nm', 'domain_of': ['Library'], 'exact_mappings': ['NIMP:PD-DCDCLD43'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'library_concentration_nm'}}, 'slot_uri': 'bican:90805b3f-f380-4f23-b159-e7eaa0c8f052'} }) - pass_fail_result: Optional[LibraryPrepPassFail] = Field(None, description="""Pass or Fail result based on qualitative assessment of library yield and size.""", json_schema_extra = { "linkml_meta": {'alias': 'library prep pass-fail', + library_prep_pass_fail: Optional[LibraryPrepPassFail] = Field(default=None, description="""Pass or Fail result based on qualitative assessment of library yield and size.""", json_schema_extra = { "linkml_meta": {'alias': 'library prep pass-fail', 'domain_of': ['AmplifiedCdna', 'Library'], 'exact_mappings': ['NIMP:PD-QHQHQB42'], 'in_subset': ['analysis'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'library_prep_pass_fail'}}, 'slot_uri': 'bican:6817ede2-7ead-402d-9dbc-131aca627c6c'} }) - quantity_fmol: Optional[float] = Field(None, description="""Amount of library generated in terms of femtomoles""", json_schema_extra = { "linkml_meta": {'alias': 'library quantification fmol', + library_quantification_fmol: Optional[float] = Field(default=None, description="""Amount of library generated in terms of femtomoles""", json_schema_extra = { "linkml_meta": {'alias': 'library quantification fmol', 'domain_of': ['Library'], 'exact_mappings': ['NIMP:PD-JYJYDK42'], 'in_subset': ['analysis'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'library_quantification_fmol'}}, 'slot_uri': 'bican:4c09ada7-c116-48bc-8fb1-0dcf5c4b939a'} }) - quantity_ng: Optional[float] = Field(None, description="""Amount of library generated in terms of nanograms""", json_schema_extra = { "linkml_meta": {'alias': 'library quantification ng', + library_quantification_ng: Optional[float] = Field(default=None, description="""Amount of library generated in terms of nanograms""", json_schema_extra = { "linkml_meta": {'alias': 'library quantification ng', 'domain_of': ['AmplifiedCdna', 'Library'], 'exact_mappings': ['NIMP:PD-TNTNXP37'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'library_quantification_ng'}}, 'slot_uri': 'bican:318b2d3a-dae7-4c63-bfbb-93862b92f63e'} }) - r1_r2_index: Optional[LibraryR1R2Index] = Field(None, description="""Name of the pair of library indexes used for sequencing. Indexes allow libraries to be pooled together for sequencing. Sequencing output (fastq) are demultiplexed by using the indexes for each library. The name will be associated with the sequences of i7, i5, and i5as, which are needed by SeqCores for demultiplexing. The required direction of the sequence (sense or antisense) of the index can differ depending on sequencing instruments.""", json_schema_extra = { "linkml_meta": {'alias': 'R1_R2 index name', + R1_R2_index_name: Optional[LibraryR1R2Index] = Field(default=None, description="""Name of the pair of library indexes used for sequencing. Indexes allow libraries to be pooled together for sequencing. Sequencing output (fastq) are demultiplexed by using the indexes for each library. The name will be associated with the sequences of i7, i5, and i5as, which are needed by SeqCores for demultiplexing. The required direction of the sequence (sense or antisense) of the index can differ depending on sequencing instruments.""", json_schema_extra = { "linkml_meta": {'alias': 'R1_R2 index name', 'domain_of': ['Library'], 'exact_mappings': ['NIMP:PD-VLLMWZ60'], 'in_subset': ['analysis', 'tracking'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'library_r1_r2_index'}}, 'slot_uri': 'bican:c94b5d8a-e92d-47af-8c0e-ea3b58be4d06'} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -9717,7 +9763,7 @@ class Library(ProvEntity, MaterialSample): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -9735,7 +9781,7 @@ class Library(ProvEntity, MaterialSample): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/Library","bican:Library"]] = Field(["bican:Library"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/Library","bican:Library"]] = Field(default=["bican:Library"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -9756,7 +9802,7 @@ class Library(ProvEntity, MaterialSample): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -9775,7 +9821,7 @@ class Library(ProvEntity, MaterialSample): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -9796,7 +9842,7 @@ class Library(ProvEntity, MaterialSample): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -9890,7 +9936,7 @@ class Library(ProvEntity, MaterialSample): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -9907,7 +9953,7 @@ class Library(ProvEntity, MaterialSample): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -9924,7 +9970,7 @@ class Library(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -9943,7 +9989,7 @@ class Library(ProvEntity, MaterialSample): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -9960,7 +10006,7 @@ class Library(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -9992,7 +10038,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -10030,7 +10076,7 @@ class LibraryAliquot(ProvEntity, MaterialSample): 'name': 'was_derived_from', 'range': 'Library'}}}) - was_derived_from: Optional[str] = Field(None, description="""The input library from which the library aliquot was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + was_derived_from: Optional[str] = Field(default=None, description="""The input library from which the library aliquot was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', 'domain_of': ['ProvEntity', 'BrainSlab', 'TissueSample', @@ -10044,10 +10090,13 @@ class LibraryAliquot(ProvEntity, MaterialSample): 'DigitalAsset'], 'exact_mappings': ['NIMP:has_parent'], 'slot_uri': 'prov:wasDerivedFrom'} }) - name: Optional[str] = Field(None, description="""One library in the library pool. Each Library_aliquot_name in a library pool will have a unique R1/R2 index to allow for sequencing together then separating the sequencing output by originating library aliquot through the process of demultiplexing. The resulting demultiplexed fastq files will include the library_aliquot_name.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""One library in the library pool. Each Library_aliquot_name in a library pool will have a unique R1/R2 index to allow for sequencing together then separating the sequencing output by originating library aliquot through the process of demultiplexing. The resulting demultiplexed fastq files will include the library_aliquot_name.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', - 'domain_of': ['entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', 'named thing', 'organism taxon', 'information content entity', @@ -10057,7 +10106,6 @@ class LibraryAliquot(ProvEntity, MaterialSample): 'procedure', 'material sample', 'biological entity', - 'macromolecular machine mixin', 'gene or gene product', 'gene', 'genome', @@ -10073,10 +10121,13 @@ class LibraryAliquot(ProvEntity, MaterialSample): 'LibraryPool', 'DissectionRoiPolygon'], 'exact_mappings': ['NIMP:PD-XCXCCC35'], + 'in_subset': ['translator_minimal', 'samples'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'library_aliquot_local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'bican:34191bad-d167-4335-8224-ade897d3728e'} }) - was_generated_by: Optional[str] = Field(None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + was_generated_by: Optional[str] = Field(default=None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', 'domain_of': ['ProvEntity', 'TissueSample', 'DissociatedCellSample', @@ -10087,7 +10138,7 @@ class LibraryAliquot(ProvEntity, MaterialSample): 'LibraryPool', 'DissectionRoiPolygon'], 'slot_uri': 'prov:wasGeneratedBy'} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -10108,7 +10159,7 @@ class LibraryAliquot(ProvEntity, MaterialSample): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -10126,7 +10177,7 @@ class LibraryAliquot(ProvEntity, MaterialSample): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/LibraryAliquot","bican:LibraryAliquot"]] = Field(["bican:LibraryAliquot"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/LibraryAliquot","bican:LibraryAliquot"]] = Field(default=["bican:LibraryAliquot"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -10147,7 +10198,7 @@ class LibraryAliquot(ProvEntity, MaterialSample): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -10166,7 +10217,7 @@ class LibraryAliquot(ProvEntity, MaterialSample): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -10187,7 +10238,7 @@ class LibraryAliquot(ProvEntity, MaterialSample): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -10281,7 +10332,7 @@ class LibraryAliquot(ProvEntity, MaterialSample): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -10298,7 +10349,7 @@ class LibraryAliquot(ProvEntity, MaterialSample): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -10315,7 +10366,7 @@ class LibraryAliquot(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -10334,7 +10385,7 @@ class LibraryAliquot(ProvEntity, MaterialSample): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -10351,7 +10402,7 @@ class LibraryAliquot(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -10383,7 +10434,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -10427,7 +10478,7 @@ class LibraryPool(ProvEntity, MaterialSample): 'name': 'was_generated_by', 'range': 'LibraryPooling'}}}) - was_generated_by: Optional[str] = Field(None, description="""The pooling process from which the library pool was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + was_generated_by: Optional[str] = Field(default=None, description="""The pooling process from which the library pool was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', 'domain_of': ['ProvEntity', 'TissueSample', 'DissociatedCellSample', @@ -10438,7 +10489,7 @@ class LibraryPool(ProvEntity, MaterialSample): 'LibraryPool', 'DissectionRoiPolygon'], 'slot_uri': 'prov:wasGeneratedBy'} }) - was_derived_from: Optional[List[str]] = Field(default_factory=list, description="""The input aliquot(s) from which the library pool was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + was_derived_from: Optional[List[str]] = Field(default=None, description="""The input aliquot(s) from which the library pool was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', 'domain_of': ['ProvEntity', 'BrainSlab', 'TissueSample', @@ -10452,10 +10503,13 @@ class LibraryPool(ProvEntity, MaterialSample): 'DigitalAsset'], 'exact_mappings': ['NIMP:has_parent'], 'slot_uri': 'prov:wasDerivedFrom'} }) - name: Optional[str] = Field(None, description="""Library lab's library pool name. For some labs this may be the same as \"Libray pool tube local name\". Other labs distinguish between the local tube label of the library pool and the library pool name provided to SeqCore for tracking. Local Pool Name is used to communicate sequencing status between SeqCore and Library Labs.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""Library lab's library pool name. For some labs this may be the same as \"Libray pool tube local name\". Other labs distinguish between the local tube label of the library pool and the library pool name provided to SeqCore for tracking. Local Pool Name is used to communicate sequencing status between SeqCore and Library Labs.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', - 'domain_of': ['entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', 'named thing', 'organism taxon', 'information content entity', @@ -10465,7 +10519,6 @@ class LibraryPool(ProvEntity, MaterialSample): 'procedure', 'material sample', 'biological entity', - 'macromolecular machine mixin', 'gene or gene product', 'gene', 'genome', @@ -10481,17 +10534,20 @@ class LibraryPool(ProvEntity, MaterialSample): 'LibraryPool', 'DissectionRoiPolygon'], 'exact_mappings': ['NIMP:PD-KKIAPA48'], + 'in_subset': ['translator_minimal', 'samples'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'library_pool_local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'bican:29e0578b-6427-4c93-b29b-bde27fbadeec'} }) - local_tube_id: Optional[str] = Field(None, description="""Library Pool Tube local name. Label of the tube containing the library pool, which is made up of multiple library_aliquots. This is a Library Lab local tube name, before the pool is aliquoted to the Seq Core provided tube 'Library Pool Tube Name'.""", json_schema_extra = { "linkml_meta": {'alias': 'library_pool_tube_internal_label', + library_pool_tube_internal_label: Optional[str] = Field(default=None, description="""Library Pool Tube local name. Label of the tube containing the library pool, which is made up of multiple library_aliquots. This is a Library Lab local tube name, before the pool is aliquoted to the Seq Core provided tube 'Library Pool Tube Name'.""", json_schema_extra = { "linkml_meta": {'alias': 'library_pool_tube_internal_label', 'domain_of': ['LibraryPool'], 'exact_mappings': ['NIMP:PD-WNYWPA48'], 'in_subset': ['analysis', 'tracking'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'library_pool_local_tube_id'}}, 'slot_uri': 'bican:f1fdea98-7849-4def-a62f-a04cbbf98922'} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -10512,7 +10568,7 @@ class LibraryPool(ProvEntity, MaterialSample): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -10530,7 +10586,7 @@ class LibraryPool(ProvEntity, MaterialSample): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/LibraryPool","bican:LibraryPool"]] = Field(["bican:LibraryPool"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/LibraryPool","bican:LibraryPool"]] = Field(default=["bican:LibraryPool"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -10551,7 +10607,7 @@ class LibraryPool(ProvEntity, MaterialSample): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -10570,7 +10626,7 @@ class LibraryPool(ProvEntity, MaterialSample): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -10591,7 +10647,7 @@ class LibraryPool(ProvEntity, MaterialSample): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -10685,7 +10741,7 @@ class LibraryPool(ProvEntity, MaterialSample): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -10702,7 +10758,7 @@ class LibraryPool(ProvEntity, MaterialSample): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -10719,7 +10775,7 @@ class LibraryPool(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -10738,7 +10794,7 @@ class LibraryPool(ProvEntity, MaterialSample): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -10755,7 +10811,7 @@ class LibraryPool(ProvEntity, MaterialSample): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -10787,7 +10843,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -10808,7 +10864,7 @@ class DissectionRoiDelineation(ProvActivity, Procedure): 'name': 'used', 'range': 'BrainSlab'}}}) - used: Optional[str] = Field(None, description="""The brain slab that was annotated by the delineation process.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + used: Optional[str] = Field(default=None, description="""The brain slab that was annotated by the delineation process.""", json_schema_extra = { "linkml_meta": {'alias': 'used', 'domain_of': ['ProvActivity', 'DissectionRoiDelineation', 'TissueDissection', @@ -10820,7 +10876,7 @@ class DissectionRoiDelineation(ProvActivity, Procedure): 'LibraryConstruction', 'LibraryPooling'], 'slot_uri': 'prov:used'} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -10841,7 +10897,7 @@ class DissectionRoiDelineation(ProvActivity, Procedure): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -10859,7 +10915,7 @@ class DissectionRoiDelineation(ProvActivity, Procedure): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/DissectionRoiDelineation","bican:DissectionRoiDelineation"]] = Field(["bican:DissectionRoiDelineation"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/DissectionRoiDelineation","bican:DissectionRoiDelineation"]] = Field(default=["bican:DissectionRoiDelineation"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -10880,7 +10936,7 @@ class DissectionRoiDelineation(ProvActivity, Procedure): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -10899,7 +10955,7 @@ class DissectionRoiDelineation(ProvActivity, Procedure): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -10934,7 +10990,7 @@ class DissectionRoiDelineation(ProvActivity, Procedure): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -10955,7 +11011,7 @@ class DissectionRoiDelineation(ProvActivity, Procedure): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -11049,7 +11105,7 @@ class DissectionRoiDelineation(ProvActivity, Procedure): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -11066,7 +11122,7 @@ class DissectionRoiDelineation(ProvActivity, Procedure): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -11083,7 +11139,7 @@ class DissectionRoiDelineation(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -11102,7 +11158,7 @@ class DissectionRoiDelineation(ProvActivity, Procedure): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -11119,7 +11175,7 @@ class DissectionRoiDelineation(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -11151,7 +11207,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -11168,20 +11224,10 @@ class TissueDissection(ProvActivity, Procedure): 'mixins': ['ProvActivity'], 'slot_usage': {'used': {'description': 'The brain slab from which the tissue ' 'sample was dissected from.', - 'domain_of': ['ProvActivity', - 'DissectionRoiDelineation', - 'TissueDissection', - 'CellDissociation', - 'CellEnrichment', - 'EnrichedCellSampleSplitting', - 'CellBarcoding', - 'CdnaAmplification', - 'LibraryConstruction', - 'LibraryPooling'], 'name': 'used', 'range': 'BrainSlab'}}}) - used: Optional[str] = Field(None, description="""The brain slab from which the tissue sample was dissected from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + used: Optional[str] = Field(default=None, description="""The brain slab from which the tissue sample was dissected from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', 'domain_of': ['ProvActivity', 'DissectionRoiDelineation', 'TissueDissection', @@ -11193,8 +11239,8 @@ class TissueDissection(ProvActivity, Procedure): 'LibraryConstruction', 'LibraryPooling'], 'slot_uri': 'prov:used'} }) - was_guided_by: Optional[str] = Field(None, description="""The dissection ROI polygon which was used to guide the tissue dissection.""", json_schema_extra = { "linkml_meta": {'alias': 'was_guided_by', 'domain_of': ['TissueDissection']} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + was_guided_by: Optional[str] = Field(default=None, description="""The dissection ROI polygon which was used to guide the tissue dissection.""", json_schema_extra = { "linkml_meta": {'alias': 'was_guided_by', 'domain_of': ['TissueDissection']} }) + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -11215,7 +11261,7 @@ class TissueDissection(ProvActivity, Procedure): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -11233,7 +11279,7 @@ class TissueDissection(ProvActivity, Procedure): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/TissueDissection","bican:TissueDissection"]] = Field(["bican:TissueDissection"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/TissueDissection","bican:TissueDissection"]] = Field(default=["bican:TissueDissection"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -11254,7 +11300,7 @@ class TissueDissection(ProvActivity, Procedure): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -11273,7 +11319,7 @@ class TissueDissection(ProvActivity, Procedure): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -11308,7 +11354,7 @@ class TissueDissection(ProvActivity, Procedure): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -11329,7 +11375,7 @@ class TissueDissection(ProvActivity, Procedure): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -11423,7 +11469,7 @@ class TissueDissection(ProvActivity, Procedure): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -11440,7 +11486,7 @@ class TissueDissection(ProvActivity, Procedure): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -11457,7 +11503,7 @@ class TissueDissection(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -11476,7 +11522,7 @@ class TissueDissection(ProvActivity, Procedure): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -11493,7 +11539,7 @@ class TissueDissection(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -11525,7 +11571,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -11543,21 +11589,11 @@ class CellDissociation(ProvActivity, Procedure): 'slot_usage': {'used': {'description': 'The input tissue sample(s) from which ' 'the dissociated cell sample was ' 'derived from.', - 'domain_of': ['ProvActivity', - 'DissectionRoiDelineation', - 'TissueDissection', - 'CellDissociation', - 'CellEnrichment', - 'EnrichedCellSampleSplitting', - 'CellBarcoding', - 'CdnaAmplification', - 'LibraryConstruction', - 'LibraryPooling'], 'multivalued': True, 'name': 'used', 'range': 'TissueSample'}}}) - used: Optional[List[str]] = Field(default_factory=list, description="""The input tissue sample(s) from which the dissociated cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + used: Optional[List[str]] = Field(default=None, description="""The input tissue sample(s) from which the dissociated cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', 'domain_of': ['ProvActivity', 'DissectionRoiDelineation', 'TissueDissection', @@ -11569,7 +11605,7 @@ class CellDissociation(ProvActivity, Procedure): 'LibraryConstruction', 'LibraryPooling'], 'slot_uri': 'prov:used'} }) - process_date: Optional[str] = Field(None, description="""Date of cell dissociation process.""", json_schema_extra = { "linkml_meta": {'alias': 'process_date', + process_date: Optional[str] = Field(default=None, description="""Date of cell dissociation process.""", json_schema_extra = { "linkml_meta": {'alias': 'process_date', 'domain_of': ['CellDissociation', 'CellEnrichment', 'CellBarcoding', @@ -11579,7 +11615,7 @@ class CellDissociation(ProvActivity, Procedure): 'exact_mappings': ['NIMP:PD-BUBUFE27'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'dissociated_cell_sample_preparation_date'}}} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -11600,7 +11636,7 @@ class CellDissociation(ProvActivity, Procedure): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -11618,7 +11654,7 @@ class CellDissociation(ProvActivity, Procedure): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/CellDissociation","bican:CellDissociation"]] = Field(["bican:CellDissociation"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/CellDissociation","bican:CellDissociation"]] = Field(default=["bican:CellDissociation"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -11639,7 +11675,7 @@ class CellDissociation(ProvActivity, Procedure): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -11658,7 +11694,7 @@ class CellDissociation(ProvActivity, Procedure): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -11693,7 +11729,7 @@ class CellDissociation(ProvActivity, Procedure): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -11714,7 +11750,7 @@ class CellDissociation(ProvActivity, Procedure): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -11808,7 +11844,7 @@ class CellDissociation(ProvActivity, Procedure): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -11825,7 +11861,7 @@ class CellDissociation(ProvActivity, Procedure): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -11842,7 +11878,7 @@ class CellDissociation(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -11861,7 +11897,7 @@ class CellDissociation(ProvActivity, Procedure): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -11878,7 +11914,7 @@ class CellDissociation(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -11910,7 +11946,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -11928,21 +11964,11 @@ class CellEnrichment(ProvActivity, Procedure): 'slot_usage': {'used': {'description': 'The input dissociated cell sample(s) ' 'from which the enriched cell sample ' 'was derived from.', - 'domain_of': ['ProvActivity', - 'DissectionRoiDelineation', - 'TissueDissection', - 'CellDissociation', - 'CellEnrichment', - 'EnrichedCellSampleSplitting', - 'CellBarcoding', - 'CdnaAmplification', - 'LibraryConstruction', - 'LibraryPooling'], 'multivalued': True, 'name': 'used', 'range': 'DissociatedCellSample'}}}) - used: Optional[List[str]] = Field(default_factory=list, description="""The input dissociated cell sample(s) from which the enriched cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + used: Optional[List[str]] = Field(default=None, description="""The input dissociated cell sample(s) from which the enriched cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', 'domain_of': ['ProvActivity', 'DissectionRoiDelineation', 'TissueDissection', @@ -11954,7 +11980,7 @@ class CellEnrichment(ProvActivity, Procedure): 'LibraryConstruction', 'LibraryPooling'], 'slot_uri': 'prov:used'} }) - process_date: Optional[str] = Field(None, description="""Date of cell enrichment process.""", json_schema_extra = { "linkml_meta": {'alias': 'process_date', + process_date: Optional[str] = Field(default=None, description="""Date of cell enrichment process.""", json_schema_extra = { "linkml_meta": {'alias': 'process_date', 'domain_of': ['CellDissociation', 'CellEnrichment', 'CellBarcoding', @@ -11964,7 +11990,7 @@ class CellEnrichment(ProvActivity, Procedure): 'exact_mappings': ['NIMP:PD-PFPFFC28'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'enriched_cell_sample_preparation_date'}}} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -11985,7 +12011,7 @@ class CellEnrichment(ProvActivity, Procedure): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -12003,7 +12029,7 @@ class CellEnrichment(ProvActivity, Procedure): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/CellEnrichment","bican:CellEnrichment"]] = Field(["bican:CellEnrichment"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/CellEnrichment","bican:CellEnrichment"]] = Field(default=["bican:CellEnrichment"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -12024,7 +12050,7 @@ class CellEnrichment(ProvActivity, Procedure): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -12043,7 +12069,7 @@ class CellEnrichment(ProvActivity, Procedure): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -12078,7 +12104,7 @@ class CellEnrichment(ProvActivity, Procedure): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -12099,7 +12125,7 @@ class CellEnrichment(ProvActivity, Procedure): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -12193,7 +12219,7 @@ class CellEnrichment(ProvActivity, Procedure): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -12210,7 +12236,7 @@ class CellEnrichment(ProvActivity, Procedure): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -12227,7 +12253,7 @@ class CellEnrichment(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -12246,7 +12272,7 @@ class CellEnrichment(ProvActivity, Procedure): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -12263,7 +12289,7 @@ class CellEnrichment(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -12295,7 +12321,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -12313,20 +12339,10 @@ class EnrichedCellSampleSplitting(ProvActivity, Procedure): 'slot_usage': {'used': {'description': 'The enrichment cell sample splitting ' 'process from which the enriched cell ' 'sample was generated by.', - 'domain_of': ['ProvActivity', - 'DissectionRoiDelineation', - 'TissueDissection', - 'CellDissociation', - 'CellEnrichment', - 'EnrichedCellSampleSplitting', - 'CellBarcoding', - 'CdnaAmplification', - 'LibraryConstruction', - 'LibraryPooling'], 'name': 'used', 'range': 'EnrichedCellSample'}}}) - used: Optional[str] = Field(None, description="""The enrichment cell sample splitting process from which the enriched cell sample was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + used: Optional[str] = Field(default=None, description="""The enrichment cell sample splitting process from which the enriched cell sample was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'used', 'domain_of': ['ProvActivity', 'DissectionRoiDelineation', 'TissueDissection', @@ -12338,7 +12354,7 @@ class EnrichedCellSampleSplitting(ProvActivity, Procedure): 'LibraryConstruction', 'LibraryPooling'], 'slot_uri': 'prov:used'} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -12359,7 +12375,7 @@ class EnrichedCellSampleSplitting(ProvActivity, Procedure): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -12377,7 +12393,7 @@ class EnrichedCellSampleSplitting(ProvActivity, Procedure): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/EnrichedCellSampleSplitting","bican:EnrichedCellSampleSplitting"]] = Field(["bican:EnrichedCellSampleSplitting"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/EnrichedCellSampleSplitting","bican:EnrichedCellSampleSplitting"]] = Field(default=["bican:EnrichedCellSampleSplitting"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -12398,7 +12414,7 @@ class EnrichedCellSampleSplitting(ProvActivity, Procedure): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -12417,7 +12433,7 @@ class EnrichedCellSampleSplitting(ProvActivity, Procedure): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -12452,7 +12468,7 @@ class EnrichedCellSampleSplitting(ProvActivity, Procedure): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -12473,7 +12489,7 @@ class EnrichedCellSampleSplitting(ProvActivity, Procedure): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -12567,7 +12583,7 @@ class EnrichedCellSampleSplitting(ProvActivity, Procedure): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -12584,7 +12600,7 @@ class EnrichedCellSampleSplitting(ProvActivity, Procedure): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -12601,7 +12617,7 @@ class EnrichedCellSampleSplitting(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -12620,7 +12636,7 @@ class EnrichedCellSampleSplitting(ProvActivity, Procedure): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -12637,7 +12653,7 @@ class EnrichedCellSampleSplitting(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -12669,7 +12685,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -12688,22 +12704,12 @@ class CellBarcoding(ProvActivity, Procedure): 'cell sample(s) from which the ' 'barcoded cell sample was derived ' 'from.', - 'domain_of': ['ProvActivity', - 'DissectionRoiDelineation', - 'TissueDissection', - 'CellDissociation', - 'CellEnrichment', - 'EnrichedCellSampleSplitting', - 'CellBarcoding', - 'CdnaAmplification', - 'LibraryConstruction', - 'LibraryPooling'], 'exactly_one_of': [{'range': 'DissociatedCellSample'}, {'range': 'EnrichedCellSample'}], 'multivalued': True, 'name': 'used'}}}) - used: Optional[List[str]] = Field(default_factory=list, description="""The input dissociated or enriched cell sample(s) from which the barcoded cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + used: Optional[List[str]] = Field(default=None, description="""The input dissociated or enriched cell sample(s) from which the barcoded cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', 'domain_of': ['ProvActivity', 'DissectionRoiDelineation', 'TissueDissection', @@ -12717,21 +12723,21 @@ class CellBarcoding(ProvActivity, Procedure): 'exactly_one_of': [{'range': 'DissociatedCellSample'}, {'range': 'EnrichedCellSample'}], 'slot_uri': 'prov:used'} }) - port_well: Optional[str] = Field(None, description="""Specific position of the loaded port of the 10x chip. An Enriched or Dissociated Cell Sample is loaded into a port on a chip (creating a Barcoded Cell Sample). Can be left null for non-10x methods.""", json_schema_extra = { "linkml_meta": {'alias': 'barcoded cell sample port well', + barcoded_cell_sample_port_well: Optional[str] = Field(default=None, description="""Specific position of the loaded port of the 10x chip. An Enriched or Dissociated Cell Sample is loaded into a port on a chip (creating a Barcoded Cell Sample). Can be left null for non-10x methods.""", json_schema_extra = { "linkml_meta": {'alias': 'barcoded cell sample port well', 'domain_of': ['CellBarcoding'], 'exact_mappings': ['NIMP:PD-KJKJZK32'], 'in_subset': ['analysis'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'barcoded_cell_sample_port_well'}}, 'slot_uri': 'bican:aca38100-d245-4be4-9be3-ba27192779fe'} }) - input_quantity: Optional[int] = Field(None, description="""Number of enriched or dissociated cells/nuclei going into the barcoding process.""", json_schema_extra = { "linkml_meta": {'alias': 'barcoded cell input quantity count', + barcoded_cell_input_quantity_count: Optional[int] = Field(default=None, description="""Number of enriched or dissociated cells/nuclei going into the barcoding process.""", json_schema_extra = { "linkml_meta": {'alias': 'barcoded cell input quantity count', 'domain_of': ['CellBarcoding'], 'exact_mappings': ['NIMP:PD-ZZZZWQ40'], 'in_subset': ['analysis'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'barcoded_cell_input_quantity_count'}}, 'slot_uri': 'bican:aa534269-7c9b-4b63-b990-eea8cda56d0e'} }) - process_date: Optional[str] = Field(None, description="""Date of cell barcoding process.""", json_schema_extra = { "linkml_meta": {'alias': 'process_date', + process_date: Optional[str] = Field(default=None, description="""Date of cell barcoding process.""", json_schema_extra = { "linkml_meta": {'alias': 'process_date', 'domain_of': ['CellDissociation', 'CellEnrichment', 'CellBarcoding', @@ -12741,12 +12747,12 @@ class CellBarcoding(ProvActivity, Procedure): 'exact_mappings': ['NIMP:PD-SHSHZS25'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'barcoded_cell_sample_preparation_date'}}} }) - method: Optional[BarcodedCellSampleTechnique] = Field(None, description="""Standardized nomenclature to describe the general barcoding method used. For example: Multiome, ATAC Only, GEX Only or snm3C-seq.""", json_schema_extra = { "linkml_meta": {'alias': 'method', + method: Optional[BarcodedCellSampleTechnique] = Field(default=None, description="""Standardized nomenclature to describe the general barcoding method used. For example: Multiome, ATAC Only, GEX Only or snm3C-seq.""", json_schema_extra = { "linkml_meta": {'alias': 'method', 'domain_of': ['CellBarcoding', 'LibraryConstruction'], 'exact_mappings': ['NIMP:PD-TDTDDF25'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'barcoded_cell_sample_technique'}}} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -12767,7 +12773,7 @@ class CellBarcoding(ProvActivity, Procedure): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -12785,7 +12791,7 @@ class CellBarcoding(ProvActivity, Procedure): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/CellBarcoding","bican:CellBarcoding"]] = Field(["bican:CellBarcoding"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/CellBarcoding","bican:CellBarcoding"]] = Field(default=["bican:CellBarcoding"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -12806,7 +12812,7 @@ class CellBarcoding(ProvActivity, Procedure): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -12825,7 +12831,7 @@ class CellBarcoding(ProvActivity, Procedure): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -12860,7 +12866,7 @@ class CellBarcoding(ProvActivity, Procedure): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -12881,7 +12887,7 @@ class CellBarcoding(ProvActivity, Procedure): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -12975,7 +12981,7 @@ class CellBarcoding(ProvActivity, Procedure): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -12992,7 +12998,7 @@ class CellBarcoding(ProvActivity, Procedure): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -13009,7 +13015,7 @@ class CellBarcoding(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -13028,7 +13034,7 @@ class CellBarcoding(ProvActivity, Procedure): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -13045,7 +13051,7 @@ class CellBarcoding(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -13077,7 +13083,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -13095,20 +13101,10 @@ class CdnaAmplification(ProvActivity, Procedure): 'slot_usage': {'used': {'description': 'The input barcoded cell sample from ' 'which amplified cDNA was derived ' 'from.', - 'domain_of': ['ProvActivity', - 'DissectionRoiDelineation', - 'TissueDissection', - 'CellDissociation', - 'CellEnrichment', - 'EnrichedCellSampleSplitting', - 'CellBarcoding', - 'CdnaAmplification', - 'LibraryConstruction', - 'LibraryPooling'], 'name': 'used', 'range': 'BarcodedCellSample'}}}) - used: Optional[str] = Field(None, description="""The input barcoded cell sample from which amplified cDNA was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + used: Optional[str] = Field(default=None, description="""The input barcoded cell sample from which amplified cDNA was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', 'domain_of': ['ProvActivity', 'DissectionRoiDelineation', 'TissueDissection', @@ -13120,14 +13116,14 @@ class CdnaAmplification(ProvActivity, Procedure): 'LibraryConstruction', 'LibraryPooling'], 'slot_uri': 'prov:used'} }) - pcr_cycles: Optional[int] = Field(None, description="""Number of PCR cycles used during cDNA amplification for this cDNA.""", json_schema_extra = { "linkml_meta": {'alias': 'amplified cDNA PCR cycles', + amplified_cDNA_PCR_cycles: Optional[int] = Field(default=None, description="""Number of PCR cycles used during cDNA amplification for this cDNA.""", json_schema_extra = { "linkml_meta": {'alias': 'amplified cDNA PCR cycles', 'domain_of': ['CdnaAmplification'], 'exact_mappings': ['NIMP:PD-OKOKQD38'], 'in_subset': ['analysis'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'amplified_cdna_pcr_cycles'}}, 'slot_uri': 'bican:3827634c-3f8f-4760-b358-86ce4b030238'} }) - process_date: Optional[date] = Field(None, description="""Date of cDNA amplification.""", json_schema_extra = { "linkml_meta": {'alias': 'cDNA amplification process date', + cDNA_amplification_process_date: Optional[date] = Field(default=None, description="""Date of cDNA amplification.""", json_schema_extra = { "linkml_meta": {'alias': 'cDNA amplification process date', 'domain_of': ['CellDissociation', 'CellEnrichment', 'CellBarcoding', @@ -13138,14 +13134,14 @@ class CdnaAmplification(ProvActivity, Procedure): 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'amplified_cdna_preparation_date'}}, 'slot_uri': 'bican:6cc333e7-9b98-497f-b7b1-eae904db2400'} }) - set: Optional[str] = Field(None, description="""cDNA amplification set, containing multiple amplified_cDNA_names that were processed at the same time.""", json_schema_extra = { "linkml_meta": {'alias': 'cDNA amplification set', + cDNA_amplification_set: Optional[str] = Field(default=None, description="""cDNA amplification set, containing multiple amplified_cDNA_names that were processed at the same time.""", json_schema_extra = { "linkml_meta": {'alias': 'cDNA amplification set', 'domain_of': ['CdnaAmplification', 'LibraryConstruction'], 'exact_mappings': ['NIMP:PD-SCSCTM41'], 'in_subset': ['analysis'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'cdna_amplification_set'}}, 'slot_uri': 'bican:42e98a88-50b3-4ea2-871b-2142f6a0dfdd'} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -13166,7 +13162,7 @@ class CdnaAmplification(ProvActivity, Procedure): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -13184,7 +13180,7 @@ class CdnaAmplification(ProvActivity, Procedure): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/CdnaAmplification","bican:CdnaAmplification"]] = Field(["bican:CdnaAmplification"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/CdnaAmplification","bican:CdnaAmplification"]] = Field(default=["bican:CdnaAmplification"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -13205,7 +13201,7 @@ class CdnaAmplification(ProvActivity, Procedure): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -13224,7 +13220,7 @@ class CdnaAmplification(ProvActivity, Procedure): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -13259,7 +13255,7 @@ class CdnaAmplification(ProvActivity, Procedure): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -13280,7 +13276,7 @@ class CdnaAmplification(ProvActivity, Procedure): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -13374,7 +13370,7 @@ class CdnaAmplification(ProvActivity, Procedure): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -13391,7 +13387,7 @@ class CdnaAmplification(ProvActivity, Procedure): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -13408,7 +13404,7 @@ class CdnaAmplification(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -13427,7 +13423,7 @@ class CdnaAmplification(ProvActivity, Procedure): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -13444,7 +13440,7 @@ class CdnaAmplification(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -13476,7 +13472,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -13496,19 +13492,9 @@ class LibraryConstruction(ProvActivity, Procedure): 'description': 'The input barcoded cell sample or ' 'amplified cDNA from which the library ' 'was derived from.', - 'domain_of': ['ProvActivity', - 'DissectionRoiDelineation', - 'TissueDissection', - 'CellDissociation', - 'CellEnrichment', - 'EnrichedCellSampleSplitting', - 'CellBarcoding', - 'CdnaAmplification', - 'LibraryConstruction', - 'LibraryPooling'], 'name': 'used'}}}) - used: Optional[str] = Field(None, description="""The input barcoded cell sample or amplified cDNA from which the library was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + used: Optional[str] = Field(default=None, description="""The input barcoded cell sample or amplified cDNA from which the library was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', 'any_of': [{'range': 'BarcodedCellSample'}, {'range': 'AmplifiedCdna'}], 'domain_of': ['ProvActivity', 'DissectionRoiDelineation', @@ -13521,14 +13507,14 @@ class LibraryConstruction(ProvActivity, Procedure): 'LibraryConstruction', 'LibraryPooling'], 'slot_uri': 'prov:used'} }) - method: Optional[LibraryTechnique] = Field(None, description="""Standardized nomenclature to describe the specific library method used. This specifies the alignment method required for the library. For example, 10xV3.1 (for RNASeq single assay), 10xMult-GEX (for RNASeq multiome assay), and 10xMult-ATAC (for ATACSeq multiome assay).""", json_schema_extra = { "linkml_meta": {'alias': 'library method', + library_method: Optional[LibraryTechnique] = Field(default=None, description="""Standardized nomenclature to describe the specific library method used. This specifies the alignment method required for the library. For example, 10xV3.1 (for RNASeq single assay), 10xMult-GEX (for RNASeq multiome assay), and 10xMult-ATAC (for ATACSeq multiome assay).""", json_schema_extra = { "linkml_meta": {'alias': 'library method', 'domain_of': ['CellBarcoding', 'LibraryConstruction'], 'exact_mappings': ['NIMP:PD-AJAJCN35'], 'in_subset': ['analysis', 'tracking', 'alignment'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'library_technique'}}, 'slot_uri': 'bican:7b60d59e-fdd7-4b27-a2d4-cae9b69103a6'} }) - process_date: Optional[date] = Field(None, description="""Date of library construction.""", json_schema_extra = { "linkml_meta": {'alias': 'library creation date', + library_creation_date: Optional[date] = Field(default=None, description="""Date of library construction.""", json_schema_extra = { "linkml_meta": {'alias': 'library creation date', 'domain_of': ['CellDissociation', 'CellEnrichment', 'CellBarcoding', @@ -13539,21 +13525,21 @@ class LibraryConstruction(ProvActivity, Procedure): 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'library_preparation_date'}}, 'slot_uri': 'bican:9c2f575d-1b64-451d-894f-656861afe07a'} }) - input_quantity_ng: Optional[float] = Field(None, description="""Amount of cDNA going into library construction in nanograms.""", json_schema_extra = { "linkml_meta": {'alias': 'library input ng', + library_input_ng: Optional[float] = Field(default=None, description="""Amount of cDNA going into library construction in nanograms.""", json_schema_extra = { "linkml_meta": {'alias': 'library input ng', 'domain_of': ['LibraryConstruction'], 'exact_mappings': ['NIMP:PD-AFAFXP37'], 'in_subset': ['analysis'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'library_input_ng'}}, 'slot_uri': 'bican:e4d31d97-722d-4771-a0e4-e6062190f2c1'} }) - set: Optional[str] = Field(None, description="""Library set, containing multiple library_names that were processed at the same time.""", json_schema_extra = { "linkml_meta": {'alias': 'library prep set', + library_prep_set: Optional[str] = Field(default=None, description="""Library set, containing multiple library_names that were processed at the same time.""", json_schema_extra = { "linkml_meta": {'alias': 'library prep set', 'domain_of': ['CdnaAmplification', 'LibraryConstruction'], 'exact_mappings': ['NIMP:PD-PCPCVR50'], 'in_subset': ['analysis'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'library_prep_set'}}, 'slot_uri': 'bican:b124ffa9-9134-4a61-a30d-bb191b2fc7fa'} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -13574,7 +13560,7 @@ class LibraryConstruction(ProvActivity, Procedure): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -13592,7 +13578,7 @@ class LibraryConstruction(ProvActivity, Procedure): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/LibraryConstruction","bican:LibraryConstruction"]] = Field(["bican:LibraryConstruction"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/LibraryConstruction","bican:LibraryConstruction"]] = Field(default=["bican:LibraryConstruction"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -13613,7 +13599,7 @@ class LibraryConstruction(ProvActivity, Procedure): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -13632,7 +13618,7 @@ class LibraryConstruction(ProvActivity, Procedure): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -13667,7 +13653,7 @@ class LibraryConstruction(ProvActivity, Procedure): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -13688,7 +13674,7 @@ class LibraryConstruction(ProvActivity, Procedure): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -13782,7 +13768,7 @@ class LibraryConstruction(ProvActivity, Procedure): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -13799,7 +13785,7 @@ class LibraryConstruction(ProvActivity, Procedure): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -13816,7 +13802,7 @@ class LibraryConstruction(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -13835,7 +13821,7 @@ class LibraryConstruction(ProvActivity, Procedure): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -13852,7 +13838,7 @@ class LibraryConstruction(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -13884,7 +13870,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -13901,21 +13887,11 @@ class LibraryPooling(ProvActivity, Procedure): 'mixins': ['ProvActivity'], 'slot_usage': {'used': {'description': 'The input aliquot(s) from which the ' 'library pool was derived from.', - 'domain_of': ['ProvActivity', - 'DissectionRoiDelineation', - 'TissueDissection', - 'CellDissociation', - 'CellEnrichment', - 'EnrichedCellSampleSplitting', - 'CellBarcoding', - 'CdnaAmplification', - 'LibraryConstruction', - 'LibraryPooling'], 'multivalued': True, 'name': 'used', 'range': 'LibraryAliquot'}}}) - used: Optional[List[str]] = Field(default_factory=list, description="""The input aliquot(s) from which the library pool was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + used: Optional[List[str]] = Field(default=None, description="""The input aliquot(s) from which the library pool was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', 'domain_of': ['ProvActivity', 'DissectionRoiDelineation', 'TissueDissection', @@ -13927,7 +13903,7 @@ class LibraryPooling(ProvActivity, Procedure): 'LibraryConstruction', 'LibraryPooling'], 'slot_uri': 'prov:used'} }) - process_date: Optional[str] = Field(None, description="""Date of library pooling process.""", json_schema_extra = { "linkml_meta": {'alias': 'process_date', + process_date: Optional[str] = Field(default=None, description="""Date of library pooling process.""", json_schema_extra = { "linkml_meta": {'alias': 'process_date', 'domain_of': ['CellDissociation', 'CellEnrichment', 'CellBarcoding', @@ -13937,7 +13913,7 @@ class LibraryPooling(ProvActivity, Procedure): 'exact_mappings': ['NIMP:PD-XUXUNM35'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'library_pool_preparation_date'}}} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -13958,7 +13934,7 @@ class LibraryPooling(ProvActivity, Procedure): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -13976,7 +13952,7 @@ class LibraryPooling(ProvActivity, Procedure): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/LibraryPooling","bican:LibraryPooling"]] = Field(["bican:LibraryPooling"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/LibraryPooling","bican:LibraryPooling"]] = Field(default=["bican:LibraryPooling"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -13997,7 +13973,7 @@ class LibraryPooling(ProvActivity, Procedure): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -14016,7 +13992,7 @@ class LibraryPooling(ProvActivity, Procedure): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -14051,7 +14027,7 @@ class LibraryPooling(ProvActivity, Procedure): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -14072,7 +14048,7 @@ class LibraryPooling(ProvActivity, Procedure): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -14166,7 +14142,7 @@ class LibraryPooling(ProvActivity, Procedure): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -14183,7 +14159,7 @@ class LibraryPooling(ProvActivity, Procedure): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -14200,7 +14176,7 @@ class LibraryPooling(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -14219,7 +14195,7 @@ class LibraryPooling(ProvActivity, Procedure): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -14236,7 +14212,7 @@ class LibraryPooling(ProvActivity, Procedure): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -14268,7 +14244,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -14288,31 +14264,6 @@ class DissectionRoiPolygon(ProvEntity, Entity): 'brain slab image delineating a region ' 'of interest (ROI) for a tissue sample ' 'dissectioning.', - 'domain_of': ['entity', - 'named thing', - 'organism taxon', - 'information content entity', - 'dataset', - 'physical entity', - 'activity', - 'procedure', - 'material sample', - 'biological entity', - 'macromolecular machine mixin', - 'gene or gene product', - 'gene', - 'genome', - 'Donor', - 'BrainSlab', - 'TissueSample', - 'DissociatedCellSample', - 'EnrichedCellSample', - 'BarcodedCellSample', - 'AmplifiedCdna', - 'Library', - 'LibraryAliquot', - 'LibraryPool', - 'DissectionRoiPolygon'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'local_name'}}, 'name': 'name'}, @@ -14320,19 +14271,10 @@ class DissectionRoiPolygon(ProvEntity, Entity): 'from which the dissection ' 'ROI polygon was generated ' 'by.', - 'domain_of': ['ProvEntity', - 'TissueSample', - 'DissociatedCellSample', - 'EnrichedCellSample', - 'BarcodedCellSample', - 'AmplifiedCdna', - 'Library', - 'LibraryPool', - 'DissectionRoiPolygon'], 'name': 'was_generated_by', 'range': 'DissectionRoiDelineation'}}}) - was_generated_by: Optional[str] = Field(None, description="""The delineation process from which the dissection ROI polygon was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + was_generated_by: Optional[str] = Field(default=None, description="""The delineation process from which the dissection ROI polygon was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', 'domain_of': ['ProvEntity', 'TissueSample', 'DissociatedCellSample', @@ -14343,10 +14285,13 @@ class DissectionRoiPolygon(ProvEntity, Entity): 'LibraryPool', 'DissectionRoiPolygon'], 'slot_uri': 'prov:wasGeneratedBy'} }) - name: Optional[str] = Field(None, description="""Name of a polygon annotated on a brain slab image delineating a region of interest (ROI) for a tissue sample dissectioning.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""Name of a polygon annotated on a brain slab image delineating a region of interest (ROI) for a tissue sample dissectioning.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', - 'domain_of': ['entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', 'named thing', 'organism taxon', 'information content entity', @@ -14356,7 +14301,6 @@ class DissectionRoiPolygon(ProvEntity, Entity): 'procedure', 'material sample', 'biological entity', - 'macromolecular machine mixin', 'gene or gene product', 'gene', 'genome', @@ -14371,13 +14315,17 @@ class DissectionRoiPolygon(ProvEntity, Entity): 'LibraryAliquot', 'LibraryPool', 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], 'local_names': {'NIMP': {'local_name_source': 'NIMP', 'local_name_value': 'local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - annotates: Optional[str] = Field(None, description="""The brain slab that was annotated by the delineation process.""", json_schema_extra = { "linkml_meta": {'alias': 'annotates', + annotates: Optional[str] = Field(default=None, description="""The brain slab that was annotated by the delineation process.""", json_schema_extra = { "linkml_meta": {'alias': 'annotates', 'domain_of': ['DissectionRoiPolygon'], 'exact_mappings': ['NIMP:has_parent']} }) - was_derived_from: Optional[str] = Field(None, description="""A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + was_derived_from: Optional[str] = Field(default=None, description="""A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', 'domain_of': ['ProvEntity', 'BrainSlab', 'TissueSample', @@ -14390,7 +14338,7 @@ class DissectionRoiPolygon(ProvEntity, Entity): 'LibraryPool', 'DigitalAsset'], 'slot_uri': 'prov:wasDerivedFrom'} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -14411,7 +14359,7 @@ class DissectionRoiPolygon(ProvEntity, Entity): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -14429,7 +14377,7 @@ class DissectionRoiPolygon(ProvEntity, Entity): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/DissectionRoiPolygon","bican:DissectionRoiPolygon"]] = Field(["bican:DissectionRoiPolygon"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/DissectionRoiPolygon","bican:DissectionRoiPolygon"]] = Field(default=["bican:DissectionRoiPolygon"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -14450,7 +14398,7 @@ class DissectionRoiPolygon(ProvEntity, Entity): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -14469,7 +14417,7 @@ class DissectionRoiPolygon(ProvEntity, Entity): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -14490,7 +14438,7 @@ class DissectionRoiPolygon(ProvEntity, Entity): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -14584,7 +14532,7 @@ class DissectionRoiPolygon(ProvEntity, Entity): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -14607,7 +14555,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -14623,7 +14571,7 @@ class DigitalAsset(ProvEntity, Dataset): 'was_derived_from': {'name': 'was_derived_from', 'range': 'LibraryPool'}}}) - was_derived_from: Optional[str] = Field(None, description="""A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + was_derived_from: Optional[str] = Field(default=None, description="""A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', 'domain_of': ['ProvEntity', 'BrainSlab', 'TissueSample', @@ -14636,10 +14584,12 @@ class DigitalAsset(ProvEntity, Dataset): 'LibraryPool', 'DigitalAsset'], 'slot_uri': 'prov:wasDerivedFrom'} }) - digest: Optional[List[str]] = Field(default_factory=list, description="""Stores checksum information.""", json_schema_extra = { "linkml_meta": {'alias': 'digest', 'domain_of': ['DigitalAsset']} }) - content_url: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'content_url', 'domain_of': ['DigitalAsset']} }) - data_type: Optional[str] = Field(None, description="""The type of data in the file""", json_schema_extra = { "linkml_meta": {'alias': 'data_type', 'domain_of': ['DigitalAsset']} }) - was_generated_by: Optional[str] = Field(None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + digest: Optional[List[Union[Checksum, str]]] = Field(default=None, description="""Stores checksum information.""", json_schema_extra = { "linkml_meta": {'alias': 'digest', + 'any_of': [{'range': 'checksum'}, {'range': 'string'}], + 'domain_of': ['DigitalAsset']} }) + content_url: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'content_url', 'domain_of': ['DigitalAsset']} }) + data_type: Optional[str] = Field(default=None, description="""The type of data in the file""", json_schema_extra = { "linkml_meta": {'alias': 'data_type', 'domain_of': ['DigitalAsset']} }) + was_generated_by: Optional[str] = Field(default=None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', 'domain_of': ['ProvEntity', 'TissueSample', 'DissociatedCellSample', @@ -14650,7 +14600,7 @@ class DigitalAsset(ProvEntity, Dataset): 'LibraryPool', 'DissectionRoiPolygon'], 'slot_uri': 'prov:wasGeneratedBy'} }) - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + id: str = Field(default=..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'definition_uri': 'https://w3id.org/biolink/vocab/id', 'domain': 'entity', 'domain_of': ['ontology class', @@ -14671,7 +14621,7 @@ class DigitalAsset(ProvEntity, Dataset): 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], 'in_subset': ['translator_minimal'], 'slot_uri': 'biolink:id'} }) - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + iri: Optional[str] = Field(default=None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', 'definition_uri': 'https://w3id.org/biolink/vocab/iri', 'domain_of': ['attribute', 'entity', @@ -14689,7 +14639,7 @@ class DigitalAsset(ProvEntity, Dataset): 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], 'in_subset': ['translator_minimal', 'samples'], 'slot_uri': 'biolink:iri'} }) - category: List[Literal["https://identifiers.org/brain-bican/vocab/DigitalAsset","bican:DigitalAsset"]] = Field(["bican:DigitalAsset"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', + category: List[Literal["https://identifiers.org/brain-bican/vocab/DigitalAsset","bican:DigitalAsset"]] = Field(default=["bican:DigitalAsset"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}. NOTE: The category slot was modified to have a curie range and a pattern for bican categories.""", json_schema_extra = { "linkml_meta": {'alias': 'category', 'definition_uri': 'https://w3id.org/biolink/vocab/category', 'designates_type': True, 'domain': 'entity', @@ -14710,7 +14660,7 @@ class DigitalAsset(ProvEntity, Dataset): 'is_a': 'type', 'is_class_field': True, 'slot_uri': 'biolink:category'} }) - type: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'type', + type: Optional[List[str]] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'type', 'definition_uri': 'https://w3id.org/biolink/vocab/type', 'domain': 'entity', 'domain_of': ['entity', @@ -14729,7 +14679,7 @@ class DigitalAsset(ProvEntity, Dataset): 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], 'mappings': ['rdf:type'], 'slot_uri': 'rdf:type'} }) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + name: Optional[str] = Field(default=None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'aliases': ['label', 'display name', 'title'], 'definition_uri': 'https://w3id.org/biolink/vocab/name', 'domain': 'entity', @@ -14764,7 +14714,7 @@ class DigitalAsset(ProvEntity, Dataset): 'mappings': ['rdfs:label'], 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], 'slot_uri': 'rdfs:label'} }) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + description: Optional[str] = Field(default=None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', 'aliases': ['definition'], 'definition_uri': 'https://w3id.org/biolink/vocab/description', 'domain_of': ['entity', @@ -14785,7 +14735,7 @@ class DigitalAsset(ProvEntity, Dataset): 'mappings': ['dct:description'], 'narrow_mappings': ['gff3:Description'], 'slot_uri': 'dct:description'} }) - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + has_attribute: Optional[List[str]] = Field(default=None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', 'close_mappings': ['OBI:0001927'], 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', 'domain': 'entity', @@ -14879,7 +14829,7 @@ class DigitalAsset(ProvEntity, Dataset): 'UMLS:has_supported_concept_relationship', 'UMLS:may_be_qualified_by'], 'slot_uri': 'biolink:has_attribute'} }) - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + deprecated: Optional[bool] = Field(default=None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', 'domain_of': ['entity', 'attribute', @@ -14896,7 +14846,7 @@ class DigitalAsset(ProvEntity, Dataset): 'genome'], 'exact_mappings': ['oboInOwl:ObsoleteClass'], 'slot_uri': 'biolink:deprecated'} }) - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + provided_by: Optional[List[str]] = Field(default=None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', 'domain': 'named thing', 'domain_of': ['named thing', @@ -14913,7 +14863,7 @@ class DigitalAsset(ProvEntity, Dataset): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:provided_by'} }) - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + xref: Optional[List[str]] = Field(default=None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], 'definition_uri': 'https://w3id.org/biolink/vocab/xref', 'domain': 'named thing', @@ -14932,7 +14882,7 @@ class DigitalAsset(ProvEntity, Dataset): 'in_subset': ['translator_minimal'], 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], 'slot_uri': 'biolink:xref'} }) - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + full_name: Optional[str] = Field(default=None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', 'domain': 'named thing', 'domain_of': ['named thing', @@ -14949,7 +14899,7 @@ class DigitalAsset(ProvEntity, Dataset): 'genome'], 'is_a': 'node property', 'slot_uri': 'biolink:full_name'} }) - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + synonym: Optional[List[str]] = Field(default=None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', 'aliases': ['alias'], 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', 'domain': 'named thing', @@ -14975,7 +14925,7 @@ class DigitalAsset(ProvEntity, Dataset): 'IAO:0000136', 'RXNORM:has_tradename'], 'slot_uri': 'biolink:synonym'} }) - license: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'license', + license: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'license', 'definition_uri': 'https://w3id.org/biolink/vocab/license', 'domain': 'information content entity', 'domain_of': ['information content entity', 'dataset'], @@ -14983,21 +14933,21 @@ class DigitalAsset(ProvEntity, Dataset): 'is_a': 'node property', 'narrow_mappings': ['WIKIDATA_PROPERTY:P275'], 'slot_uri': 'biolink:license'} }) - rights: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'rights', + rights: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'rights', 'definition_uri': 'https://w3id.org/biolink/vocab/rights', 'domain': 'information content entity', 'domain_of': ['information content entity', 'dataset'], 'exact_mappings': ['dct:rights'], 'is_a': 'node property', 'slot_uri': 'biolink:rights'} }) - format: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'format', + format: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'alias': 'format', 'definition_uri': 'https://w3id.org/biolink/vocab/format', 'domain': 'information content entity', 'domain_of': ['information content entity', 'dataset'], 'exact_mappings': ['dct:format', 'WIKIDATA_PROPERTY:P2701'], 'is_a': 'node property', 'slot_uri': 'biolink:format'} }) - creation_date: Optional[date] = Field(None, description="""date on which an entity was created. This can be applied to nodes or edges""", json_schema_extra = { "linkml_meta": {'alias': 'creation_date', + creation_date: Optional[date] = Field(default=None, description="""date on which an entity was created. This can be applied to nodes or edges""", json_schema_extra = { "linkml_meta": {'alias': 'creation_date', 'aliases': ['publication date'], 'definition_uri': 'https://w3id.org/biolink/vocab/creation_date', 'domain': 'named thing', @@ -15011,7 +14961,7 @@ def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v):