diff --git a/examples/EMDataset-001.yaml b/examples/EMDataset-001.yaml index 8dd36cc..8f3d3b4 100644 --- a/examples/EMDataset-001.yaml +++ b/examples/EMDataset-001.yaml @@ -26,28 +26,30 @@ acquisition: pixel_size: value: 1.2 unit: "Å" -grants: - - project_id: "SNF321" - funder: "SNF" - - project_id: "Fundingofsomekind" - funder: "SNF" -authors: - - name: "Doe" - first_name: "John" - email: "john.doe@gmail.com" - work_phone: "+4132112312" - orcid: "ORCID_123124151231" - name_org: "University of Blub" - type_org: "Academic" - country: "Switzerland" - - name: "Doe" - first_name: "Jane" - email: "jane.doe@gmail.com" - work_phone: "+4132112312" - orcid: "ORCID_123124151221" - name_org: "University of Blub" - type_org: "Academic" - country: "Switzerland" +organizational: + grants: + - project_id: "SNF321" + - project_id: "Fundingofsomekind" + funder: + - funder_name: "SNF" + - funder_name: "SNF" + authors: + - name: "Doe" + first_name: "John" + email: "john.doe@gmail.com" + work_phone: "+4132112312" + orcid: "ORCID_123124151231" + name_org: "University of Blub" + type_org: "Academic" + country: "Switzerland" + - name: "Doe" + first_name: "Jane" + email: "jane.doe@gmail.com" + work_phone: "+4132112312" + orcid: "ORCID_123124151221" + name_org: "University of Blub" + type_org: "Academic" + country: "Switzerland" sample: overall_molecule: molecular_type: "Complex" diff --git a/examples/EMDataset-invalid-001.yaml b/examples/EMDataset-invalid-001.yaml deleted file mode 100644 index 5082561..0000000 --- a/examples/EMDataset-invalid-001.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# Example invalid data object ---- -instrument: - microscope: Titan \ No newline at end of file diff --git a/examples/output/EMDataset-001.json b/examples/output/EMDataset-001.json index b3d4743..4794899 100644 --- a/examples/output/EMDataset-001.json +++ b/examples/output/EMDataset-001.json @@ -98,37 +98,45 @@ } } }, - "grants": [ - { - "funder": "SNF", - "project_id": "SNF321" - }, - { - "funder": "SNF", - "project_id": "Fundingofsomekind" - } - ], - "authors": { - "ORCID_123124151231": { - "name": "Doe", - "first_name": "John", - "email": "john.doe@gmail.com", - "work_phone": "+4132112312", - "orcid": "ORCID_123124151231", - "country": "Switzerland", - "name_org": "University of Blub", - "type_org": "Academic" + "organizational": { + "authors": { + "ORCID_123124151231": { + "name": "Doe", + "first_name": "John", + "email": "john.doe@gmail.com", + "work_phone": "+4132112312", + "orcid": "ORCID_123124151231", + "country": "Switzerland", + "name_org": "University of Blub", + "type_org": "Academic" + }, + "ORCID_123124151221": { + "name": "Doe", + "first_name": "Jane", + "email": "jane.doe@gmail.com", + "work_phone": "+4132112312", + "orcid": "ORCID_123124151221", + "country": "Switzerland", + "name_org": "University of Blub", + "type_org": "Academic" + } }, - "ORCID_123124151221": { - "name": "Doe", - "first_name": "Jane", - "email": "jane.doe@gmail.com", - "work_phone": "+4132112312", - "orcid": "ORCID_123124151221", - "country": "Switzerland", - "name_org": "University of Blub", - "type_org": "Academic" - } + "funder": [ + { + "funder_name": "SNF" + }, + { + "funder_name": "SNF" + } + ], + "grants": [ + { + "project_id": "SNF321" + }, + { + "project_id": "Fundingofsomekind" + } + ] }, "@type": "EMDataset" } \ No newline at end of file diff --git a/examples/output/EMDataset-001.yaml b/examples/output/EMDataset-001.yaml index 0386252..76f4e54 100644 --- a/examples/output/EMDataset-001.yaml +++ b/examples/output/EMDataset-001.yaml @@ -76,27 +76,29 @@ sample: pretreatment_pressure: unit: Pa value: 1.0e-06 -grants: -- funder: SNF - project_id: SNF321 -- funder: SNF - project_id: Fundingofsomekind -authors: - ORCID_123124151231: - name: Doe - first_name: John - email: john.doe@gmail.com - work_phone: '+4132112312' - orcid: ORCID_123124151231 - country: Switzerland - name_org: University of Blub - type_org: Academic - ORCID_123124151221: - name: Doe - first_name: Jane - email: jane.doe@gmail.com - work_phone: '+4132112312' - orcid: ORCID_123124151221 - country: Switzerland - name_org: University of Blub - type_org: Academic +organizational: + authors: + ORCID_123124151231: + name: Doe + first_name: John + email: john.doe@gmail.com + work_phone: '+4132112312' + orcid: ORCID_123124151231 + country: Switzerland + name_org: University of Blub + type_org: Academic + ORCID_123124151221: + name: Doe + first_name: Jane + email: jane.doe@gmail.com + work_phone: '+4132112312' + orcid: ORCID_123124151221 + country: Switzerland + name_org: University of Blub + type_org: Academic + funder: + - funder_name: SNF + - funder_name: SNF + grants: + - project_id: SNF321 + - project_id: Fundingofsomekind diff --git a/examples/output/README.md b/examples/output/README.md index e21bbda..8e86ea3 100644 --- a/examples/output/README.md +++ b/examples/output/README.md @@ -13,28 +13,6 @@ acquisition: pixel_size: unit: "\u212B" value: 1.2 -authors: -- country: Switzerland - email: john.doe@gmail.com - first_name: John - name: Doe - name_org: University of Blub - orcid: ORCID_123124151231 - type_org: Academic - work_phone: '+4132112312' -- country: Switzerland - email: jane.doe@gmail.com - first_name: Jane - name: Doe - name_org: University of Blub - orcid: ORCID_123124151221 - type_org: Academic - work_phone: '+4132112312' -grants: -- funder: SNF - project_id: SNF321 -- funder: SNF - project_id: Fundingofsomekind instrument: acceleration_voltage: unit: kV @@ -49,6 +27,30 @@ instrument: illumination: FloodBeam imaging: Brightfield microscope: Titan +organizational: + authors: + - country: Switzerland + email: john.doe@gmail.com + first_name: John + name: Doe + name_org: University of Blub + orcid: ORCID_123124151231 + type_org: Academic + work_phone: '+4132112312' + - country: Switzerland + email: jane.doe@gmail.com + first_name: Jane + name: Doe + name_org: University of Blub + orcid: ORCID_123124151221 + type_org: Academic + work_phone: '+4132112312' + funder: + - funder_name: SNF + - funder_name: SNF + grants: + - project_id: SNF321 + - project_id: Fundingofsomekind sample: grid: film_support: false diff --git a/project/excel/oscem_schemas.xlsx b/project/excel/oscem_schemas.xlsx index eacbc24..858c8f3 100644 Binary files a/project/excel/oscem_schemas.xlsx and b/project/excel/oscem_schemas.xlsx differ diff --git a/project/graphql/oscem_schemas.graphql b/project/graphql/oscem_schemas.graphql index b989426..9ff9087 100644 --- a/project/graphql/oscem_schemas.graphql +++ b/project/graphql/oscem_schemas.graphql @@ -67,8 +67,7 @@ type EMDataset acquisition: Acquisition! instrument: Instrument! sample: Sample! - grants: [Grant]! - authors: [Author]! + organizational: Organizational! } type EnergyFilter @@ -78,10 +77,16 @@ type EnergyFilter width: Integer! } +type Funder + { + funderName: String + typeOrg: OrganizationTypeEnum + country: String + } + type Grant { - name: String - funder: String + grantName: String startDate: Date endDate: Date budget: QuantityValue @@ -141,6 +146,13 @@ type Molecule geneName: String } +type Organizational + { + grants: [Grant] + authors: [Author]! + funder: [Funder]! + } + type OverallMolecule { molecularType: String! diff --git a/project/jsonld/oscem_schemas.context.jsonld b/project/jsonld/oscem_schemas.context.jsonld index dd6fa2e..fec5ef5 100644 --- a/project/jsonld/oscem_schemas.context.jsonld +++ b/project/jsonld/oscem_schemas.context.jsonld @@ -1,7 +1,7 @@ { "comments": { "description": "Auto generated by LinkML jsonld context generator", - "generation_date": "2024-10-30T13:48:38", + "generation_date": "2024-10-30T15:46:20", "source": "oscem_schemas.yaml" }, "@context": { @@ -15,7 +15,10 @@ "@id": "instrument" }, "linkml": "https://w3id.org/linkml/", - "organizational": "https://w3id.org/osc-em/organizational/", + "organizational": { + "@type": "@id", + "@id": "organizational" + }, "oscem-schemas": "https://w3id.org/osc-em/oscem-schemas/", "qudt": "http://qudt.org/schema/qudt/", "sample": { @@ -43,7 +46,7 @@ }, "authors": { "@type": "@id", - "@id": "authors" + "@id": "organizational:authors" }, "beamshift": { "@type": "@id", @@ -158,17 +161,24 @@ "@id": "acquisition:frames_per_movie" }, "funder": { + "@type": "@id", "@id": "organizational:funder" }, + "funder_name": { + "@id": "organizational:funder_name" + }, "gainref_flip_rotate": { "@id": "acquisition:gainref_flip_rotate" }, "gene_name": { "@id": "sample:gene_name" }, + "grant_name": { + "@id": "organizational:grant_name" + }, "grants": { "@type": "@id", - "@id": "grants" + "@id": "organizational:grants" }, "grid": { "@type": "@id", @@ -457,6 +467,9 @@ "EnergyFilter": { "@id": "acquisition:EnergyFilter" }, + "Funder": { + "@id": "organizational:Funder" + }, "Grant": { "@id": "schema:Grant" }, @@ -475,6 +488,9 @@ "Molecule": { "@id": "sample:Molecule" }, + "Organizational": { + "@id": "organizational:Organizational" + }, "OverallMolecule": { "@id": "sample:OverallMolecule" }, diff --git a/project/jsonld/oscem_schemas.jsonld b/project/jsonld/oscem_schemas.jsonld index 719d2f3..026e3e6 100644 --- a/project/jsonld/oscem_schemas.jsonld +++ b/project/jsonld/oscem_schemas.jsonld @@ -447,32 +447,16 @@ "@type": "SlotDefinition" }, { - "name": "grants", - "definition_uri": "https://w3id.org/osc-em/oscem-schemas/grants", - "description": "List of grants associated with the project", + "name": "organizational", + "definition_uri": "https://w3id.org/osc-em/oscem-schemas/organizational", + "description": "Information on authors and grants", "from_schema": "https://w3id.org/osc-em/oscem-schemas", - "slot_uri": "https://w3id.org/osc-em/oscem-schemas/grants", + "slot_uri": "https://w3id.org/osc-em/oscem-schemas/organizational", "owner": "EMDataset", "domain_of": [ "EMDataset" ], - "range": "Grant", - "multivalued": true, - "inlined": true, - "@type": "SlotDefinition" - }, - { - "name": "authors", - "definition_uri": "https://w3id.org/osc-em/oscem-schemas/authors", - "description": "List of authors associated with the project", - "from_schema": "https://w3id.org/osc-em/oscem-schemas", - "slot_uri": "https://w3id.org/osc-em/oscem-schemas/authors", - "owner": "EMDataset", - "domain_of": [ - "EMDataset" - ], - "range": "Author", - "multivalued": true, + "range": "Organizational", "inlined": true, "@type": "SlotDefinition" }, @@ -1112,10 +1096,9 @@ "http://schema.org/name" ], "slot_uri": "http://schema.org/name", - "owner": "Grant", + "owner": "Person", "domain_of": [ - "Person", - "Grant" + "Person" ], "range": "string", "@type": "SlotDefinition" @@ -1139,9 +1122,10 @@ "description": "Type of organization, academic, commercial, governmental, etc.", "from_schema": "https://w3id.org/osc-em/organizational", "slot_uri": "https://w3id.org/osc-em/organizational/type_org", - "owner": "Author", + "owner": "Funder", "domain_of": [ - "Author" + "Author", + "Funder" ], "range": "OrganizationTypeEnum", "@type": "SlotDefinition" @@ -1152,10 +1136,11 @@ "description": "Country of the institution", "from_schema": "https://w3id.org/osc-em/organizational", "slot_uri": "https://w3id.org/osc-em/organizational/country", - "owner": "Grant", + "owner": "Funder", "domain_of": [ "Author", - "Grant" + "Grant", + "Funder" ], "range": "string", "@type": "SlotDefinition" @@ -1186,17 +1171,32 @@ "range": "string", "@type": "SlotDefinition" }, + { + "name": "funder_name", + "definition_uri": "https://w3id.org/osc-em/organizational/funder_name", + "description": "funding organization/person.", + "from_schema": "https://w3id.org/osc-em/organizational", + "slot_uri": "https://w3id.org/osc-em/organizational/funder_name", + "owner": "Funder", + "domain_of": [ + "Funder" + ], + "range": "string", + "@type": "SlotDefinition" + }, { "name": "funder", "definition_uri": "https://w3id.org/osc-em/organizational/funder", "description": "funding organization/person.", "from_schema": "https://w3id.org/osc-em/organizational", "slot_uri": "https://w3id.org/osc-em/organizational/funder", - "owner": "Grant", + "owner": "Organizational", "domain_of": [ - "Grant" + "Organizational" ], - "range": "string", + "range": "Funder", + "multivalued": true, + "inlined": true, "@type": "SlotDefinition" }, { @@ -1255,6 +1255,49 @@ "range": "string", "@type": "SlotDefinition" }, + { + "name": "grants", + "definition_uri": "https://w3id.org/osc-em/organizational/grants", + "description": "List of grants associated with the project", + "from_schema": "https://w3id.org/osc-em/organizational", + "slot_uri": "https://w3id.org/osc-em/organizational/grants", + "owner": "Organizational", + "domain_of": [ + "Organizational" + ], + "range": "Grant", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "authors", + "definition_uri": "https://w3id.org/osc-em/organizational/authors", + "description": "List of authors associated with the project", + "from_schema": "https://w3id.org/osc-em/organizational", + "slot_uri": "https://w3id.org/osc-em/organizational/authors", + "owner": "Organizational", + "domain_of": [ + "Organizational" + ], + "range": "Author", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "grant_name", + "definition_uri": "https://w3id.org/osc-em/organizational/grant_name", + "description": "name of the grant", + "from_schema": "https://w3id.org/osc-em/organizational", + "slot_uri": "https://w3id.org/osc-em/organizational/grant_name", + "owner": "Grant", + "domain_of": [ + "Grant" + ], + "range": "string", + "@type": "SlotDefinition" + }, { "name": "molecular_type", "definition_uri": "https://w3id.org/osc-em/samplemolecular_type", @@ -2034,44 +2077,22 @@ "@type": "SlotDefinition" }, { - "name": "EMDataset_grants", - "definition_uri": "https://w3id.org/osc-em/oscem-schemas/grants", - "description": "List of grants associated with the project", + "name": "EMDataset_organizational", + "definition_uri": "https://w3id.org/osc-em/oscem-schemas/organizational", + "description": "Information on authors and grants", "from_schema": "https://w3id.org/osc-em/oscem-schemas", - "is_a": "grants", + "is_a": "organizational", "domain": "EMDataset", - "slot_uri": "https://w3id.org/osc-em/oscem-schemas/grants", - "alias": "grants", + "slot_uri": "https://w3id.org/osc-em/oscem-schemas/organizational", + "alias": "organizational", "owner": "EMDataset", "domain_of": [ "EMDataset" ], "is_usage_slot": true, - "usage_slot_name": "grants", - "range": "Grant", + "usage_slot_name": "organizational", + "range": "Organizational", "required": true, - "multivalued": true, - "inlined": true, - "@type": "SlotDefinition" - }, - { - "name": "EMDataset_authors", - "definition_uri": "https://w3id.org/osc-em/oscem-schemas/authors", - "description": "List of authors associated with the project", - "from_schema": "https://w3id.org/osc-em/oscem-schemas", - "is_a": "authors", - "domain": "EMDataset", - "slot_uri": "https://w3id.org/osc-em/oscem-schemas/authors", - "alias": "authors", - "owner": "EMDataset", - "domain_of": [ - "EMDataset" - ], - "is_usage_slot": true, - "usage_slot_name": "authors", - "range": "Author", - "required": true, - "multivalued": true, "inlined": true, "@type": "SlotDefinition" }, @@ -2451,6 +2472,48 @@ "inlined": true, "@type": "SlotDefinition" }, + { + "name": "Organizational_authors", + "definition_uri": "https://w3id.org/osc-em/organizational/authors", + "description": "List of authors associated with the project", + "from_schema": "https://w3id.org/osc-em/organizational", + "is_a": "authors", + "domain": "Organizational", + "slot_uri": "https://w3id.org/osc-em/organizational/authors", + "alias": "authors", + "owner": "Organizational", + "domain_of": [ + "Organizational" + ], + "is_usage_slot": true, + "usage_slot_name": "authors", + "range": "Author", + "required": true, + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "Organizational_funder", + "definition_uri": "https://w3id.org/osc-em/organizational/funder", + "description": "funding organization/person.", + "from_schema": "https://w3id.org/osc-em/organizational", + "is_a": "funder", + "domain": "Organizational", + "slot_uri": "https://w3id.org/osc-em/organizational/funder", + "alias": "funder", + "owner": "Organizational", + "domain_of": [ + "Organizational" + ], + "is_usage_slot": true, + "usage_slot_name": "funder", + "range": "Funder", + "required": true, + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, { "name": "Author_name", "definition_uri": "https://w3id.org/osc-em/organizational/name", @@ -2594,6 +2657,106 @@ "required": true, "@type": "SlotDefinition" }, + { + "name": "Sample_overall_molecule", + "definition_uri": "https://w3id.org/osc-em/sampleoverall_molecule", + "description": "Description of the overall molecule", + "from_schema": "https://w3id.org/osc-em/sample", + "is_a": "overall_molecule", + "domain": "Sample", + "slot_uri": "https://w3id.org/osc-em/sampleoverall_molecule", + "alias": "overall_molecule", + "owner": "Sample", + "domain_of": [ + "Sample" + ], + "is_usage_slot": true, + "usage_slot_name": "overall_molecule", + "range": "OverallMolecule", + "required": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "Sample_molecule", + "definition_uri": "https://w3id.org/osc-em/samplemolecule", + "description": "List of molecule associated with the sample", + "from_schema": "https://w3id.org/osc-em/sample", + "is_a": "molecule", + "domain": "Sample", + "slot_uri": "https://w3id.org/osc-em/samplemolecule", + "alias": "molecule", + "owner": "Sample", + "domain_of": [ + "Sample" + ], + "is_usage_slot": true, + "usage_slot_name": "molecule", + "range": "Molecule", + "required": true, + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "Sample_ligands", + "definition_uri": "https://w3id.org/osc-em/sampleligands", + "description": "List of ligands associated with the sample", + "from_schema": "https://w3id.org/osc-em/sample", + "is_a": "ligands", + "domain": "Sample", + "slot_uri": "https://w3id.org/osc-em/sampleligands", + "alias": "ligands", + "owner": "Sample", + "domain_of": [ + "Sample" + ], + "is_usage_slot": true, + "usage_slot_name": "ligands", + "range": "Ligand", + "multivalued": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "Sample_specimen", + "definition_uri": "https://w3id.org/osc-em/samplespecimen", + "description": "Description of the specimen", + "from_schema": "https://w3id.org/osc-em/sample", + "is_a": "specimen", + "domain": "Sample", + "slot_uri": "https://w3id.org/osc-em/samplespecimen", + "alias": "specimen", + "owner": "Sample", + "domain_of": [ + "Sample" + ], + "is_usage_slot": true, + "usage_slot_name": "specimen", + "range": "Specimen", + "required": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "Sample_grid", + "definition_uri": "https://w3id.org/osc-em/samplegrid", + "description": "Description of the grid used", + "from_schema": "https://w3id.org/osc-em/sample", + "is_a": "grid", + "domain": "Sample", + "slot_uri": "https://w3id.org/osc-em/samplegrid", + "alias": "grid", + "owner": "Sample", + "domain_of": [ + "Sample" + ], + "is_usage_slot": true, + "usage_slot_name": "grid", + "range": "Grid", + "inlined": true, + "@type": "SlotDefinition" + }, { "name": "OverallMolecule_molecular_type", "definition_uri": "https://w3id.org/osc-em/samplemolecular_type", @@ -3268,106 +3431,6 @@ "range": "string", "@type": "SlotDefinition" }, - { - "name": "Sample_overall_molecule", - "definition_uri": "https://w3id.org/osc-em/sampleoverall_molecule", - "description": "Description of the overall molecule", - "from_schema": "https://w3id.org/osc-em/sample", - "is_a": "overall_molecule", - "domain": "Sample", - "slot_uri": "https://w3id.org/osc-em/sampleoverall_molecule", - "alias": "overall_molecule", - "owner": "Sample", - "domain_of": [ - "Sample" - ], - "is_usage_slot": true, - "usage_slot_name": "overall_molecule", - "range": "OverallMolecule", - "required": true, - "inlined": true, - "@type": "SlotDefinition" - }, - { - "name": "Sample_molecule", - "definition_uri": "https://w3id.org/osc-em/samplemolecule", - "description": "List of molecule associated with the sample", - "from_schema": "https://w3id.org/osc-em/sample", - "is_a": "molecule", - "domain": "Sample", - "slot_uri": "https://w3id.org/osc-em/samplemolecule", - "alias": "molecule", - "owner": "Sample", - "domain_of": [ - "Sample" - ], - "is_usage_slot": true, - "usage_slot_name": "molecule", - "range": "Molecule", - "required": true, - "multivalued": true, - "inlined": true, - "@type": "SlotDefinition" - }, - { - "name": "Sample_ligands", - "definition_uri": "https://w3id.org/osc-em/sampleligands", - "description": "List of ligands associated with the sample", - "from_schema": "https://w3id.org/osc-em/sample", - "is_a": "ligands", - "domain": "Sample", - "slot_uri": "https://w3id.org/osc-em/sampleligands", - "alias": "ligands", - "owner": "Sample", - "domain_of": [ - "Sample" - ], - "is_usage_slot": true, - "usage_slot_name": "ligands", - "range": "Ligand", - "multivalued": true, - "inlined": true, - "@type": "SlotDefinition" - }, - { - "name": "Sample_specimen", - "definition_uri": "https://w3id.org/osc-em/samplespecimen", - "description": "Description of the specimen", - "from_schema": "https://w3id.org/osc-em/sample", - "is_a": "specimen", - "domain": "Sample", - "slot_uri": "https://w3id.org/osc-em/samplespecimen", - "alias": "specimen", - "owner": "Sample", - "domain_of": [ - "Sample" - ], - "is_usage_slot": true, - "usage_slot_name": "specimen", - "range": "Specimen", - "required": true, - "inlined": true, - "@type": "SlotDefinition" - }, - { - "name": "Sample_grid", - "definition_uri": "https://w3id.org/osc-em/samplegrid", - "description": "Description of the grid used", - "from_schema": "https://w3id.org/osc-em/sample", - "is_a": "grid", - "domain": "Sample", - "slot_uri": "https://w3id.org/osc-em/samplegrid", - "alias": "grid", - "owner": "Sample", - "domain_of": [ - "Sample" - ], - "is_usage_slot": true, - "usage_slot_name": "grid", - "range": "Grid", - "inlined": true, - "@type": "SlotDefinition" - }, { "name": "QuantityValue_unit", "definition_uri": "https://w3id.org/osc-em/typesunit", @@ -3423,8 +3486,7 @@ "EMDataset_acquisition", "EMDataset_instrument", "EMDataset_sample", - "EMDataset_grants", - "EMDataset_authors" + "EMDataset_organizational" ], "slot_usage": {}, "class_uri": "https://w3id.org/osc-em/oscem-schemas/EMDataset", @@ -3554,6 +3616,20 @@ "class_uri": "https://w3id.org/osc-em/instrumentInstrument", "@type": "ClassDefinition" }, + { + "name": "Organizational", + "definition_uri": "https://w3id.org/osc-em/organizational/Organizational", + "description": "Overarching category for authors and grants", + "from_schema": "https://w3id.org/osc-em/organizational", + "slots": [ + "grants", + "Organizational_authors", + "Organizational_funder" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/osc-em/organizational/Organizational", + "@type": "ClassDefinition" + }, { "name": "Person", "definition_uri": "https://w3id.org/osc-em/organizational/Person", @@ -3604,8 +3680,7 @@ "schema:Grant" ], "slots": [ - "name", - "funder", + "grant_name", "start_date", "end_date", "budget", @@ -3616,6 +3691,36 @@ "class_uri": "http://schema.org/Grant", "@type": "ClassDefinition" }, + { + "name": "Funder", + "definition_uri": "https://w3id.org/osc-em/organizational/Funder", + "description": "Description of the project funding", + "from_schema": "https://w3id.org/osc-em/organizational", + "slots": [ + "funder_name", + "type_org", + "country" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/osc-em/organizational/Funder", + "@type": "ClassDefinition" + }, + { + "name": "Sample", + "definition_uri": "https://w3id.org/osc-em/sampleSample", + "description": "Unifying class to describe the full sample.", + "from_schema": "https://w3id.org/osc-em/sample", + "slots": [ + "Sample_overall_molecule", + "Sample_molecule", + "Sample_ligands", + "Sample_specimen", + "Sample_grid" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/osc-em/sampleSample", + "@type": "ClassDefinition" + }, { "name": "OverallMolecule", "definition_uri": "https://w3id.org/osc-em/sampleOverallMolecule", @@ -3709,22 +3814,6 @@ "class_uri": "https://w3id.org/osc-em/sampleGrid", "@type": "ClassDefinition" }, - { - "name": "Sample", - "definition_uri": "https://w3id.org/osc-em/sampleSample", - "description": "Unifying class to describe the full sample.", - "from_schema": "https://w3id.org/osc-em/sample", - "slots": [ - "Sample_overall_molecule", - "Sample_molecule", - "Sample_ligands", - "Sample_specimen", - "Sample_grid" - ], - "slot_usage": {}, - "class_uri": "https://w3id.org/osc-em/sampleSample", - "@type": "ClassDefinition" - }, { "name": "Any", "definition_uri": "https://w3id.org/osc-em/typesAny", @@ -3812,9 +3901,9 @@ ], "metamodel_version": "1.7.0", "source_file": "oscem_schemas.yaml", - "source_file_date": "2024-10-30T12:01:30", - "source_file_size": 1285, - "generation_date": "2024-10-30T13:48:38", + "source_file_date": "2024-10-30T14:42:24", + "source_file_size": 1121, + "generation_date": "2024-10-30T15:46:20", "@type": "SchemaDefinition", "@context": [ "project/jsonld/oscem_schemas.context.jsonld", diff --git a/project/jsonschema/oscem_schemas.schema.json b/project/jsonschema/oscem_schemas.schema.json index 51dbe7a..6541040 100644 --- a/project/jsonschema/oscem_schemas.schema.json +++ b/project/jsonschema/oscem_schemas.schema.json @@ -408,24 +408,14 @@ "$ref": "#/$defs/Acquisition", "description": "Describe the data acquisition parameters" }, - "authors": { - "description": "List of authors associated with the project", - "items": { - "$ref": "#/$defs/Author" - }, - "type": "array" - }, - "grants": { - "description": "List of grants associated with the project", - "items": { - "$ref": "#/$defs/Grant" - }, - "type": "array" - }, "instrument": { "$ref": "#/$defs/Instrument", "description": "Describe the instrument used to acquire the data" }, + "organizational": { + "$ref": "#/$defs/Organizational", + "description": "Information on authors and grants" + }, "sample": { "$ref": "#/$defs/Sample", "description": "Sample information" @@ -435,8 +425,7 @@ "acquisition", "instrument", "sample", - "grants", - "authors" + "organizational" ], "title": "EMDataset", "type": "object" @@ -468,6 +457,32 @@ "title": "EnergyFilter", "type": "object" }, + "Funder": { + "additionalProperties": false, + "description": "Description of the project funding", + "properties": { + "country": { + "description": "Country of the institution", + "type": [ + "string", + "null" + ] + }, + "funder_name": { + "description": "funding organization/person.", + "type": [ + "string", + "null" + ] + }, + "type_org": { + "$ref": "#/$defs/OrganizationTypeEnum", + "description": "Type of organization, academic, commercial, governmental, etc." + } + }, + "title": "Funder", + "type": "object" + }, "Grant": { "additionalProperties": false, "description": "Grant", @@ -498,15 +513,8 @@ "null" ] }, - "funder": { - "description": "funding organization/person.", - "type": [ - "string", - "null" - ] - }, - "name": { - "description": "name", + "grant_name": { + "description": "name of the grant", "type": [ "string", "null" @@ -805,6 +813,42 @@ "title": "OrganizationTypeEnum", "type": "string" }, + "Organizational": { + "additionalProperties": false, + "description": "Overarching category for authors and grants", + "properties": { + "authors": { + "description": "List of authors associated with the project", + "items": { + "$ref": "#/$defs/Author" + }, + "type": "array" + }, + "funder": { + "description": "funding organization/person.", + "items": { + "$ref": "#/$defs/Funder" + }, + "type": "array" + }, + "grants": { + "description": "List of grants associated with the project", + "items": { + "$ref": "#/$defs/Grant" + }, + "type": [ + "array", + "null" + ] + } + }, + "required": [ + "authors", + "funder" + ], + "title": "Organizational", + "type": "object" + }, "OverallMolecule": { "additionalProperties": false, "description": "Description of the overall molecule", @@ -1203,24 +1247,14 @@ "$ref": "#/$defs/Acquisition", "description": "Describe the data acquisition parameters" }, - "authors": { - "description": "List of authors associated with the project", - "items": { - "$ref": "#/$defs/Author" - }, - "type": "array" - }, - "grants": { - "description": "List of grants associated with the project", - "items": { - "$ref": "#/$defs/Grant" - }, - "type": "array" - }, "instrument": { "$ref": "#/$defs/Instrument", "description": "Describe the instrument used to acquire the data" }, + "organizational": { + "$ref": "#/$defs/Organizational", + "description": "Information on authors and grants" + }, "sample": { "$ref": "#/$defs/Sample", "description": "Sample information" @@ -1230,8 +1264,7 @@ "acquisition", "instrument", "sample", - "grants", - "authors" + "organizational" ], "title": "oscem-schemas", "type": "object", diff --git a/project/owl/oscem_schemas.owl.ttl b/project/owl/oscem_schemas.owl.ttl index dcb510e..68c172a 100644 --- a/project/owl/oscem_schemas.owl.ttl +++ b/project/owl/oscem_schemas.owl.ttl @@ -17,44 +17,41 @@ linkml:ClassDefinition ; rdfs:label "EMDataset" ; rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom ; + owl:onProperty ], + [ a owl:Restriction ; owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], + owl:minCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ] ; + owl:allValuesFrom ; + owl:onProperty ] ; skos:definition "OSC-EM Metadata for a dataset" ; skos:inScheme . @@ -62,13 +59,13 @@ linkml:ClassDefinition ; rdfs:label "Series" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom ; + owl:minCardinality 0 ; owl:onProperty ], ; skos:definition "A series of numbers constructed from min, max, and increment" ; @@ -78,249 +75,249 @@ linkml:ClassDefinition ; rdfs:label "Acquisition" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Float ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], - [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:minCardinality 0 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], + owl:allValuesFrom ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom linkml:String ; + owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:minCardinality 0 ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:Integer ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:minCardinality 0 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:minCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], + owl:allValuesFrom linkml:Float ; + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty ], + owl:allValuesFrom ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom linkml:Integer ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], + owl:allValuesFrom linkml:String ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom [ owl:intersectionOf ( [ a rdfs:Datatype ; + owl:unionOf ( linkml:Datetime linkml:Date ) ] ) ] ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Integer ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom ; + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom linkml:Integer ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], + owl:allValuesFrom ; + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], + owl:minCardinality 0 ; + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; + owl:maxCardinality 1 ; owl:onProperty ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], + owl:allValuesFrom linkml:String ; + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], + owl:minCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], + owl:allValuesFrom ; + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty ], + owl:minCardinality 0 ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty ], + owl:minCardinality 0 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom [ owl:intersectionOf ( [ a rdfs:Datatype ; - owl:unionOf ( linkml:Datetime linkml:Date ) ] ) ] ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ] ; + owl:maxCardinality 1 ; + owl:onProperty ] ; skos:definition "A set of parameteres describing the data acquisition" ; skos:inScheme . @@ -339,12 +336,12 @@ [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty ] ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ] ; skos:definition "Special device used to correct instrument inherent chromatic aberration." ; skos:inScheme . @@ -352,32 +349,32 @@ linkml:ClassDefinition ; rdfs:label "EnergyFilter" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:minCardinality 0 ; + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom linkml:Integer ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:minCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ] ; + owl:minCardinality 1 ; + owl:onProperty ] ; skos:definition "A device used to filter for electrons with specific energy." ; skos:inScheme . @@ -385,22 +382,22 @@ linkml:ClassDefinition ; rdfs:label "Phaseplate" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; + owl:minCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Boolean ; owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 1 ; owl:onProperty ] ; skos:definition "Used to modulate the phase of the electron wave." ; skos:inScheme . @@ -410,30 +407,30 @@ rdfs:label "SpecialistOptics" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty ] ; skos:definition "Optional optics used to correct for instrument limitations." ; skos:inScheme . @@ -442,22 +439,22 @@ linkml:ClassDefinition ; rdfs:label "SphericalAberrationCorrector" ; rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:minCardinality 1 ; owl:onProperty ] ; skos:definition "Special device used to correct instrument inherent spherical aberration." ; skos:inScheme . @@ -468,66 +465,66 @@ rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 1 ; owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom ; owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom ; + owl:maxCardinality 1 ; owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom ; - owl:onProperty ] ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ] ; skos:definition "Instrument values, mostly constant across a data collection." ; skos:inScheme . @@ -536,148 +533,196 @@ rdfs:label "Author" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom owl:Thing ; owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:minCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom owl:Thing ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; + owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom linkml:String ; + owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom owl:Thing ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom owl:Thing ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom owl:Thing ; owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom ; owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ], + ; + skos:definition "Details on the person performing the experiment." ; + skos:inScheme . + + a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Funder" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom owl:Thing ; - owl:onProperty ], + owl:minCardinality 0 ; + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ], - ; - skos:definition "Details on the person performing the experiment." ; + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ] ; + skos:definition "Description of the project funding" ; skos:inScheme . a owl:Class, linkml:ClassDefinition ; rdfs:label "Grant" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:minCardinality 0 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:Date ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Date ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom linkml:Date ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ], [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ] ; + skos:definition "Grant" ; + skos:exactMatch ; + skos:inScheme . + + a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Organizational" ; + rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom ; + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:minCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ] ; - skos:definition "Grant" ; - skos:exactMatch ; + owl:allValuesFrom ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ] ; + skos:definition "Overarching category for authors and grants" ; skos:inScheme . a owl:Class, @@ -685,49 +730,49 @@ rdfs:label "Person" ; rdfs:subClassOf [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom [ a rdfs:Datatype ; owl:intersectionOf ( linkml:String [ a rdfs:Datatype ; owl:onDatatype xsd:string ; owl:withRestrictions ( [ xsd:pattern "^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$" ] ) ] ) ] ; owl:onProperty ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ] ; @@ -735,6 +780,27 @@ skos:exactMatch ; skos:inScheme . + a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "authors" ; + rdfs:range ; + skos:definition "List of authors associated with the project" ; + skos:inScheme . + + a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "funder" ; + rdfs:range ; + skos:definition "funding organization/person." ; + skos:inScheme . + + a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "grants" ; + rdfs:range ; + skos:definition "List of grants associated with the project" ; + skos:inScheme . + a owl:Class, ; rdfs:label "FILAMENT" ; @@ -790,122 +856,108 @@ rdfs:label "Other" ; rdfs:subClassOf . - a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "authors" ; - rdfs:range ; - skos:definition "List of authors associated with the project" ; - skos:inScheme . - - a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "grants" ; - rdfs:range ; - skos:definition "List of grants associated with the project" ; - skos:inScheme . - a owl:Class, linkml:ClassDefinition ; rdfs:label "Grid" ; rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ], + [ a owl:Restriction ; owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], + owl:allValuesFrom linkml:String ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Float ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom linkml:String ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], + owl:allValuesFrom linkml:String ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:allValuesFrom linkml:Float ; + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty ] ; + owl:allValuesFrom ; + owl:onProperty ] ; skos:definition "Details on the grid used in the experiment." ; skos:inScheme . @@ -913,10 +965,16 @@ linkml:ClassDefinition ; rdfs:label "Ligand" ; rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; @@ -924,9 +982,6 @@ [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ], @@ -935,10 +990,7 @@ owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ] ; + owl:onProperty ] ; skos:definition "Information on ligands if present." ; skos:inScheme . @@ -946,86 +998,86 @@ linkml:ClassDefinition ; rdfs:label "Molecule" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom ; owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ], + owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom linkml:String ; + owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom linkml:String ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ], + owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom linkml:String ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ] ; + owl:maxCardinality 1 ; + owl:onProperty ] ; skos:definition "More detailed information about individual molecules." ; skos:inScheme . @@ -1034,49 +1086,49 @@ rdfs:label "OverallMolecule" ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom linkml:String ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 1 ; owl:onProperty ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom ; + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ] ; + owl:maxCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ] ; skos:definition "Description of the overall molecule" ; skos:inScheme . @@ -1084,44 +1136,44 @@ linkml:ClassDefinition ; rdfs:label "Sample" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], + owl:minCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], + owl:minCardinality 0 ; + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], + owl:allValuesFrom ; + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ] ; + owl:onProperty ] ; skos:definition "Unifying class to describe the full sample." ; skos:inScheme . @@ -1129,95 +1181,95 @@ linkml:ClassDefinition ; rdfs:label "Specimen" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], - [ a owl:Restriction ; owl:allValuesFrom ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ], + [ a owl:Restriction ; + owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:Float ; owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ], + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], + owl:minCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], + owl:minCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; - owl:onProperty ], - [ a owl:Restriction ; - owl:minCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty ] ; + owl:maxCardinality 1 ; + owl:onProperty ] ; skos:definition "Description of specimen handling." ; skos:inScheme . @@ -1246,23 +1298,23 @@ linkml:ClassDefinition ; rdfs:label "ImageSize" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ], - [ a owl:Restriction ; owl:allValuesFrom linkml:Integer ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:Integer ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ] ; + owl:onProperty ] ; skos:definition "size of a 2D image (in integer units)" ; skos:inScheme . @@ -1565,13 +1617,27 @@ skos:definition "first name" ; skos:inScheme . - a owl:ObjectProperty, + a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "funder" ; + rdfs:label "funder_name" ; rdfs:range linkml:String ; skos:definition "funding organization/person." ; skos:inScheme . + a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "grant_name" ; + rdfs:range linkml:String ; + skos:definition "name of the grant" ; + skos:inScheme . + + a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "name" ; + rdfs:range linkml:String ; + skos:definition "name" ; + skos:inScheme . + a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "name_org" ; @@ -1607,13 +1673,6 @@ skos:definition "start date" ; skos:inScheme . - a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "type_org" ; - rdfs:range ; - skos:definition "Type of organization, academic, commercial, governmental, etc." ; - skos:inScheme . - a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "work_phone" ; @@ -1642,6 +1701,13 @@ skos:definition "Describe the instrument used to acquire the data" ; skos:inScheme . + a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "organizational" ; + rdfs:range ; + skos:definition "Information on authors and grants" ; + skos:inScheme . + a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "sample" ; @@ -1994,20 +2060,6 @@ skos:definition "minimum y" ; skos:inScheme . - a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "country" ; - rdfs:range linkml:String ; - skos:definition "Country of the institution" ; - skos:inScheme . - - a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "name" ; - rdfs:range linkml:String ; - skos:definition "name" ; - skos:inScheme . - a owl:Ontology ; rdfs:label "oscem-schemas" ; dcterms:license "CC-BY" ; @@ -2015,6 +2067,13 @@ rdfs:seeAlso ; skos:definition "Schema for the Open Standards Community for Electron Microscopy (OSC-EM)" . + a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "type_org" ; + rdfs:range ; + skos:definition "Type of organization, academic, commercial, governmental, etc." ; + skos:inScheme . + a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "molecular_type" ; @@ -2027,40 +2086,40 @@ rdfs:label "BoundingBox2D" ; rdfs:subClassOf [ a owl:Restriction ; owl:allValuesFrom ; - owl:onProperty ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], + owl:minCardinality 0 ; + owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom ; + owl:minCardinality 0 ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], + owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ; + owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ] ; + owl:onProperty ] ; skos:definition "an axis-aligned 2D bounding box (float units)" ; skos:inScheme . @@ -2078,19 +2137,19 @@ owl:maxCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom ; owl:onProperty ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom ; - owl:onProperty ], + owl:minCardinality 0 ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom ; - owl:onProperty ], + owl:onProperty ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ] ; skos:definition "A range constructed from min and max" ; skos:inScheme . @@ -2109,6 +2168,13 @@ skos:definition "Details of a given specialist instrument" ; skos:inScheme . + a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "country" ; + rdfs:range linkml:String ; + skos:definition "Country of the institution" ; + skos:inScheme . + a owl:Class, linkml:EnumDefinition ; owl:unionOf ( ) ; @@ -2139,19 +2205,19 @@ owl:minCardinality 1 ; owl:onProperty ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ], - [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:allValuesFrom linkml:Float ; owl:onProperty ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Float ; + owl:minCardinality 1 ; owl:onProperty ] ; skos:definition "if a value has a unit, it should be given as a unit value pair." ; skos:exactMatch ; diff --git a/project/prefixmap/oscem_schemas.yaml b/project/prefixmap/oscem_schemas.yaml index 8b24c80..00f3369 100644 --- a/project/prefixmap/oscem_schemas.yaml +++ b/project/prefixmap/oscem_schemas.yaml @@ -28,6 +28,9 @@ "EnergyFilter": { "@id": "acquisition:EnergyFilter" }, + "Funder": { + "@id": "organizational:Funder" + }, "Grant": { "@id": "schema:Grant" }, @@ -46,6 +49,9 @@ "Molecule": { "@id": "sample:Molecule" }, + "Organizational": { + "@id": "organizational:Organizational" + }, "OverallMolecule": { "@id": "sample:OverallMolecule" }, diff --git a/project/protobuf/oscem_schemas.proto b/project/protobuf/oscem_schemas.proto index b20cda5..039e546 100644 --- a/project/protobuf/oscem_schemas.proto +++ b/project/protobuf/oscem_schemas.proto @@ -66,8 +66,7 @@ message EMDataset acquisition acquisition = 0 instrument instrument = 0 sample sample = 0 - repeated grant grants = 0 - repeated author authors = 0 + organizational organizational = 0 } // A device used to filter for electrons with specific energy. message EnergyFilter @@ -76,11 +75,17 @@ message EnergyFilter string model = 0 integer width = 0 } +// Description of the project funding +message Funder + { + string funderName = 0 + organizationTypeEnum typeOrg = 0 + string country = 0 + } // Grant message Grant { - string name = 0 - string funder = 0 + string grantName = 0 date startDate = 0 date endDate = 0 quantityValue budget = 0 @@ -139,6 +144,13 @@ message Molecule string taxonomyIdExpression = 0 string geneName = 0 } +// Overarching category for authors and grants +message Organizational + { + repeated grant grants = 0 + repeated author authors = 0 + repeated funder funder = 0 + } // Description of the overall molecule message OverallMolecule { diff --git a/project/shacl/oscem_schemas.shacl.ttl b/project/shacl/oscem_schemas.shacl.ttl index b6d9403..57472d3 100644 --- a/project/shacl/oscem_schemas.shacl.ttl +++ b/project/shacl/oscem_schemas.shacl.ttl @@ -28,12 +28,6 @@ linkml:Any a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; sh:path ], - [ sh:class ; - sh:description "List of grants associated with the project" ; - sh:minCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path ], [ sh:class ; sh:description "Sample information" ; sh:maxCount 1 ; @@ -41,12 +35,13 @@ linkml:Any a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; sh:path ], - [ sh:class ; - sh:description "List of authors associated with the project" ; + [ sh:class ; + sh:description "Information on authors and grants" ; + sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path ] ; + sh:order 3 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -55,12 +50,6 @@ linkml:Any a sh:NodeShape ; sh:description "A series of numbers constructed from min, max, and increment" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:class ; - sh:description "Increment between elements of a series" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path ], - [ sh:class ; sh:description "Minimal value of a given dataset property" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -71,7 +60,13 @@ linkml:Any a sh:NodeShape ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; - sh:path ] ; + sh:path ], + [ sh:class ; + sh:description "Increment between elements of a series" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -82,44 +77,38 @@ linkml:Any a sh:NodeShape ; sh:description "end date" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 3 ; + sh:order 2 ; sh:path ], - [ sh:datatype xsd:string ; - sh:description "project id" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path ], [ sh:class ; sh:description "budget" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; + sh:order 3 ; sh:path ], [ sh:datatype xsd:string ; - sh:description "Country of the institution" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 6 ; - sh:path ], - [ sh:datatype xsd:string ; - sh:description "funding organization/person." ; + sh:description "project id" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path ], + sh:order 4 ; + sh:path ], [ sh:datatype xsd:date ; sh:description "start date" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 2 ; + sh:order 1 ; sh:path ], [ sh:datatype xsd:string ; - sh:description "name" ; + sh:description "name of the grant" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path ] ; + sh:path ], + [ sh:datatype xsd:string ; + sh:description "Country of the institution" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -127,18 +116,23 @@ linkml:Any a sh:NodeShape ; sh:description "personal information" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "name" ; + sh:description "work phone" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path ], + sh:order 4 ; + sh:path ], + [ sh:datatype xsd:boolean ; + sh:description "work status" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path ], [ sh:datatype xsd:string ; - sh:description "email" ; + sh:description "name" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path ; - sh:pattern "^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$" ], + sh:order 0 ; + sh:path ], [ sh:datatype xsd:string ; sh:description "first name" ; sh:maxCount 1 ; @@ -146,104 +140,56 @@ linkml:Any a sh:NodeShape ; sh:order 1 ; sh:path ], [ sh:datatype xsd:string ; - sh:description "work phone" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path ], - [ sh:datatype xsd:boolean ; - sh:description "work status" ; + sh:description "email" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path ] ; + sh:order 3 ; + sh:path ; + sh:pattern "^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$" ] ; sh:targetClass . a sh:NodeShape ; sh:closed true ; sh:description "A set of parameteres describing the data acquisition" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "Whether and how you have to flip or rotate the gainref in order to align with your acquired images" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 26 ; - sh:path ], - [ sh:class ; - sh:description "Any type of special optics, such as a phaseplate" ; + sh:property [ sh:class ; + sh:description "Pixel size, in Angstrom" ; sh:maxCount 1 ; + sh:minCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 21 ; - sh:path ], + sh:order 20 ; + sh:path ], [ sh:class ; - sh:description "Movement of the Beam below the image in order to shift the image on the detector. Given in µm." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 24 ; - sh:path ], - [ sh:class ; - sh:description "Machine estimated defocus, min and max values in µm. Has a tendency to be off." ; + sh:description "Another way to move the beam above the sample for data collection purposes that does not require movement of the stage. Given in mrad." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path ], - [ sh:datatype xsd:string ; - sh:description "Make and model of the detector used" ; + sh:order 23 ; + sh:path ], + [ sh:datatype xsd:integer ; + sh:description "Number of frames that on average constitute a full movie, can be a bit hard to define for some detectors" ; sh:maxCount 1 ; - sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 8 ; - sh:path ], - [ sh:datatype xsd:integer ; - sh:description "Number of Beamtilt groups present in this dataset - for optimized processing split dataset into groups of same tilt angle. Despite its name Beamshift is often used to achive this result." ; + sh:order 16 ; + sh:path ], + [ sh:datatype xsd:float ; + sh:description "Level of binning on the images applied during data collection" ; sh:maxCount 1 ; + sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 25 ; - sh:path ], + sh:order 19 ; + sh:path ], [ sh:datatype xsd:string ; - sh:description "Cryogen used in cooling the instrument and sample, usually nitrogen" ; + sh:description "Speciman holder model" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 15 ; - sh:path ], - [ sh:class ; - sh:description "The size of the image in pixels, height and width given." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 12 ; - sh:path ], + sh:order 4 ; + sh:path ], [ sh:datatype xsd:integer ; sh:description "Number of grids imaged for this project - here with qualifier during this data acquisition" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 17 ; sh:path ], - [ sh:datatype xsd:integer ; - sh:description "Magnification level as indicated by the instrument, no unit" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path ], - [ sh:class ; - sh:description "Wether an energy filter was used and its specifics." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 11 ; - sh:path ], - [ sh:datatype xsd:integer ; - sh:description "Number of frames that on average constitute a full movie, can be a bit hard to define for some detectors" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 16 ; - sh:path ], - [ sh:description "Time and date of the data acquisition" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:or ( [ sh:datatype xsd:dateTime ; - sh:nodeKind sh:Literal ] [ sh:datatype xsd:date ; - sh:nodeKind sh:Literal ] ) ; - sh:order 13 ; - sh:path ], [ sh:class ; sh:description "Average dose per image/movie/tilt - given in electrons per square Angstrom" ; sh:maxCount 1 ; @@ -251,86 +197,129 @@ linkml:Any a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 10 ; sh:path ], - [ sh:datatype xsd:string ; - sh:description "Software used for instrument control," ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 7 ; - sh:path ], [ sh:datatype xsd:string ; sh:description "Operating mode of the detector" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 9 ; sh:path ], - [ sh:class ; - sh:description "Target defocus set, min and max values in µm." ; + [ sh:class ; + sh:description "Movement of the Beam below the image in order to shift the image on the detector. Given in µm." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path ], - [ sh:datatype xsd:float ; - sh:description "Level of binning on the images applied during data collection" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 19 ; - sh:path ], - [ sh:class ; - sh:description "Another way to move the beam above the sample for data collection purposes that does not require movement of the stage. Given in mrad." ; + sh:order 24 ; + sh:path ], + [ sh:class ; + sh:description "Temperature during data collection, in K with min and max values." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 23 ; - sh:path ], + sh:order 6 ; + sh:path ], [ sh:class ; sh:description "Movement of the beam above the sample for data collection purposes that does not require movement of the stage. Given in mrad." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 22 ; sh:path ], - [ sh:class ; - sh:description "Pixel size, in Angstrom" ; + [ sh:class ; + sh:description "Any type of special optics, such as a phaseplate" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 21 ; + sh:path ], + [ sh:datatype xsd:integer ; + sh:description "Number of images generated total for this data collection - might need a qualifier for tilt series to determine whether full series or individual tilts are counted" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 18 ; + sh:path ], + [ sh:datatype xsd:string ; + sh:description "Make and model of the detector used" ; sh:maxCount 1 ; sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 8 ; + sh:path ], + [ sh:class ; + sh:description "Wether an energy filter was used and its specifics." ; + sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 20 ; - sh:path ], + sh:order 11 ; + sh:path ], + [ sh:datatype xsd:string ; + sh:description "Cryogen used in cooling the instrument and sample, usually nitrogen" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 15 ; + sh:path ], [ sh:class ; - sh:description "Temperature during data collection, in K with min and max values." ; + sh:description "Target defocus set, min and max values in µm." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path ], + sh:order 0 ; + sh:path ], + [ sh:class ; + sh:description "Machine estimated defocus, min and max values in µm. Has a tendency to be off." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path ], [ sh:datatype xsd:string ; - sh:description "Type of cryogen used in the holder - if the holder is cooled seperately" ; + sh:description "Software used for instrument control," ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path ], + sh:order 7 ; + sh:path ], [ sh:datatype xsd:integer ; - sh:description "Number of images generated total for this data collection - might need a qualifier for tilt series to determine whether full series or individual tilts are counted" ; + sh:description "Calculated magnification, no unit" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 18 ; - sh:path ], + sh:order 3 ; + sh:path ], [ sh:class ; sh:description "Time of data acquisition per movie/tilt - in s" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 14 ; sh:path ], + [ sh:class ; + sh:description "The size of the image in pixels, height and width given." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 12 ; + sh:path ], [ sh:datatype xsd:integer ; - sh:description "Calculated magnification, no unit" ; + sh:description "Number of Beamtilt groups present in this dataset - for optimized processing split dataset into groups of same tilt angle. Despite its name Beamshift is often used to achive this result." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path ], + sh:order 25 ; + sh:path ], [ sh:datatype xsd:string ; - sh:description "Speciman holder model" ; + sh:description "Whether and how you have to flip or rotate the gainref in order to align with your acquired images" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path ] ; + sh:order 26 ; + sh:path ], + [ sh:datatype xsd:string ; + sh:description "Type of cryogen used in the holder - if the holder is cooled seperately" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path ], + [ sh:description "Time and date of the data acquisition" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:or ( [ sh:datatype xsd:dateTime ; + sh:nodeKind sh:Literal ] [ sh:datatype xsd:date ; + sh:nodeKind sh:Literal ] ) ; + sh:order 13 ; + sh:path ], + [ sh:datatype xsd:integer ; + sh:description "Magnification level as indicated by the instrument, no unit" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -363,20 +352,20 @@ linkml:Any a sh:NodeShape ; sh:nodeKind sh:Literal ; sh:order 1 ; sh:path ], - [ sh:datatype xsd:boolean ; - sh:description "whether a specific instrument was used during data acquisition" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path ], [ sh:datatype xsd:integer ; sh:description "The width of a given item - unit depends on item" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:order 2 ; - sh:path ] ; + sh:path ], + [ sh:datatype xsd:boolean ; + sh:description "whether a specific instrument was used during data acquisition" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -454,12 +443,12 @@ linkml:Any a sh:NodeShape ; sh:order 5 ; sh:path ], [ sh:datatype xsd:string ; - sh:description "Mode of imaging used during data collection" ; + sh:description "Type of electron source used in the microscope, such as FEG" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path ], + sh:order 3 ; + sh:path ], [ sh:class ; sh:description "Voltage used for the electron acceleration, in kV" ; sh:maxCount 1 ; @@ -467,6 +456,20 @@ linkml:Any a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 4 ; sh:path ], + [ sh:datatype xsd:string ; + sh:description "Mode of imaging used during data collection" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path ], + [ sh:datatype xsd:string ; + sh:description "Name/Type of the Microscope" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path ], [ sh:class ; sh:description "Spherical aberration of the instrument, in mm" ; sh:maxCount 1 ; @@ -480,21 +483,7 @@ linkml:Any a sh:NodeShape ; sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:order 1 ; - sh:path ], - [ sh:datatype xsd:string ; - sh:description "Type of electron source used in the microscope, such as FEG" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path ], - [ sh:datatype xsd:string ; - sh:description "Name/Type of the Microscope" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path ] ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -510,26 +499,11 @@ linkml:Any a sh:NodeShape ; sh:order 5 ; sh:path ], [ sh:datatype xsd:string ; - sh:description "Country of the institution" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path ], - [ sh:datatype xsd:string ; - sh:description "Name of the organization" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path ], - [ sh:datatype xsd:string ; - sh:description "ORCID of the author, a type of unique identifier" ; + sh:description "first name" ; sh:maxCount 1 ; - sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path ], + sh:order 6 ; + sh:path ], [ sh:datatype xsd:string ; sh:description "Role of the author, for example principal investigator" ; sh:maxCount 1 ; @@ -537,13 +511,12 @@ linkml:Any a sh:NodeShape ; sh:order 2 ; sh:path ], [ sh:datatype xsd:string ; - sh:description "email" ; + sh:description "Country of the institution" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 8 ; - sh:path ; - sh:pattern "^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$" ], + sh:order 1 ; + sh:path ], [ sh:datatype xsd:boolean ; sh:description "work status" ; sh:maxCount 1 ; @@ -564,41 +537,109 @@ linkml:Any a sh:NodeShape ; sh:order 4 ; sh:path ], [ sh:datatype xsd:string ; - sh:description "first name" ; + sh:description "email" ; sh:maxCount 1 ; + sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 6 ; - sh:path ] ; + sh:order 8 ; + sh:path ; + sh:pattern "^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$" ], + [ sh:datatype xsd:string ; + sh:description "ORCID of the author, a type of unique identifier" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path ], + [ sh:datatype xsd:string ; + sh:description "Name of the organization" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path ] ; sh:targetClass . + a sh:NodeShape ; + sh:closed true ; + sh:description "Description of the project funding" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "funding organization/person." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path ], + [ sh:description "Type of organization, academic, commercial, governmental, etc." ; + sh:in ( "Academic" "Commercial" "Government" "Other" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ], + [ sh:datatype xsd:string ; + sh:description "Country of the institution" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path ] ; + sh:targetClass . + + a sh:NodeShape ; + sh:closed true ; + sh:description "Overarching category for authors and grants" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class ; + sh:description "funding organization/person." ; + sh:minCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path ], + [ sh:class ; + sh:description "List of authors associated with the project" ; + sh:minCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path ], + [ sh:class ; + sh:description "List of grants associated with the project" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path ] ; + sh:targetClass . + a sh:NodeShape ; sh:closed true ; sh:description "Details on the grid used in the experiment." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "Type of material the support film is made of" ; + sh:description "Grid manufacturer" ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path ], + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path ], [ sh:datatype xsd:string ; sh:description "Thickness of the support film" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 6 ; sh:path ], - [ sh:datatype xsd:boolean ; - sh:description "Whether a support film was used" ; + [ sh:datatype xsd:string ; + sh:description "Type of material the support film is made of" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path ], + sh:order 4 ; + sh:path ], [ sh:datatype xsd:string ; - sh:description "Topology of the support film" ; + sh:description "Type of pretreatment of the grid, i.e., glow discharge" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path ], + sh:order 7 ; + sh:path ], + [ sh:datatype xsd:string ; + sh:description "Atmospheric conditions in the chamber during pretreatment, i.e., addition of specific gases, etc." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 10 ; + sh:path ], [ sh:datatype xsd:float ; sh:description "Grid mesh in lines per inch" ; sh:maxCount 1 ; @@ -606,17 +647,11 @@ linkml:Any a sh:NodeShape ; sh:order 2 ; sh:path ], [ sh:datatype xsd:string ; - sh:description "Grid manufacturer" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path ], - [ sh:datatype xsd:string ; - sh:description "Material out of which the grid is made" ; + sh:description "Topology of the support film" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path ], + sh:order 5 ; + sh:path ], [ sh:class ; sh:description "Length of time of the pretreatment in s" ; sh:maxCount 1 ; @@ -624,42 +659,42 @@ linkml:Any a sh:NodeShape ; sh:order 8 ; sh:path ], [ sh:datatype xsd:string ; - sh:description "Atmospheric conditions in the chamber during pretreatment, i.e., addition of specific gases, etc." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 10 ; - sh:path ], - [ sh:datatype xsd:string ; - sh:description "Type of pretreatment of the grid, i.e., glow discharge" ; + sh:description "Material out of which the grid is made" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 7 ; - sh:path ], + sh:order 1 ; + sh:path ], [ sh:class ; sh:description "Pressure of the chamber during pretreatment, in Pa" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 9 ; - sh:path ] ; + sh:path ], + [ sh:datatype xsd:boolean ; + sh:description "Whether a support film was used" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; sh:closed true ; sh:description "Information on ligands if present." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:boolean ; + sh:property [ sh:datatype xsd:string ; + sh:description "Provide a valid SMILES string of your ligand" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path ], + [ sh:datatype xsd:boolean ; sh:description "Whether the model contains any ligands" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:order 0 ; sh:path ], - [ sh:datatype xsd:string ; - sh:description "Provide a valid SMILES string of your ligand" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path ], [ sh:datatype xsd:string ; sh:description "Link to a reference of your ligand, i.e., CCD, PubChem, etc." ; sh:maxCount 1 ; @@ -680,39 +715,45 @@ linkml:Any a sh:NodeShape ; sh:order 3 ; sh:path ], [ sh:datatype xsd:string ; - sh:description "Scientific name of the natural host organism" ; + sh:description "Scientific name of the organism used to produce the molecule of interest" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path ], + sh:order 6 ; + sh:path ], [ sh:datatype xsd:string ; - sh:description "Scientific name of the organism used to produce the molecule of interest" ; + sh:description "Name of an individual molecule (often protein) in the sample" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 6 ; - sh:path ], + sh:order 0 ; + sh:path ], [ sh:datatype xsd:string ; - sh:description "Taxonomy ID of the natural source organism" ; + sh:description "Scientific name of the natural host organism" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path ], + sh:order 4 ; + sh:path ], [ sh:datatype xsd:string ; sh:description "Name of the gene of interest" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 8 ; sh:path ], + [ sh:description "Class of the molecule" ; + sh:in ( "Antibiotic" "Carbohydrate" "Chimera" "None of these" ) ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 2 ; + sh:path ], [ sh:datatype xsd:string ; - sh:description "Description of the overall molecular type, i.e., a complex" ; + sh:description "Taxonomy ID of the natural source organism" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path ], + sh:order 5 ; + sh:path ], [ sh:datatype xsd:string ; sh:description "Taxonomy ID of the expression system organism" ; sh:maxCount 1 ; @@ -720,26 +761,27 @@ linkml:Any a sh:NodeShape ; sh:nodeKind sh:Literal ; sh:order 7 ; sh:path ], - [ sh:description "Class of the molecule" ; - sh:in ( "Antibiotic" "Carbohydrate" "Chimera" "None of these" ) ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 2 ; - sh:path ], [ sh:datatype xsd:string ; - sh:description "Name of an individual molecule (often protein) in the sample" ; + sh:description "Description of the overall molecular type, i.e., a complex" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path ] ; + sh:order 1 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; sh:closed true ; sh:description "Description of the overall molecule" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "What type of higher order structure your sample forms - if any." ; + sh:property [ sh:datatype xsd:string ; + sh:description "Name of the full sample" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path ], + [ sh:description "What type of higher order structure your sample forms - if any." ; sh:in ( "FILAMENT" "HELICAL ARRAY" "PARTICLE" ) ; sh:maxCount 1 ; sh:minCount 1 ; @@ -758,13 +800,6 @@ linkml:Any a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path ], - [ sh:datatype xsd:string ; - sh:description "Name of the full sample" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path ], [ sh:datatype xsd:string ; sh:description "Where the sample was taken from, i.e., natural host, recombinantly expressed, etc." ; sh:maxCount 1 ; @@ -778,62 +813,64 @@ linkml:Any a sh:NodeShape ; sh:closed true ; sh:description "Unifying class to describe the full sample." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ; - sh:description "Description of the grid used" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path ], - [ sh:class ; - sh:description "List of ligands associated with the sample" ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path ], - [ sh:class ; + sh:property [ sh:class ; sh:description "Description of the overall molecule" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; sh:path ], + [ sh:class ; + sh:description "Description of the specimen" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path ], + [ sh:class ; + sh:description "Description of the grid used" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path ], [ sh:class ; sh:description "List of molecule associated with the sample" ; sh:minCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 1 ; sh:path ], - [ sh:class ; - sh:description "Description of the specimen" ; - sh:maxCount 1 ; - sh:minCount 1 ; + [ sh:class ; + sh:description "List of ligands associated with the sample" ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path ] ; + sh:order 2 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; sh:closed true ; sh:description "Description of specimen handling." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ; - sh:description "Environmental humidity just before vitrification, in %" ; + sh:property [ sh:datatype xsd:boolean ; + sh:description "Whether the sample was shadowed" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path ], + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 9 ; + sh:path ], [ sh:class ; - sh:description "Concentration of the (supra)molecule in the sample, in mg/ml" ; + sh:description "Environmental temperature just before vitrification, in K" ; sh:maxCount 1 ; + sh:minInclusive 0e+00 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path ], + sh:order 6 ; + sh:path ], [ sh:datatype xsd:boolean ; - sh:description "Whether the sample was vitrified" ; + sh:description "Whether the sample was embedded" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path ], + sh:order 8 ; + sh:path ], [ sh:datatype xsd:float ; sh:description "pH of the sample buffer" ; sh:maxCount 1 ; @@ -842,46 +879,44 @@ linkml:Any a sh:NodeShape ; sh:order 2 ; sh:path ], [ sh:class ; - sh:description "Environmental temperature just before vitrification, in K" ; + sh:description "Concentration of the (supra)molecule in the sample, in mg/ml" ; sh:maxCount 1 ; - sh:minInclusive 0e+00 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path ], - [ sh:datatype xsd:string ; - sh:description "Which cryogen was used for vitrification" ; + sh:order 1 ; + sh:path ], + [ sh:class ; + sh:description "Environmental humidity just before vitrification, in %" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path ], + [ sh:datatype xsd:boolean ; + sh:description "Whether the sample was vitrified" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path ], + sh:order 3 ; + sh:path ], [ sh:datatype xsd:boolean ; - sh:description "Whether the sample was embedded" ; + sh:description "Whether the sample was stained" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 8 ; - sh:path ], + sh:order 7 ; + sh:path ], [ sh:datatype xsd:string ; - sh:description "Name/composition of the (chemical) sample buffer during grid preparation" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path ], - [ sh:datatype xsd:boolean ; - sh:description "Whether the sample was shadowed" ; + sh:description "Which cryogen was used for vitrification" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 9 ; - sh:path ], - [ sh:datatype xsd:boolean ; - sh:description "Whether the sample was stained" ; + sh:order 4 ; + sh:path ], + [ sh:datatype xsd:string ; + sh:description "Name/composition of the (chemical) sample buffer during grid preparation" ; sh:maxCount 1 ; - sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 7 ; - sh:path ] ; + sh:order 0 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -907,29 +942,29 @@ linkml:Any a sh:NodeShape ; sh:description "an axis-aligned 2D bounding box (float units)" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:class ; - sh:description "minimum x" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path ], - [ sh:class ; sh:description "maximum y" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path ], [ sh:class ; - sh:description "maximum x" ; + sh:description "minimum y" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path ], + sh:order 2 ; + sh:path ], [ sh:class ; - sh:description "minimum y" ; + sh:description "minimum x" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path ] ; + sh:order 0 ; + sh:path ], + [ sh:class ; + sh:description "maximum x" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -937,36 +972,36 @@ linkml:Any a sh:NodeShape ; sh:description "A range constructed from min and max" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:class ; - sh:description "Maximal value of a given dataset property" ; + sh:description "Minimal value of a given dataset property" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path ], + sh:order 0 ; + sh:path ], [ sh:class ; - sh:description "Minimal value of a given dataset property" ; + sh:description "Maximal value of a given dataset property" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path ] ; + sh:order 1 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; sh:closed true ; sh:description "if a value has a unit, it should be given as a unit value pair." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "the unit of a given value" ; + sh:property [ sh:datatype xsd:float ; + sh:description "the value of a field with a unit" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path ], - [ sh:datatype xsd:float ; - sh:description "the value of a field with a unit" ; + sh:order 1 ; + sh:path ], + [ sh:datatype xsd:string ; + sh:description "the unit of a given value" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path ] ; + sh:order 0 ; + sh:path ] ; sh:targetClass . diff --git a/project/shex/oscem_schemas.shex b/project/shex/oscem_schemas.shex index 0a27ab7..dc43653 100644 --- a/project/shex/oscem_schemas.shex +++ b/project/shex/oscem_schemas.shex @@ -129,8 +129,7 @@ organizational:Author CLOSED { ( $ ( @ ; @ ; @ ; - @organizational:Grant + ; - @organizational:Author + + @organizational:Organizational ) ; rdf:type [ ] ? ) @@ -145,9 +144,20 @@ organizational:Author CLOSED { ) } +organizational:Funder CLOSED { + ( $organizational:Funder_tes ( organizational:funder_name @linkml:String ? ; + organizational:type_org [ + + + ] ? ; + organizational:country @linkml:String ? + ) ; + rdf:type [ organizational:Funder ] ? + ) +} + organizational:Grant CLOSED { - ( $organizational:Grant_tes ( schema1:name @linkml:String ? ; - organizational:funder @linkml:String ? ; + ( $organizational:Grant_tes ( organizational:grant_name @linkml:String ? ; organizational:start_date @linkml:Date ? ; organizational:end_date @linkml:Date ? ; organizational:budget @ ? ; @@ -223,6 +233,15 @@ organizational:Grant CLOSED { ) } +organizational:Organizational CLOSED { + ( $organizational:Organizational_tes ( organizational:grants @organizational:Grant * ; + organizational:authors @organizational:Author + ; + organizational:funder @organizational:Funder + + ) ; + rdf:type [ organizational:Organizational ] ? + ) +} + CLOSED { ( $ ( @linkml:String ; @linkml:String ; diff --git a/project/sqlschema/oscem_schemas.sql b/project/sqlschema/oscem_schemas.sql index 8750732..7e4c5dc 100644 --- a/project/sqlschema/oscem_schemas.sql +++ b/project/sqlschema/oscem_schemas.sql @@ -3,6 +3,7 @@ -- * Slot: acquisition_id Description: Describe the data acquisition parameters -- * Slot: instrument_id Description: Describe the instrument used to acquire the data -- * Slot: sample_id Description: Sample information +-- * Slot: organizational_id Description: Information on authors and grants -- # Class: "Any" Description: "Any type, used as the base for type-narrowing." -- * Slot: id Description: -- # Class: "Range" Description: "A range constructed from min and max" @@ -88,6 +89,8 @@ -- * Slot: acceleration_voltage_id Description: Voltage used for the electron acceleration, in kV -- * Slot: c2_aperture_id Description: C2 aperture size used in data acquisition, in µm -- * Slot: cs_id Description: Spherical aberration of the instrument, in mm +-- # Class: "Organizational" Description: "Overarching category for authors and grants" +-- * Slot: id Description: -- # Class: "Person" Description: "personal information" -- * Slot: id Description: -- * Slot: name Description: name @@ -109,13 +112,22 @@ -- * Slot: work_phone Description: work phone -- # Class: "Grant" Description: "Grant" -- * Slot: id Description: --- * Slot: name Description: name --- * Slot: funder Description: funding organization/person. +-- * Slot: grant_name Description: name of the grant -- * Slot: start_date Description: start date -- * Slot: end_date Description: end date -- * Slot: project_id Description: project id -- * Slot: country Description: Country of the institution -- * Slot: budget_id Description: budget +-- # Class: "Funder" Description: "Description of the project funding" +-- * Slot: id Description: +-- * Slot: funder_name Description: funding organization/person. +-- * Slot: type_org Description: Type of organization, academic, commercial, governmental, etc. +-- * Slot: country Description: Country of the institution +-- # Class: "Sample" Description: "Unifying class to describe the full sample." +-- * Slot: id Description: +-- * Slot: overall_molecule_id Description: Description of the overall molecule +-- * Slot: specimen_id Description: Description of the specimen +-- * Slot: grid_id Description: Description of the grid used -- # Class: "OverallMolecule" Description: "Description of the overall molecule" -- * Slot: id Description: -- * Slot: molecular_type Description: Description of the overall molecular type, i.e., a complex @@ -164,17 +176,15 @@ -- * Slot: pretreatment_atmosphere Description: Atmospheric conditions in the chamber during pretreatment, i.e., addition of specific gases, etc. -- * Slot: pretreatment_time_id Description: Length of time of the pretreatment in s -- * Slot: pretreatment_pressure_id Description: Pressure of the chamber during pretreatment, in Pa --- # Class: "Sample" Description: "Unifying class to describe the full sample." --- * Slot: id Description: --- * Slot: overall_molecule_id Description: Description of the overall molecule --- * Slot: specimen_id Description: Description of the specimen --- * Slot: grid_id Description: Description of the grid used --- # Class: "EMDataset_grants" Description: "" --- * Slot: EMDataset_id Description: Autocreated FK slot +-- # Class: "Organizational_grants" Description: "" +-- * Slot: Organizational_id Description: Autocreated FK slot -- * Slot: grants_id Description: List of grants associated with the project --- # Class: "EMDataset_authors" Description: "" --- * Slot: EMDataset_id Description: Autocreated FK slot +-- # Class: "Organizational_authors" Description: "" +-- * Slot: Organizational_id Description: Autocreated FK slot -- * Slot: authors_id Description: List of authors associated with the project +-- # Class: "Organizational_funder" Description: "" +-- * Slot: Organizational_id Description: Autocreated FK slot +-- * Slot: funder_id Description: funding organization/person. -- # Class: "Sample_molecule" Description: "" -- * Slot: Sample_id Description: Autocreated FK slot -- * Slot: molecule_id Description: List of molecule associated with the sample @@ -223,6 +233,10 @@ CREATE TABLE "ChromaticAberrationCorrector" ( instrument_type TEXT NOT NULL, PRIMARY KEY (id) ); +CREATE TABLE "Organizational" ( + id INTEGER NOT NULL, + PRIMARY KEY (id) +); CREATE TABLE "Person" ( id INTEGER NOT NULL, name TEXT, @@ -246,6 +260,13 @@ CREATE TABLE "Author" ( work_phone TEXT NOT NULL, PRIMARY KEY (id) ); +CREATE TABLE "Funder" ( + id INTEGER NOT NULL, + funder_name TEXT, + type_org VARCHAR(10), + country TEXT, + PRIMARY KEY (id) +); CREATE TABLE "Molecule" ( id INTEGER NOT NULL, name_mol TEXT NOT NULL, @@ -322,8 +343,7 @@ CREATE TABLE "Instrument" ( ); CREATE TABLE "Grant" ( id INTEGER NOT NULL, - name TEXT, - funder TEXT, + grant_name TEXT, start_date DATE, end_date DATE, project_id TEXT, @@ -376,6 +396,20 @@ CREATE TABLE "Grid" ( FOREIGN KEY(pretreatment_time_id) REFERENCES "QuantityValue" (id), FOREIGN KEY(pretreatment_pressure_id) REFERENCES "QuantityValue" (id) ); +CREATE TABLE "Organizational_authors" ( + "Organizational_id" INTEGER, + authors_id INTEGER NOT NULL, + PRIMARY KEY ("Organizational_id", authors_id), + FOREIGN KEY("Organizational_id") REFERENCES "Organizational" (id), + FOREIGN KEY(authors_id) REFERENCES "Author" (id) +); +CREATE TABLE "Organizational_funder" ( + "Organizational_id" INTEGER, + funder_id INTEGER NOT NULL, + PRIMARY KEY ("Organizational_id", funder_id), + FOREIGN KEY("Organizational_id") REFERENCES "Organizational" (id), + FOREIGN KEY(funder_id) REFERENCES "Funder" (id) +); CREATE TABLE "Acquisition" ( id INTEGER NOT NULL, nominal_magnification INTEGER, @@ -430,15 +464,24 @@ CREATE TABLE "Sample" ( FOREIGN KEY(specimen_id) REFERENCES "Specimen" (id), FOREIGN KEY(grid_id) REFERENCES "Grid" (id) ); +CREATE TABLE "Organizational_grants" ( + "Organizational_id" INTEGER, + grants_id INTEGER, + PRIMARY KEY ("Organizational_id", grants_id), + FOREIGN KEY("Organizational_id") REFERENCES "Organizational" (id), + FOREIGN KEY(grants_id) REFERENCES "Grant" (id) +); CREATE TABLE "EMDataset" ( id INTEGER NOT NULL, acquisition_id INTEGER NOT NULL, instrument_id INTEGER NOT NULL, sample_id INTEGER NOT NULL, + organizational_id INTEGER NOT NULL, PRIMARY KEY (id), FOREIGN KEY(acquisition_id) REFERENCES "Acquisition" (id), FOREIGN KEY(instrument_id) REFERENCES "Instrument" (id), - FOREIGN KEY(sample_id) REFERENCES "Sample" (id) + FOREIGN KEY(sample_id) REFERENCES "Sample" (id), + FOREIGN KEY(organizational_id) REFERENCES "Organizational" (id) ); CREATE TABLE "Sample_molecule" ( "Sample_id" INTEGER, @@ -453,18 +496,4 @@ CREATE TABLE "Sample_ligands" ( PRIMARY KEY ("Sample_id", ligands_id), FOREIGN KEY("Sample_id") REFERENCES "Sample" (id), FOREIGN KEY(ligands_id) REFERENCES "Ligand" (id) -); -CREATE TABLE "EMDataset_grants" ( - "EMDataset_id" INTEGER, - grants_id INTEGER NOT NULL, - PRIMARY KEY ("EMDataset_id", grants_id), - FOREIGN KEY("EMDataset_id") REFERENCES "EMDataset" (id), - FOREIGN KEY(grants_id) REFERENCES "Grant" (id) -); -CREATE TABLE "EMDataset_authors" ( - "EMDataset_id" INTEGER, - authors_id INTEGER NOT NULL, - PRIMARY KEY ("EMDataset_id", authors_id), - FOREIGN KEY("EMDataset_id") REFERENCES "EMDataset" (id), - FOREIGN KEY(authors_id) REFERENCES "Author" (id) ); \ No newline at end of file diff --git a/src/data/examples/EMDataset-001.yaml b/src/data/examples/EMDataset-001.yaml index 8dd36cc..8f3d3b4 100644 --- a/src/data/examples/EMDataset-001.yaml +++ b/src/data/examples/EMDataset-001.yaml @@ -26,28 +26,30 @@ acquisition: pixel_size: value: 1.2 unit: "Å" -grants: - - project_id: "SNF321" - funder: "SNF" - - project_id: "Fundingofsomekind" - funder: "SNF" -authors: - - name: "Doe" - first_name: "John" - email: "john.doe@gmail.com" - work_phone: "+4132112312" - orcid: "ORCID_123124151231" - name_org: "University of Blub" - type_org: "Academic" - country: "Switzerland" - - name: "Doe" - first_name: "Jane" - email: "jane.doe@gmail.com" - work_phone: "+4132112312" - orcid: "ORCID_123124151221" - name_org: "University of Blub" - type_org: "Academic" - country: "Switzerland" +organizational: + grants: + - project_id: "SNF321" + - project_id: "Fundingofsomekind" + funder: + - funder_name: "SNF" + - funder_name: "SNF" + authors: + - name: "Doe" + first_name: "John" + email: "john.doe@gmail.com" + work_phone: "+4132112312" + orcid: "ORCID_123124151231" + name_org: "University of Blub" + type_org: "Academic" + country: "Switzerland" + - name: "Doe" + first_name: "Jane" + email: "jane.doe@gmail.com" + work_phone: "+4132112312" + orcid: "ORCID_123124151221" + name_org: "University of Blub" + type_org: "Academic" + country: "Switzerland" sample: overall_molecule: molecular_type: "Complex" diff --git a/src/oscem_schemas/datamodel/oscem_schemas.py b/src/oscem_schemas/datamodel/oscem_schemas.py index 7e595d2..d5ce761 100644 --- a/src/oscem_schemas/datamodel/oscem_schemas.py +++ b/src/oscem_schemas/datamodel/oscem_schemas.py @@ -1,5 +1,5 @@ # Auto generated from oscem_schemas.yaml by pythongen.py version: 0.0.1 -# Generation date: 2024-10-30T13:48:40 +# Generation date: 2024-10-30T15:46:22 # Schema: oscem-schemas # # id: https://w3id.org/osc-em/oscem-schemas @@ -64,8 +64,7 @@ class EMDataset(YAMLRoot): acquisition: Union[dict, "Acquisition"] = None instrument: Union[dict, "Instrument"] = None sample: Union[dict, "Sample"] = None - grants: Union[Union[dict, "Grant"], List[Union[dict, "Grant"]]] = None - authors: Union[Union[dict, "Author"], List[Union[dict, "Author"]]] = None + organizational: Union[dict, "Organizational"] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.acquisition): @@ -83,15 +82,10 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if not isinstance(self.sample, Sample): self.sample = Sample(**as_dict(self.sample)) - if self._is_empty(self.grants): - self.MissingRequiredField("grants") - if not isinstance(self.grants, list): - self.grants = [self.grants] if self.grants is not None else [] - self.grants = [v if isinstance(v, Grant) else Grant(**as_dict(v)) for v in self.grants] - - if self._is_empty(self.authors): - self.MissingRequiredField("authors") - self._normalize_inlined_as_dict(slot_name="authors", slot_type=Author, key_name="orcid", keyed=False) + if self._is_empty(self.organizational): + self.MissingRequiredField("organizational") + if not isinstance(self.organizational, Organizational): + self.organizational = Organizational(**as_dict(self.organizational)) super().__post_init__(**kwargs) @@ -432,6 +426,40 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): super().__post_init__(**kwargs) +@dataclass(repr=False) +class Organizational(YAMLRoot): + """ + Overarching category for authors and grants + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = ORGANIZATIONAL["Organizational"] + class_class_curie: ClassVar[str] = "organizational:Organizational" + class_name: ClassVar[str] = "Organizational" + class_model_uri: ClassVar[URIRef] = URIRef("https://w3id.org/osc-em/oscem-schemas/Organizational") + + authors: Union[Union[dict, "Author"], List[Union[dict, "Author"]]] = None + funder: Union[Union[dict, "Funder"], List[Union[dict, "Funder"]]] = None + grants: Optional[Union[Union[dict, "Grant"], List[Union[dict, "Grant"]]]] = empty_list() + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.authors): + self.MissingRequiredField("authors") + self._normalize_inlined_as_dict(slot_name="authors", slot_type=Author, key_name="orcid", keyed=False) + + if self._is_empty(self.funder): + self.MissingRequiredField("funder") + if not isinstance(self.funder, list): + self.funder = [self.funder] if self.funder is not None else [] + self.funder = [v if isinstance(v, Funder) else Funder(**as_dict(v)) for v in self.funder] + + if not isinstance(self.grants, list): + self.grants = [self.grants] if self.grants is not None else [] + self.grants = [v if isinstance(v, Grant) else Grant(**as_dict(v)) for v in self.grants] + + super().__post_init__(**kwargs) + + @dataclass(repr=False) class Person(YAMLRoot): """ @@ -544,8 +572,7 @@ class Grant(YAMLRoot): class_name: ClassVar[str] = "Grant" class_model_uri: ClassVar[URIRef] = URIRef("https://w3id.org/osc-em/oscem-schemas/Grant") - name: Optional[str] = None - funder: Optional[str] = None + grant_name: Optional[str] = None start_date: Optional[Union[str, XSDDate]] = None end_date: Optional[Union[str, XSDDate]] = None budget: Optional[Union[dict, "QuantityValue"]] = None @@ -553,11 +580,8 @@ class Grant(YAMLRoot): country: Optional[str] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if self.name is not None and not isinstance(self.name, str): - self.name = str(self.name) - - if self.funder is not None and not isinstance(self.funder, str): - self.funder = str(self.funder) + if self.grant_name is not None and not isinstance(self.grant_name, str): + self.grant_name = str(self.grant_name) if self.start_date is not None and not isinstance(self.start_date, XSDDate): self.start_date = XSDDate(self.start_date) @@ -577,6 +601,76 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): super().__post_init__(**kwargs) +@dataclass(repr=False) +class Funder(YAMLRoot): + """ + Description of the project funding + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = ORGANIZATIONAL["Funder"] + class_class_curie: ClassVar[str] = "organizational:Funder" + class_name: ClassVar[str] = "Funder" + class_model_uri: ClassVar[URIRef] = URIRef("https://w3id.org/osc-em/oscem-schemas/Funder") + + funder_name: Optional[str] = None + type_org: Optional[Union[str, "OrganizationTypeEnum"]] = None + country: Optional[str] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self.funder_name is not None and not isinstance(self.funder_name, str): + self.funder_name = str(self.funder_name) + + if self.type_org is not None and not isinstance(self.type_org, OrganizationTypeEnum): + self.type_org = OrganizationTypeEnum(self.type_org) + + if self.country is not None and not isinstance(self.country, str): + self.country = str(self.country) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Sample(YAMLRoot): + """ + Unifying class to describe the full sample. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = SAMPLE["Sample"] + class_class_curie: ClassVar[str] = "sample:Sample" + class_name: ClassVar[str] = "Sample" + class_model_uri: ClassVar[URIRef] = URIRef("https://w3id.org/osc-em/oscem-schemas/Sample") + + overall_molecule: Union[dict, "OverallMolecule"] = None + molecule: Union[Union[dict, "Molecule"], List[Union[dict, "Molecule"]]] = None + specimen: Union[dict, "Specimen"] = None + ligands: Optional[Union[Union[dict, "Ligand"], List[Union[dict, "Ligand"]]]] = empty_list() + grid: Optional[Union[dict, "Grid"]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.overall_molecule): + self.MissingRequiredField("overall_molecule") + if not isinstance(self.overall_molecule, OverallMolecule): + self.overall_molecule = OverallMolecule(**as_dict(self.overall_molecule)) + + if self._is_empty(self.molecule): + self.MissingRequiredField("molecule") + self._normalize_inlined_as_dict(slot_name="molecule", slot_type=Molecule, key_name="name_mol", keyed=False) + + if self._is_empty(self.specimen): + self.MissingRequiredField("specimen") + if not isinstance(self.specimen, Specimen): + self.specimen = Specimen(**as_dict(self.specimen)) + + self._normalize_inlined_as_dict(slot_name="ligands", slot_type=Ligand, key_name="present", keyed=False) + + if self.grid is not None and not isinstance(self.grid, Grid): + self.grid = Grid(**as_dict(self.grid)) + + super().__post_init__(**kwargs) + + @dataclass(repr=False) class OverallMolecule(YAMLRoot): """ @@ -852,47 +946,6 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): super().__post_init__(**kwargs) -@dataclass(repr=False) -class Sample(YAMLRoot): - """ - Unifying class to describe the full sample. - """ - _inherited_slots: ClassVar[List[str]] = [] - - class_class_uri: ClassVar[URIRef] = SAMPLE["Sample"] - class_class_curie: ClassVar[str] = "sample:Sample" - class_name: ClassVar[str] = "Sample" - class_model_uri: ClassVar[URIRef] = URIRef("https://w3id.org/osc-em/oscem-schemas/Sample") - - overall_molecule: Union[dict, OverallMolecule] = None - molecule: Union[Union[dict, Molecule], List[Union[dict, Molecule]]] = None - specimen: Union[dict, Specimen] = None - ligands: Optional[Union[Union[dict, Ligand], List[Union[dict, Ligand]]]] = empty_list() - grid: Optional[Union[dict, Grid]] = None - - def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if self._is_empty(self.overall_molecule): - self.MissingRequiredField("overall_molecule") - if not isinstance(self.overall_molecule, OverallMolecule): - self.overall_molecule = OverallMolecule(**as_dict(self.overall_molecule)) - - if self._is_empty(self.molecule): - self.MissingRequiredField("molecule") - self._normalize_inlined_as_dict(slot_name="molecule", slot_type=Molecule, key_name="name_mol", keyed=False) - - if self._is_empty(self.specimen): - self.MissingRequiredField("specimen") - if not isinstance(self.specimen, Specimen): - self.specimen = Specimen(**as_dict(self.specimen)) - - self._normalize_inlined_as_dict(slot_name="ligands", slot_type=Ligand, key_name="present", keyed=False) - - if self.grid is not None and not isinstance(self.grid, Grid): - self.grid = Grid(**as_dict(self.grid)) - - super().__post_init__(**kwargs) - - Any = Any @dataclass(repr=False) @@ -1113,11 +1166,8 @@ class slots: slots.sample = Slot(uri=DEFAULT_.sample, name="sample", curie=DEFAULT_.curie('sample'), model_uri=DEFAULT_.sample, domain=None, range=Optional[Union[dict, Sample]]) -slots.grants = Slot(uri=DEFAULT_.grants, name="grants", curie=DEFAULT_.curie('grants'), - model_uri=DEFAULT_.grants, domain=None, range=Optional[Union[Union[dict, Grant], List[Union[dict, Grant]]]]) - -slots.authors = Slot(uri=DEFAULT_.authors, name="authors", curie=DEFAULT_.curie('authors'), - model_uri=DEFAULT_.authors, domain=None, range=Optional[Union[Union[dict, Author], List[Union[dict, Author]]]]) +slots.organizational = Slot(uri=DEFAULT_.organizational, name="organizational", curie=DEFAULT_.curie('organizational'), + model_uri=DEFAULT_.organizational, domain=None, range=Optional[Union[dict, Organizational]]) slots.nominal_defocus = Slot(uri=ACQUISITION.nominal_defocus, name="nominal_defocus", curie=ACQUISITION.curie('nominal_defocus'), model_uri=DEFAULT_.nominal_defocus, domain=None, range=Optional[Union[dict, Range]]) @@ -1273,8 +1323,11 @@ class slots: slots.orcid = Slot(uri=ORGANIZATIONAL.orcid, name="orcid", curie=ORGANIZATIONAL.curie('orcid'), model_uri=DEFAULT_.orcid, domain=None, range=Optional[str]) +slots.funder_name = Slot(uri=ORGANIZATIONAL.funder_name, name="funder_name", curie=ORGANIZATIONAL.curie('funder_name'), + model_uri=DEFAULT_.funder_name, domain=None, range=Optional[str]) + slots.funder = Slot(uri=ORGANIZATIONAL.funder, name="funder", curie=ORGANIZATIONAL.curie('funder'), - model_uri=DEFAULT_.funder, domain=None, range=Optional[str]) + model_uri=DEFAULT_.funder, domain=None, range=Optional[Union[Union[dict, Funder], List[Union[dict, Funder]]]]) slots.start_date = Slot(uri=ORGANIZATIONAL.start_date, name="start_date", curie=ORGANIZATIONAL.curie('start_date'), model_uri=DEFAULT_.start_date, domain=None, range=Optional[Union[str, XSDDate]]) @@ -1288,6 +1341,15 @@ class slots: slots.project_id = Slot(uri=SCHEMA.identifier, name="project_id", curie=SCHEMA.curie('identifier'), model_uri=DEFAULT_.project_id, domain=None, range=Optional[str]) +slots.grants = Slot(uri=ORGANIZATIONAL.grants, name="grants", curie=ORGANIZATIONAL.curie('grants'), + model_uri=DEFAULT_.grants, domain=None, range=Optional[Union[Union[dict, Grant], List[Union[dict, Grant]]]]) + +slots.authors = Slot(uri=ORGANIZATIONAL.authors, name="authors", curie=ORGANIZATIONAL.curie('authors'), + model_uri=DEFAULT_.authors, domain=None, range=Optional[Union[Union[dict, Author], List[Union[dict, Author]]]]) + +slots.grant_name = Slot(uri=ORGANIZATIONAL.grant_name, name="grant_name", curie=ORGANIZATIONAL.curie('grant_name'), + model_uri=DEFAULT_.grant_name, domain=None, range=Optional[str]) + slots.molecular_type = Slot(uri=SAMPLE.molecular_type, name="molecular_type", curie=SAMPLE.curie('molecular_type'), model_uri=DEFAULT_.molecular_type, domain=None, range=Optional[str]) @@ -1456,11 +1518,8 @@ class slots: slots.EMDataset_sample = Slot(uri=DEFAULT_.sample, name="EMDataset_sample", curie=DEFAULT_.curie('sample'), model_uri=DEFAULT_.EMDataset_sample, domain=EMDataset, range=Union[dict, "Sample"]) -slots.EMDataset_grants = Slot(uri=DEFAULT_.grants, name="EMDataset_grants", curie=DEFAULT_.curie('grants'), - model_uri=DEFAULT_.EMDataset_grants, domain=EMDataset, range=Union[Union[dict, "Grant"], List[Union[dict, "Grant"]]]) - -slots.EMDataset_authors = Slot(uri=DEFAULT_.authors, name="EMDataset_authors", curie=DEFAULT_.curie('authors'), - model_uri=DEFAULT_.EMDataset_authors, domain=EMDataset, range=Union[Union[dict, "Author"], List[Union[dict, "Author"]]]) +slots.EMDataset_organizational = Slot(uri=DEFAULT_.organizational, name="EMDataset_organizational", curie=DEFAULT_.curie('organizational'), + model_uri=DEFAULT_.EMDataset_organizational, domain=EMDataset, range=Union[dict, "Organizational"]) slots.Acquisition_detector = Slot(uri=ACQUISITION.detector, name="Acquisition_detector", curie=ACQUISITION.curie('detector'), model_uri=DEFAULT_.Acquisition_detector, domain=Acquisition, range=str) @@ -1519,6 +1578,12 @@ class slots: slots.Instrument_cs = Slot(uri=INSTRUMENT.cs, name="Instrument_cs", curie=INSTRUMENT.curie('cs'), model_uri=DEFAULT_.Instrument_cs, domain=Instrument, range=Union[dict, "QuantityValue"]) +slots.Organizational_authors = Slot(uri=ORGANIZATIONAL.authors, name="Organizational_authors", curie=ORGANIZATIONAL.curie('authors'), + model_uri=DEFAULT_.Organizational_authors, domain=Organizational, range=Union[Union[dict, "Author"], List[Union[dict, "Author"]]]) + +slots.Organizational_funder = Slot(uri=ORGANIZATIONAL.funder, name="Organizational_funder", curie=ORGANIZATIONAL.curie('funder'), + model_uri=DEFAULT_.Organizational_funder, domain=Organizational, range=Union[Union[dict, "Funder"], List[Union[dict, "Funder"]]]) + slots.Author_name = Slot(uri=SCHEMA.name, name="Author_name", curie=SCHEMA.curie('name'), model_uri=DEFAULT_.Author_name, domain=Author, range=str) @@ -1541,6 +1606,21 @@ class slots: slots.Author_name_org = Slot(uri=ORGANIZATIONAL.name_org, name="Author_name_org", curie=ORGANIZATIONAL.curie('name_org'), model_uri=DEFAULT_.Author_name_org, domain=Author, range=str) +slots.Sample_overall_molecule = Slot(uri=SAMPLE.overall_molecule, name="Sample_overall_molecule", curie=SAMPLE.curie('overall_molecule'), + model_uri=DEFAULT_.Sample_overall_molecule, domain=Sample, range=Union[dict, "OverallMolecule"]) + +slots.Sample_molecule = Slot(uri=SAMPLE.molecule, name="Sample_molecule", curie=SAMPLE.curie('molecule'), + model_uri=DEFAULT_.Sample_molecule, domain=Sample, range=Union[Union[dict, "Molecule"], List[Union[dict, "Molecule"]]]) + +slots.Sample_ligands = Slot(uri=SAMPLE.ligands, name="Sample_ligands", curie=SAMPLE.curie('ligands'), + model_uri=DEFAULT_.Sample_ligands, domain=Sample, range=Optional[Union[Union[dict, "Ligand"], List[Union[dict, "Ligand"]]]]) + +slots.Sample_specimen = Slot(uri=SAMPLE.specimen, name="Sample_specimen", curie=SAMPLE.curie('specimen'), + model_uri=DEFAULT_.Sample_specimen, domain=Sample, range=Union[dict, "Specimen"]) + +slots.Sample_grid = Slot(uri=SAMPLE.grid, name="Sample_grid", curie=SAMPLE.curie('grid'), + model_uri=DEFAULT_.Sample_grid, domain=Sample, range=Optional[Union[dict, "Grid"]]) + slots.OverallMolecule_molecular_type = Slot(uri=SAMPLE.molecular_type, name="OverallMolecule_molecular_type", curie=SAMPLE.curie('molecular_type'), model_uri=DEFAULT_.OverallMolecule_molecular_type, domain=OverallMolecule, range=str) @@ -1649,21 +1729,6 @@ class slots: slots.Grid_pretreatment_atmosphere = Slot(uri=SAMPLE.pretreatment_atmosphere, name="Grid_pretreatment_atmosphere", curie=SAMPLE.curie('pretreatment_atmosphere'), model_uri=DEFAULT_.Grid_pretreatment_atmosphere, domain=Grid, range=Optional[str]) -slots.Sample_overall_molecule = Slot(uri=SAMPLE.overall_molecule, name="Sample_overall_molecule", curie=SAMPLE.curie('overall_molecule'), - model_uri=DEFAULT_.Sample_overall_molecule, domain=Sample, range=Union[dict, OverallMolecule]) - -slots.Sample_molecule = Slot(uri=SAMPLE.molecule, name="Sample_molecule", curie=SAMPLE.curie('molecule'), - model_uri=DEFAULT_.Sample_molecule, domain=Sample, range=Union[Union[dict, Molecule], List[Union[dict, Molecule]]]) - -slots.Sample_ligands = Slot(uri=SAMPLE.ligands, name="Sample_ligands", curie=SAMPLE.curie('ligands'), - model_uri=DEFAULT_.Sample_ligands, domain=Sample, range=Optional[Union[Union[dict, Ligand], List[Union[dict, Ligand]]]]) - -slots.Sample_specimen = Slot(uri=SAMPLE.specimen, name="Sample_specimen", curie=SAMPLE.curie('specimen'), - model_uri=DEFAULT_.Sample_specimen, domain=Sample, range=Union[dict, Specimen]) - -slots.Sample_grid = Slot(uri=SAMPLE.grid, name="Sample_grid", curie=SAMPLE.curie('grid'), - model_uri=DEFAULT_.Sample_grid, domain=Sample, range=Optional[Union[dict, Grid]]) - slots.QuantityValue_unit = Slot(uri=QUDT.hasUnit, name="QuantityValue_unit", curie=QUDT.curie('hasUnit'), model_uri=DEFAULT_.QuantityValue_unit, domain=QuantityValue, range=str) diff --git a/src/oscem_schemas/schema/organizational.yaml b/src/oscem_schemas/schema/organizational.yaml index 5e9b541..618f9ad 100644 --- a/src/oscem_schemas/schema/organizational.yaml +++ b/src/oscem_schemas/schema/organizational.yaml @@ -27,6 +27,18 @@ enums: description: Other types of organizations classes: + Organizational: + description: Overarching category for authors and grants + slots: + - grants + - authors + - funder + slot_usage: + authors: + required: true + funder: + required: true + Person: description: personal information class_uri: schema:Person @@ -66,14 +78,20 @@ classes: class_uri: schema:Grant description: Grant slots: - - name - - funder + - grant_name - start_date - end_date - budget - project_id - country + Funder: + description: Description of the project funding + slots: + - funder_name + - type_org + - country + slots: first_name: description: first name @@ -113,9 +131,13 @@ slots: orcid: description: ORCID of the author, a type of unique identifier range: string - funder: + funder_name: description: funding organization/person. range: string + funder: + description: funding organization/person. + range: Funder + multivalued: true start_date: description: start date range: date @@ -128,4 +150,15 @@ slots: project_id: description: project id range: string - slot_uri: schema:identifier \ No newline at end of file + slot_uri: schema:identifier + grants: + description: List of grants associated with the project + range: Grant + multivalued: true + authors: + description: List of authors associated with the project + range: Author + multivalued: true + grant_name: + description: name of the grant + range: string \ No newline at end of file diff --git a/src/oscem_schemas/schema/oscem_schemas.yaml b/src/oscem_schemas/schema/oscem_schemas.yaml index dca4bae..fa15a91 100644 --- a/src/oscem_schemas/schema/oscem_schemas.yaml +++ b/src/oscem_schemas/schema/oscem_schemas.yaml @@ -28,8 +28,7 @@ classes: - acquisition - instrument - sample - - grants - - authors + - organizational slot_usage: acquisition: required: true @@ -37,9 +36,7 @@ classes: required: true sample: required: true - grants: - required: true - authors: + organizational: required: true slots: @@ -52,11 +49,6 @@ slots: sample: description: Sample information range: Sample - grants: - description: List of grants associated with the project - range: Grant - multivalued: true - authors: - description: List of authors associated with the project - range: Author - multivalued: true \ No newline at end of file + organizational: + description: Information on authors and grants + range: Organizational \ No newline at end of file diff --git a/src/oscem_schemas/schema/oscem_schemas_cellular_tomo.yaml b/src/oscem_schemas/schema/oscem_schemas_cellular_tomo.yaml index fadce8c..bb41832 100644 --- a/src/oscem_schemas/schema/oscem_schemas_cellular_tomo.yaml +++ b/src/oscem_schemas/schema/oscem_schemas_cellular_tomo.yaml @@ -32,8 +32,7 @@ classes: - acquisition - instrument - sample - - grants - - authors + - organizational slot_usage: acquisition: required: true @@ -41,9 +40,7 @@ classes: required: true sample: required: true - grants: - required: true - authors: + organizational: required: true AcquisitionTomo: is_a: Acquisition @@ -65,12 +62,7 @@ slots: range: Instrument sample: description: Sample information - range: Sample - grants: - description: List of grants associated with the project - range: Grant - multivalued: true - authors: - description: List of authors associated with the project - range: Author - multivalued: true + range: Sample_cellular_lab + organizational: + description: Information on authors and grants + range: Organizational diff --git a/src/oscem_schemas/schema/oscem_schemas_wild_tomo.yaml b/src/oscem_schemas/schema/oscem_schemas_env_tomo.yaml similarity index 79% rename from src/oscem_schemas/schema/oscem_schemas_wild_tomo.yaml rename to src/oscem_schemas/schema/oscem_schemas_env_tomo.yaml index 2933703..462cad5 100644 --- a/src/oscem_schemas/schema/oscem_schemas_wild_tomo.yaml +++ b/src/oscem_schemas/schema/oscem_schemas_env_tomo.yaml @@ -19,7 +19,7 @@ imports: - linkml:types - ./acquisition - ./instrument - - ./sample_wild + - ./sample_environmental - ./tomography - ./organizational @@ -32,8 +32,7 @@ classes: - acquisition - instrument - sample - - grants - - authors + - organizational slot_usage: acquisition: required: true @@ -41,9 +40,7 @@ classes: required: true sample: required: true - grants: - required: true - authors: + organizational: required: true AcquisitionTomo: is_a: Acquisition @@ -66,11 +63,6 @@ slots: sample: description: Sample information range: Sample - grants: - description: List of grants associated with the project - range: Grant - multivalued: true - authors: - description: List of authors associated with the project - range: Author - multivalued: true \ No newline at end of file + organizational: + description: Information on authors and grants + range: Organizational \ No newline at end of file diff --git a/src/oscem_schemas/schema/oscem_schemas_tomo.yaml b/src/oscem_schemas/schema/oscem_schemas_tomo.yaml index 3a62b86..fe3050c 100644 --- a/src/oscem_schemas/schema/oscem_schemas_tomo.yaml +++ b/src/oscem_schemas/schema/oscem_schemas_tomo.yaml @@ -32,8 +32,7 @@ classes: - acquisition - instrument - sample - - grants - - authors + - organizational slot_usage: acquisition: required: true @@ -41,9 +40,7 @@ classes: required: true sample: required: true - grants: - required: true - authors: + organizational: required: true AcquisitionTomo: is_a: Acquisition @@ -66,11 +63,6 @@ slots: sample: description: Sample information range: Sample - grants: - description: List of grants associated with the project - range: Grant - multivalued: true - authors: - description: List of authors associated with the project - range: Author - multivalued: true \ No newline at end of file + organizational: + description: Information on authors and grants + range: Organizational \ No newline at end of file diff --git a/src/oscem_schemas/schema/sample.yaml b/src/oscem_schemas/schema/sample.yaml index f095576..23bea43 100644 --- a/src/oscem_schemas/schema/sample.yaml +++ b/src/oscem_schemas/schema/sample.yaml @@ -35,6 +35,30 @@ enums: description: If your protein (complex) of interest forms individual particles on the grid with no orderd interactions classes: + + Sample: + description: Unifying class to describe the full sample. + slots: + - overall_molecule + - molecule + - ligands + - specimen + - grid + slot_usage: + overall_molecule: + # alias: Overall_Molecule + required: true + molecule: + # alias: Molecule + required: true + ligands: + # alias: Ligands + specimen: + # alias: Specimen + required: true + grid: + # alias: Grid + OverallMolecule: description: Description of the overall molecule slots: @@ -186,28 +210,6 @@ classes: pretreatment_atmosphere: # alias: Pretreatment_atmosphere - Sample: - description: Unifying class to describe the full sample. - slots: - - overall_molecule - - molecule - - ligands - - specimen - - grid - slot_usage: - overall_molecule: - # alias: Overall_Molecule - required: true - molecule: - # alias: Molecule - required: true - ligands: - # alias: Ligands - specimen: - # alias: Specimen - required: true - grid: - # alias: Grid slots: molecular_type: diff --git a/src/oscem_schemas/schema/sample_cellular_tomo_lab.yaml b/src/oscem_schemas/schema/sample_cellular_tomo_lab.yaml index 9724bb7..58b1b80 100644 --- a/src/oscem_schemas/schema/sample_cellular_tomo_lab.yaml +++ b/src/oscem_schemas/schema/sample_cellular_tomo_lab.yaml @@ -7,10 +7,11 @@ prefixes: linkml: https://w3id.org/linkml/ cellular_tomo_wild_sample: https://w3id.org/osc-em/cellular_tomo_wild_sample -default_prefix: cellular_tomo_wild_sample +default_prefix: cellular_tomo_ imports: - linkml:types + - ./sample_environmental enums: FreezingMethodEnum: @@ -22,8 +23,9 @@ enums: description: Usually used for larger organic complexes, such as organoids or even tissue samples. classes: - Sample: - description: Unifying class to describe the full sample. + Sample_cellular_lab: + description: Unifying class to describe the full sample with growth conditions + is_a: Sample slots: - specimen - growth_condition @@ -31,16 +33,6 @@ classes: - thinning - tomogram_features - - Specimen: - description: base information on the acquisition and treatment of the sample itself. - slots: - - organism - - strain - - tissue - - source - - handling - GrowthCondition: description: how the cells were grown slots: @@ -51,110 +43,13 @@ classes: - atmosphere - temperature - Freezing: - description: how the sample was frozen. - slots: - - cryogen - - method - - blotting - - humidity - - temperature - - atmosphere - - details - - Thinning: - description: how the frozen sample was thinned by i.e. FiB-milling - slots: - - method_thin - - instrument_thin - - ion_source - - target_thickness - - lift_out - - TomogramFeatures: - description: what was the target of the tomograms, and what area of a cell do they cover. - slots: - - cellular_features - - organelles - - main_target - - details_tomo - slots: - organism: - description: the organism(s) present in your sample, if not perfectly defined try to asses as close as possible. - range: string - multivalued: true - tissue: - description: if the sample is a tissue sample please indicate what type of tissue. - range: string - source: - description: where is this sample from? i.e. Hospital - range: string - strain: - description: The strain of the organism you are working with - range: string - handling: - description: What was done to the sample, please give an overview of relevant treatments. - range: string - sample: - range: Sample - cryogen: - description: the cryogen used to freeze the sample, i.e. ethane - range: string - method: - description: freezing method - such as plunge freezing, high pressure freezing etc. - range: FreezingMethodEnum - blotting: - description: whether blotting was performed. - range: boolean - humidity: - description: humidity of the atmosphere right before/ during freezing; in %. - range: QuantityValue temperature: description: temperature of the sample; in K. range: QuantityValue atmosphere: description: What was the atmosphere the sample was in, elaborate on any special gases present etc. range: string - details: - description: Any further comments on the freezing process go here. - range: string - freezing: - range: Freezing - thinning: - range: Thinning - method_thin: - description: The thinning method used, such as FIB milling. - range: string - instrument_thin: - description: Instrument used for thinning the sample - range: string - ion_source: - description: what ion source was used? - range: string - target_thickness: - description: What was the target thickness of the lamella; in nm. - range: QuantityValue - lift_out: - description: whether a lift out was performed - range: boolean - tomogram_features: - range: TomogramFeatures - cellular_features: - description: What type of cellular features are present in your tomograms? - range: string - organelles: - description: What organelles; if any; are present? - range: string - multivalued: true - main_target: - description: What was the main biological target of your research for this tomogram? - range: string - details_tomo: - description: If you have any further comments on your tomograms please leave them here - range: string - growth_condition: - range: GrowthCondition media: description: What growth media was used range: string diff --git a/src/oscem_schemas/schema/sample_wild.yaml b/src/oscem_schemas/schema/sample_environmental.yaml similarity index 99% rename from src/oscem_schemas/schema/sample_wild.yaml rename to src/oscem_schemas/schema/sample_environmental.yaml index 5e8119f..650359a 100644 --- a/src/oscem_schemas/schema/sample_wild.yaml +++ b/src/oscem_schemas/schema/sample_environmental.yaml @@ -7,7 +7,7 @@ prefixes: linkml: https://w3id.org/linkml/ wild_sample: https://w3id.org/osc-em/wild_sample -default_prefix: wild_sample +default_prefix: environmental_sample imports: - linkml:types