diff --git a/schemas/src/digital-objects/hra-pop.yaml b/schemas/src/digital-objects/hra-pop.yaml new file mode 100644 index 0000000..264f35b --- /dev/null +++ b/schemas/src/digital-objects/hra-pop.yaml @@ -0,0 +1,665 @@ +id: https://purl.humanatlas.io/specs/hra-pop +name: hra-pop +prefixes: + ccf: http://purl.org/ccf/ + oboInOwl: http://www.geneontology.org/formats/oboInOwl# + loinc: http://purl.bioontology.org/ontology/LNC/ + linkml: https://w3id.org/linkml/ + RO: http://purl.obolibrary.org/obo/RO_ + IAO: http://purl.obolibrary.org/obo/IAO_ + +default_prefix: ccf +default_range: string + +imports: + - linkml:types + - ../shared/instance-base + - ../shared/metadata-base + +classes: + Donor: + class_uri: ccf:Donor + mixins: + - Named + - Instance + slots: + - pref_label + - description + - external_link + - age + - bmi + - sex + - sex_id + - race + - race_id + - consortium_name + - provider_name + - provider_uuid + - samples + slot_usage: + sex: + annotations: + owl.template: |- + {% if sex %} + AnnotationAssertion( + Annotation(oboInOwl:hasDbXref {{sex_id}}) + ccf:sex + {{id}} + "{{sex}}" + ) + {% endif %} + race: + annotations: + owl.template: |- + {% if race %} + AnnotationAssertion( + Annotation(oboInOwl:hasDbXref {{race_id}}) + ccf:has_race + {{id}} + "{{race}}" + ) + {% endif %} + sex_id: + pattern: (loinc:LA3-6|loinc:LA2-8|loinc:LA4489-6) + race_id: + pattern: (loinc:LA10608-0|loinc:LA6156-9|loinc:LA10610-6|loinc:LA10611-4|loinc:LA4457-3|loinc:LA4489-6) + + TissueBlock: + class_uri: ccf:TissueBlock + mixins: + - Named + - Instance + slots: + - partially_overlaps + - pref_label + - description + - rui_location + - extraction_site + - external_link + - sections + - datasets + - section_count + - section_size # block_dimension + - section_size_unit # block_dimension_unit + - links_back_to + slot_usage: + partially_overlaps: + annotations: + owl.template: |- + {% for organ_part in partially_overlaps %} + ClassAssertion(ObjectSomeValuesFrom(RO:0002151 {{organ_part}}) {{id}}) + {% endfor %} + + TissueSection: + class_uri: ccf:TissueSection + mixins: + - Named + - Instance + slots: + - pref_label + - description + - external_link + - samples + - datasets + - section_number + - links_back_to + + Dataset: + class_uri: ccf:Dataset + mixins: + - Named + - Instance + slots: + - pref_label + - description + - external_link + - technology + - thumbnail + - links_back_to + - cell_count + - gene_count + - has_cell_summary + + CellSummary: + class_uri: ccf:CellSummary + mixins: + - Named + - Instance + slots: + - annotation_method + - modality + - donor_sex + - has_summary_item + + CellSummaryRow: + class_uri: ccf:CellSummaryRow + mixins: + - Named + - Instance + slots: + - target_cell + - count + - percentage + - target_gene + - mean_gene_expression_value + slot_usage: + target_gene: + annotations: + owl.template: |- + AnnotationAssertion( + Annotation(ccf:mean_gene_expression_value {{mean_gene_expression_value}}) + ccf:mean_gene_expression_value + {{id}} + {{target_gene}} + ) + + CollisionSummary: + class_uri: ccf:CollisionSummary + mixins: + - Named + - Instance + slots: + - collision_method + - has_collision_item + + CollisionItem: + class_uri: ccf:CollisionItem + mixins: + - Named + - Instance + slots: + - has_reference_organ + - has_spatial_entity + - volume + - percentage + + Corridor: + class_uri: ccf:Corridor + mixins: + - Named + - Instance + slots: + - file_format + - file_url + + SpatialEntity: + class_uri: ccf:SpatialEntity + mixins: + - Named + - Instance + slots: + - pref_label + - creator_name + - create_date + - x_dimension + - y_dimension + - z_dimension + - dimension_unit + - collides_with + - slice_count + - slice_thickness + - placement + - has_collision + - has_corridor + - has_cell_summary + + slot_usage: + dimension_unit: + pattern: (centimeter|millimeter) + + SpatialPlacement: + class_uri: ccf:SpatialPlacement + mixins: + - Named + - Instance + slots: + - source + - target + - placement_date + - x_scaling + - y_scaling + - z_scaling + - scaling_unit + - x_rotation + - y_rotation + - z_rotation + - rotation_unit + - rotation_order + - x_translation + - y_translation + - z_translation + - translation_unit + slot_usage: + scaling_unit: + pattern: ratio + rotation_unit: + pattern: degree + rotation_order: + pattern: XYZ + translation_unit: + pattern: (centimeter|millimeter) + + HraPophData: + slots: + - donor + - sample + - dataset + - spatial_entity + - cell_summary + - collision + - corridor + + HraPophMetadata: + class_uri: dcat:Dataset + slots: + - title + - description + - created_by + - creation_date + - version + - license + - publisher + - see_also + - derived_from + + Container: + tree_root: true + attributes: + iri: + range: uriorcurie + metadata: + range: HraPopMetadata + data: + range: HraPopData + annotations: + owl.template: |- + AnnotationAssertion( dct:title {{iri}} "{{metadata.title|e}}" ) + AnnotationAssertion( dct:description {{iri}} "{{metadata.description|e}}" ) + {% for creator_iri in metadata.created_by %} + AnnotationAssertion( dct:creator {{iri}} {{creator_iri|e}} ) + {% endfor %} + AnnotationAssertion( schema:version {{iri}} "{{metadata.version|e}}" ) + AnnotationAssertion( schema:dateCreated {{iri}} "{{metadata.creation_date|e}}" ) + AnnotationAssertion( dct:license {{iri}} "{{metadata.license|e}}" ) + AnnotationAssertion( dct:publisher {{iri}} "{{metadata.publisher|e}}" ) + AnnotationAssertion( rdfs:seeAlso {{iri}} {{metadata.see_also|e}} ) + AnnotationAssertion( prov:wasDerivedFrom {{iri}} {{metadata.derived_from|e}} ) + AnnotationAssertion( IAO:0000700 {{iri}} ccf:Donor ) + AnnotationAssertion( IAO:0000700 {{iri}} ccf:TissueBlock ) + AnnotationAssertion( IAO:0000700 {{iri}} ccf:TissueSection ) + AnnotationAssertion( IAO:0000700 {{iri}} ccf:Dataset ) + AnnotationAssertion( IAO:0000700 {{iri}} ccf:CellSummary ) + AnnotationAssertion( IAO:0000700 {{iri}} ccf:Collision ) + AnnotationAssertion( IAO:0000700 {{iri}} ccf:Corridor ) + +slots: + partially_overlaps: + multivalued: true + range: Named + slot_uri: RO:0002151 + annotations: + owl.template: |- + AnnotationAssertion( rdfs:label RO:0002151 "partially overlaps" ) + donor: + multivalued: true + inlined_as_list: true + range: Donor + sample: + multivalued: true + inlined_as_list: true + range: TissueBlock + dataset: + multivalued: true + inlined_as_list: true + range: Dataset + spatial_entity: + multivalued: true + inlined_as_list: true + range: SpatialEntity + cell_summary: + multivalued: true + inlined_as_list: true + range: CellSummary + collision: + multivalued: true + inlined_as_list: true + range: CollisionSummary + corridor: + multivalued: true + inlined_as_list: true + range: Corridor + external_link: + slot_uri: ccf:url + annotations: + owl: AnnotationProperty, AnnotationAssertion + age: + range: integer + annotations: + owl: AnnotationProperty, AnnotationAssertion + bmi: + range: float + annotations: + owl: AnnotationProperty, AnnotationAssertion + sex: + annotations: + owl: AnnotationProperty + sex_id: + slot_uri: loinc:46098-0 # Sex + race: + slot_uri: ccf:has_race + annotations: + owl: AnnotationProperty + race_id: + slot_uri: loinc:32624-9 # Race + consortium_name: + annotations: + owl: AnnotationProperty, AnnotationAssertion + provider_name: + slot_uri: ccf:tissue_provider_name + annotations: + owl: AnnotationProperty, AnnotationAssertion + provider_uuid: + slot_uri: ccf:tissue_provider_uuid + annotations: + owl: AnnotationProperty, AnnotationAssertion + samples: + slot_uri: ccf:provides + multivalued: true + inlined: false + range: TissueBlock + annotations: + owl: AnnotationProperty, AnnotationAssertion + rui_location: + required: false + slot_uri: ccf:has_registration_location + range: SpatialEntity + annotations: + owl: AnnotationProperty, AnnotationAssertion + extraction_site: + required: false + slot_uri: ccf:extraction_site + range: SpatialEntity + annotations: + owl: AnnotationProperty, AnnotationAssertion + sections: + slot_uri: ccf:subdivided_into_sections + range: TissueSection + multivalued: true + inlined_as_list: true + annotations: + owl: AnnotationProperty, AnnotationAssertion + datasets: + slot_uri: ccf:generates_dataset + range: Dataset + multivalued: true + inlined: false + annotations: + owl: AnnotationProperty, AnnotationAssertion + section_count: + required: false + range: integer + annotations: + owl: AnnotationProperty, AnnotationAssertion + section_size: + required: false + range: float + annotations: + owl: AnnotationProperty, AnnotationAssertion + section_size_unit: + annotations: + owl: AnnotationProperty, AnnotationAssertion + section_number: + required: false + range: integer + annotations: + owl: AnnotationProperty, AnnotationAssertion + technology: + required: false + annotations: + owl: AnnotationProperty, AnnotationAssertion + thumbnail: + required: true + annotations: + owl: AnnotationProperty, AnnotationAssertion + links_back_to: + required: false + range: uriorcurie + annotations: + owl: ObjectProperty, ObjectPropertyAssertion + owl.template: |- + AnnotationAssertion( rdfs:label ccf:links_back_to "links back to" ) + TransitiveObjectProperty( ccf:links_back_to ) + x_dimension: + required: true + range: float + minimum_value: 0.0 + annotations: + owl: AnnotationProperty, AnnotationAssertion + y_dimension: + required: true + range: float + minimum_value: 0.0 + annotations: + owl: AnnotationProperty, AnnotationAssertion + z_dimension: + required: true + range: float + minimum_value: 0.0 + annotations: + owl: AnnotationProperty, AnnotationAssertion + dimension_unit: + required: true + annotations: + owl: AnnotationProperty, AnnotationAssertion + collides_with: + multivalued: true + range: uriorcurie + annotations: + owl: AnnotationProperty, AnnotationAssertion + slice_count: + range: integer + annotations: + owl: AnnotationProperty, AnnotationAssertion + slice_thickness: + range: integer + annotations: + owl: AnnotationProperty, AnnotationAssertion + placement: + required: true + slot_uri: ccf:has_placement + inlined: true + range: SpatialPlacement + annotations: + owl: AnnotationProperty, AnnotationAssertion + target: + required: true + slot_uri: ccf:placement_relative_to + range: uriorcurie + annotations: + owl: AnnotationProperty, AnnotationAssertion + source: + required: false + slot_uri: ccf:placement_for + range: SpatialEntity + inlined: false + annotations: + owl: AnnotationProperty, AnnotationAssertion + placement_date: + required: true + range: date + annotations: + owl: AnnotationProperty, AnnotationAssertion + x_scaling: + required: true + range: float + minimum_value: 0.0 + annotations: + owl: AnnotationProperty, AnnotationAssertion + y_scaling: + required: true + range: float + minimum_value: 0.0 + annotations: + owl: AnnotationProperty, AnnotationAssertion + z_scaling: + required: true + range: float + minimum_value: 0.0 + annotations: + owl: AnnotationProperty, AnnotationAssertion + scaling_unit: + required: true + annotations: + owl: AnnotationProperty, AnnotationAssertion + x_rotation: + required: true + range: float + annotations: + owl: AnnotationProperty, AnnotationAssertion + y_rotation: + required: true + range: float + annotations: + owl: AnnotationProperty, AnnotationAssertion + z_rotation: + required: true + range: float + annotations: + owl: AnnotationProperty, AnnotationAssertion + rotation_unit: + required: true + annotations: + owl: AnnotationProperty, AnnotationAssertion + rotation_order: + required: false + annotations: + owl: AnnotationProperty, AnnotationAssertion + x_translation: + required: true + range: float + annotations: + owl: AnnotationProperty, AnnotationAssertion + y_translation: + required: true + range: float + annotations: + owl: AnnotationProperty, AnnotationAssertion + z_translation: + required: true + range: float + annotations: + owl: AnnotationProperty, AnnotationAssertion + translation_unit: + required: true + annotations: + owl: AnnotationProperty, AnnotationAssertion + cell_count: + required: true + range: integer + annotations: + owl: AnnotationProperty, AnnotationAssertion + gene_count: + required: true + range: integer + annotations: + owl: AnnotationProperty, AnnotationAssertion + has_cell_summary: + required: true + range: CellSummary + multivalued: true + inlined: false + annotations: + owl: AnnotationProperty, AnnotationAssertion + annotation_method: + required: true + annotations: + owl: AnnotationProperty, AnnotationAssertion + modality: + required: true + annotations: + owl: AnnotationProperty, AnnotationAssertion + donor_sex: + required: true + annotations: + owl: AnnotationProperty, AnnotationAssertion + has_summary_item: + required: true + range: CellSummaryRow + multivalued: true + inlined: false + annotations: + owl: AnnotationProperty, AnnotationAssertion + target_cell: + required: true + range: uriocurie + annotations: + owl: AnnotationProperty, AnnotationAssertion + count: + required: true + range: integer + annotations: + owl: AnnotationProperty, AnnotationAssertion + percentage: + required: true + range: float + annotations: + owl: AnnotationProperty, AnnotationAssertion + target_gene: + required: true + range: uriocurie + annotations: + owl: AnnotationProperty, AnnotationAssertion + mean_gene_expression_value: + required: true + range: float + annotations: + owl: AnnotationProperty, AnnotationAssertion + collision_method: + required: true + annotations: + owl: AnnotationProperty, AnnotationAssertion + has_collision_item: + required: true + range: CollisionItem + multivalued: true + inlined: false + annotations: + owl: AnnotationProperty, AnnotationAssertion + has_reference_organ: + required: true + range: SpatialEntity + inlined: false + annotations: + owl: AnnotationProperty, AnnotationAssertion + has_spatial_entity: + required: true + range: SpatialEntity + inlined: false + annotations: + owl: AnnotationProperty, AnnotationAssertion + volume: + required: true + range: float + annotations: + owl: AnnotationProperty, AnnotationAssertion + file_format: + required: true + annotations: + owl: AnnotationProperty, AnnotationAssertion + file_url: + required: true + annotations: + owl: AnnotationProperty, AnnotationAssertion + has_collision: + required: true + range: CollisionSummary + multivalued: true + inlined: false + annotations: + owl: AnnotationProperty, AnnotationAssertion + has_corridor: + required: true + range: Corridor + inlined: false + annotations: + owl: AnnotationProperty, AnnotationAssertion diff --git a/schemas/src/metadata/hra-pop-metadata.yaml b/schemas/src/metadata/hra-pop-metadata.yaml new file mode 100644 index 0000000..3e2be2e --- /dev/null +++ b/schemas/src/metadata/hra-pop-metadata.yaml @@ -0,0 +1,53 @@ +id: https://purl.humanatlas.io/specs/ds-graph-metadata +name: ds-graph-metadata +prefixes: + ccf: http://purl.org/ccf/ + pav: http://purl.org/pav/ + dcat: http://www.w3.org/ns/dcat# + dct: http://purl.org/dc/terms/ + foaf: http://xmlns.com/foaf/0.1/ + schema: http://schema.org/ + rdfs: http://www.w3.org/2000/01/rdf-schema# + xsd: http://www.w3.org/2001/XMLSchema# + linkml: https://w3id.org/linkml/ + +default_prefix: dcat +default_range: string + +imports: + - linkml:types + - ../shared/metadata-base + +classes: + Container: + tree_root: true + mixins: + - ProvEntity + class_uri: dcat:Dataset + slots: + - name + - type + - title + - description + - version + - creators + - creation_date + - publisher + - license + - see_also + - distributions + slot_usage: + title: + required: true + description: + required: true + version: + required: true + creators: + required: true + creation_date: + required: true + license: + required: true + distributions: + required: true