diff --git a/.gitignore b/.gitignore index 421e9a901..aad59ade5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ # generated part of documentation -/docs/elements/*.md +/docs/elements/**/*.md # linkml-run-examples output (not useful to have in git in its current form) /examples/output/ diff --git a/2025-09-17_ref_metadata_model_v1.1_share.xlsx b/2025-09-17_ref_metadata_model_v1.1_share.xlsx deleted file mode 100644 index dca37ab62..000000000 Binary files a/2025-09-17_ref_metadata_model_v1.1_share.xlsx and /dev/null differ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e4abc3441..56282d1ac 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,9 +1,9 @@ -# Contributing to CatCore +# Contributing to CoreMeta4Cat :+1: First of all: Thank you for taking the time to contribute! The following is a set of guidelines for contributing to -CatCore. These guidelines are not strict rules. +CoreMeta4Cat. These guidelines are not strict rules. Use your best judgment, and feel free to propose changes to this document in a pull request. @@ -22,7 +22,7 @@ in a pull request. ## Code of Conduct -The CatCore team strives to create a +The CoreMeta4Cat team strives to create a welcoming environment for editors, users and other contributors. Please carefully read our [Code of Conduct](CODE_OF_CONDUCT.md). @@ -73,7 +73,7 @@ Please submit a [Pull Request][pulls] to submit a new term for consideration. - Never work on the main branch, always work on an issue/feature branch - Core developers can work on branches off origin rather than forks - Always create a PR on a branch to maximize transparency of what you are doing - - PRs should be reviewed and merged in a timely fashion by the CatCore technical leads + - PRs should be reviewed and merged in a timely fashion by the CoreMeta4Cat technical leads - PRs that do not pass GitHub actions should never be merged - In the case of git conflicts, the contributor should try and resolve the conflict - If a PR fails a GitHub action check, the contributor should try and resolve the issue in a timely fashion @@ -115,7 +115,7 @@ Core developers should read the material on the [LinkML site](https://linkml.io/ [about-branches]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches [about-issues]: https://docs.github.com/en/issues/tracking-your-work-with-issues/about-issues [about-pulls]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests -[issues]: https://github.com/HendrikBorgelt/CatCore/issues/ -[pulls]: https://github.com/HendrikBorgelt/CatCore/pulls/ +[issues]: https://github.com/nfdi4cat/CoreMeta4Cat/issues/ +[pulls]: https://github.com/nfdi4cat/CoreMeta4Cat/pulls/ We recommend also reading [GitHub Pull Requests: 10 Tips to Know](https://blog.mergify.com/github-pull-requests-10-tips-to-know/) diff --git a/README.md b/README.md index 164517625..152ab13e1 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,34 @@ -Copier Badge -# CatCore +[![Build and test](https://github.com/nfdi4cat/CoreMeta4Cat/actions/workflows/main.yaml/badge.svg)](https://github.com/nfdi4cat/CoreMeta4Cat/actions/workflows/main.yaml) +[![Copier Badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/copier-org/copier/master/img/badge/badge-grayscale-inverted-border-teal.json)](https://github.com/linkml/linkml-project-copier) -A metadata reference collection for catalysis related research + +# CoreMeta4Cat + +CoreMeta4Cat is a community-driven metadata initiative under NFDI4Cat that defines the minimum information required for reporting catalysis research data. Built on the FAIR principles — Findable, Accessible, Interoperable, and Reusable — it provides a shared language for researchers to describe, share, and discover catalysis datasets across institutions and disciplines. + +The model draws its terminology from Voc4Cat, NFDI4Cat's controlled vocabulary for catalysis, ensuring standardized semantic representation. Fields are classified as Mandatory, Recommended, or Optional, helping users meet minimum quality thresholds while leaving room for richer annotation. + +CoreMeta4Cat is a living standard. Community feedback — submitted via the Submit Term Feedback button on the GitHub pages — continuously shapes the addition, revision, and removal of data fields. + +CoreMeta4Cat is currently developed in parallel as an Excel metadata field template as well as a LinkML schema. + +### Excel Template + +The Excel file can be found in [docs/assets](docs/assets/FF_20250627_Overview_metadata.xlsx) + +### LinkML Schema + +The LinkML Schema can be found in [src/catcore/schema/](src/catcore/schema), but we recommend to use the documentation if you are not familiar with reading native LinkML Schema, which can be found on our [GitHub pages](https://nfdi4cat.github.io/CoreMeta4Cat/): + + * [Reaction](https://nfdi4cat.github.io/CoreMeta4Cat/reaction/) + * [Characterization](https://nfdi4cat.github.io/CoreMeta4Cat/characterization/) + * [Synthesis](https://nfdi4cat.github.io/CoreMeta4Cat/synthesis/) + * [Simulation](https://nfdi4cat.github.io/CoreMeta4Cat/simulation/) ## Documentation Website -[https://HendrikBorgelt.github.io/CoreMeta4Cat/](https://HendrikBorgelt.github.io/CoreMeta4Cat/) +[nfdi4cat.github.io/CoreMeta4Cat/](nfdi4cat.github.io/CoreMeta4Cat/) ## Repository Structure diff --git a/catcore_converter(1).py b/catcore_converter(1).py deleted file mode 100644 index 111e294f2..000000000 --- a/catcore_converter(1).py +++ /dev/null @@ -1,388 +0,0 @@ -import yaml -from pathlib import Path -from typing import List, Set, Optional - -# catcore.yaml is loaded FIRST so its generic stubs (range: Plan, range: AgenticEntity) -# are overwritten by the specific ranges in the subprofile modules. -MODULE_FILES = [ - "catcore.yaml", # load first: generic stubs get overwritten by subprofiles - "catcore_common.yaml", - "catcore_synthesis_ap.yaml", - "catcore_characterization_ap.yaml", - "catcore_reaction_ap.yaml", - "catcore_simulation_ap.yaml", -] - - -# ───────────────────────────────────────────────────────────────────────────── -# Schema loading & merging -# ───────────────────────────────────────────────────────────────────────────── - -def load_yaml_file(file_path: str) -> dict: - path = Path(file_path) - if not path.exists(): - print(f" [WARNING] Module not found, skipping: {file_path}") - return {} - with open(path, "r", encoding="utf-8") as f: - return yaml.safe_load(f) or {} - - -def merge_schemas(modules: List[dict]) -> dict: - """ - Merge all module dicts into one flat schema. - Later modules win on key collision, so subprofile modules (loaded last) - correctly override the generic stubs in catcore.yaml (loaded first). - """ - merged: dict = {"prefixes": {}, "classes": {}, "slots": {}, "enums": {}} - - for module in modules: - if not module: - continue - for key in ("id", "name", "title", "description", "license", - "version", "default_prefix", "default_range"): - if key not in merged and key in module: - merged[key] = module[key] - - for section in ("prefixes", "classes", "slots", "enums"): - section_data = module.get(section) or {} - for name, definition in section_data.items(): - if section == "classes" and name in merged["classes"]: - existing = merged["classes"][name] - incoming = definition or {} - # slot_usage: merge entry by entry; incoming wins per key - if "slot_usage" in incoming: - existing.setdefault("slot_usage", {}) - existing["slot_usage"].update(incoming["slot_usage"]) - # slots list: union (incoming appends new names) - if "slots" in incoming: - existing_slots = existing.get("slots", []) - for s in incoming["slots"]: - if s not in existing_slots: - existing_slots.append(s) - existing["slots"] = existing_slots - # all other keys: incoming wins - for k, v in incoming.items(): - if k not in ("slot_usage", "slots"): - existing[k] = v - else: - merged[section][name] = ( - dict(definition) if isinstance(definition, dict) else definition - ) - return merged - - -def load_merged_schema(schema_dir: str) -> dict: - schema_dir_path = Path(schema_dir) - modules = [] - for filename in MODULE_FILES: - full_path = schema_dir_path / filename - print(f" Loading: {full_path}") - modules.append(load_yaml_file(str(full_path))) - merged = merge_schemas(modules) - print(f" Merged schema: {len(merged.get('classes', {}))} classes, " - f"{len(merged.get('slots', {}))} slots\n") - return merged - - -# ───────────────────────────────────────────────────────────────────────────── -# Mixin-aware slot resolution -# ───────────────────────────────────────────────────────────────────────────── - -def get_all_class_slots(schema: dict, class_name: str, - _seen: Optional[Set[str]] = None) -> List[str]: - """Return all slots on a class including those contributed by mixins.""" - if _seen is None: - _seen = set() - if class_name in _seen: - return [] - _seen.add(class_name) - class_def = schema.get("classes", {}).get(class_name, {}) - own_slots = class_def.get("slots", []) or [] - mixin_names = class_def.get("mixins", []) or [] - mixin_slots: List[str] = [] - for mixin_name in mixin_names: - for s in get_all_class_slots(schema, mixin_name, _seen.copy()): - if s not in mixin_slots: - mixin_slots.append(s) - combined = list(own_slots) - for s in mixin_slots: - if s not in combined: - combined.append(s) - return combined - - -def get_class_ranged_slot_usage(schema: dict, class_name: str) -> List[tuple]: - """ - Return (slot_name, synthetic_slot_def) pairs for every slot_usage entry - whose range points to a class defined in the merged schema. - - These are the 'gateway' slots that expand into nested class/subclass docs: - Synthesis → realized_plan:PreparationMethod, had_input_entity:Precursor, had_output_entity:CatalystSample - Characterization → realized_plan:CharacterizationTechnique - Reaction → carried_out_by:ReactorDesignType, product_identification_method:ProductIdentificationMethod - Simulation → realized_plan:SimulationMethod - """ - classes = schema.get("classes", {}) - slots_dict = schema.get("slots", {}) - class_def = classes.get(class_name, {}) - slot_usage = class_def.get("slot_usage", {}) or {} - - result = [] - for su_name, su_def in slot_usage.items(): - if not su_def: - continue - rng = su_def.get("range") - if not rng or rng not in classes: - continue - if classes.get(rng, {}).get("mixin"): - continue - # Build synthetic slot def: base slot (if any) + slot_usage overrides - base = dict(slots_dict.get(su_name, {})) - base.update({k: v for k, v in su_def.items() if v is not None}) - if not base.get("description"): - base["description"] = f"Link to {rng} — see subclasses for details." - base["range"] = rng - result.append((su_name, base)) - return result - - -# ───────────────────────────────────────────────────────────────────────────── -# Standard helpers -# ───────────────────────────────────────────────────────────────────────────── - -def is_mixin(schema: dict, class_name: str) -> bool: - return bool(schema.get("classes", {}).get(class_name, {}).get("mixin", False)) - - -def get_subclasses(schema: dict, parent_class: str) -> List[str]: - """Return all (recursive) non-mixin subclasses of parent_class.""" - subclasses = [] - for class_name, class_def in schema.get("classes", {}).items(): - if class_def.get("is_a") == parent_class and not is_mixin(schema, class_name): - subclasses.append(class_name) - subclasses.extend(get_subclasses(schema, class_name)) - return subclasses - - -def get_slot_details(schema: dict, slot_name: str) -> dict: - return schema.get("slots", {}).get(slot_name, {}) - - -def is_class_in_schema(schema: dict, class_name: str) -> bool: - return class_name in schema.get("classes", {}) - - -def snake_to_readable(text: str) -> str: - return text.replace("_", " ") - - -def expand_curie(schema: dict, value: str) -> str: - if ":" not in value or value.startswith("http"): - return value - prefix, local = value.split(":", 1) - entry = schema.get("prefixes", {}).get(prefix) - if not entry: - return value - if isinstance(entry, str): - base = entry - elif isinstance(entry, dict): - base = entry.get("prefix_reference") or entry.get("uri") or entry.get("prefix") or "" - else: - return value - if not base: - return value - return base + local if base.endswith(("/", "#")) else base + local - - -def get_slot_cardinality(schema: dict, class_name: str, - slot_name: str, slot_details: dict) -> str: - class_def = schema.get("classes", {}).get(class_name, {}) - usage = (class_def.get("slot_usage", {}) or {}).get(slot_name, {}) or {} - required = usage.get("required", slot_details.get("required", False)) - recommended = usage.get("recommended", slot_details.get("recommended", False)) - multivalued = usage.get("multivalued", slot_details.get("multivalued", False)) - parts = ["Required" if required else ("Recommended" if recommended else "Optional")] - if multivalued: - parts.append("Multivalued") - return ", ".join(parts) - - -# ───────────────────────────────────────────────────────────────────────────── -# Markdown formatters -# ───────────────────────────────────────────────────────────────────────────── - -def format_class_markdown(schema: dict, class_name: str, level: int = 3, - processed_classes: Optional[Set[str]] = None, - parent_class: Optional[str] = None) -> str: - if processed_classes is None: - processed_classes = set() - if class_name in processed_classes: - return "" - processed_classes.add(class_name) - - class_def = schema.get("classes", {}).get(class_name, {}) - description = class_def.get("description", "No description available") - class_uri = class_def.get("class_uri", "") - is_abstract = class_def.get("abstract", False) - - md = '
\n' - md += f'{snake_to_readable(class_name)}\n\n' - if is_abstract: - md += "**Abstract Class**\n\n" - md += f"**Description:** {description}\n\n" - if class_uri: - md += f"**CURIE:** [`{class_uri}`]({expand_curie(schema, class_uri)})\n\n" - md += f"**Schema Reference:** [{class_name}](./elements/{class_name}.md)\n\n" - - slots = get_all_class_slots(schema, class_name) - if slots: - md += "**Slots**\n\n" - for slot_name in slots: - slot_details = get_slot_details(schema, slot_name) - md += format_slot_markdown(schema, slot_name, slot_details, level + 2, - processed_classes.copy(), class_name) - - md += (f"

\n \n' - f" 💡 Submit Term Feedback\n \n

") - md += "
\n\n" - return md - - -def format_slot_markdown(schema: dict, slot_name: str, slot_details: dict, - level: int = 3, processed_classes: Optional[Set[str]] = None, - parent_class: Optional[str] = None) -> str: - if processed_classes is None: - processed_classes = set() - - description = slot_details.get("description", "No description available") - range_type = slot_details.get("range", "string") - slot_uri = slot_details.get("slot_uri", "") - unit = slot_details.get("unit", {}) - - cardinality = striped = "" - if parent_class: - cardinality = f" ({get_slot_cardinality(schema, parent_class, slot_name, slot_details)})" - striped = cardinality.replace("(", "").replace(")", "") - - md = '
\n' - md += f"{snake_to_readable(slot_name)}{cardinality}\n\n" - md += f"**Description:** {description}\n\n" - md += f"**Data Type:** {range_type}\n\n" - md += f"**Cardinality:** {striped}\n\n" - if slot_uri: - md += f"**CURIE:** [`{slot_uri}`]({expand_curie(schema, slot_uri)})\n\n" - md += f"**Schema Reference:** [{slot_name}](./elements/{slot_name}.md)\n\n" - if unit and unit.get("ucum_code"): - md += f"**Unit:** {unit['ucum_code']}\n\n" - - # If the range is a known schema class, expand it inline with all subclasses - if is_class_in_schema(schema, range_type) and not is_mixin(schema, range_type): - md += "**Data Type Class Details:**\n\n" - md += format_class_markdown(schema, range_type, level, processed_classes, None) - subclasses = get_subclasses(schema, range_type) - if subclasses: - md += f"**Possible Subclasses / Enumerations of {snake_to_readable(range_type)}:**\n\n" - for subclass in subclasses: - if subclass not in processed_classes: - md += format_class_markdown(schema, subclass, level + 1, - processed_classes, None) - - md += (f"

\n \n' - f" 💡 Submit Term Feedback\n \n

") - md += "
\n\n" - return md - - -LEGEND = """\ -
**Legend** - -- **Description:**A short description for Comprehension purposes - -- **Data Type:** This specifies exactly what kind of information belongs in this field. Most simply, it could be a direct value, such as a number (float) or a piece of text (string). However, the Data Type can also point to another Class in the schema. When this happens, the field is not just a single value; it becomes a structured container. Designating a Class as the Data Type causes the field to contain a complete structured record, defined entirely by its own comprehensive collection of specific fields. Consequently, this allows for the systematic construction of complex data structures via organized, nested information layers within the broader schema architecture. - -- **Cardinality:** This controls how many entries a specific data field must have. It defines if a field is required or optional, and whether it can accept a single value versus a list of multiple values. - -- **CURIE:** A CURIE (Compact URI) is a short, easy-to-read reference that acts as a useful shortcut for a long, complex web address. Instead of seeing a full URL, you will see a two-part reference like gene:symbol, where the parts are separated by a colon. The first part is the prefix (a short code for the source website), and the second is the local identifier for the specific item. This structure is much easier to read and type, making the schema less cluttered and reducing errors. The full web link (URI) for the CURIE is always available if you click the provided link. - -- **Schema Reference:** This link directs you to the complete, technical documentation for this part of the schema. This detailed view is generated automatically by LinkML's documentation tool and provides all underlying rules, data types, and complex relationships for expert users and developers. - -- **Slots:** A Slot represents an individual data field or attribute that belongs to a specific Class (entity type) within the schema. If a Class defines an entity like 'Book', the Slots define the individual pieces of information about that book, such as the 'title', 'author', and 'ISBN'. Essentially, Slots are the essential building blocks that define the characteristics and permissible data for every record in the schema. - -- **Enumerations:** Often called an Enum, Enumerations are a predefined, fixed list of permissible values that a Slot can accept. It is used to strictly limit the available choices for a data field to ensure consistency and prevent errors. For example, a 'Status' field might be restricted to the Enumeration list of only 'Active', 'Inactive', or 'Pending'. Any data entered that is not on this limited list is considered invalid by the schema. - -
""" - - -def generate_markdown_for_main_class(schema: dict, main_class: str, output_file: str): - classes = schema.get("classes", {}) - main_class_def = classes.get(main_class, {}) - class_uri = main_class_def.get("class_uri", "") - is_abstract = main_class_def.get("abstract", False) - - md = f"# {snake_to_readable(main_class)}\n\ntest description\n\n" - if is_abstract: - md += "**Abstract Class**\n\n" - if class_uri: - md += f"**CURIE:** [`{class_uri}`]({class_uri})\n\n" - - # Slots section: direct/mixin slots first, then class-ranged slot_usage entries - direct_slots = get_all_class_slots(schema, main_class) - class_ranged_su = get_class_ranged_slot_usage(schema, main_class) - - if direct_slots or class_ranged_su: - md += LEGEND + "\n## Slots\n\n" - processed: Set[str] = set() - for slot_name in direct_slots: - md += format_slot_markdown(schema, slot_name, - get_slot_details(schema, slot_name), - 3, processed.copy(), main_class) - for slot_name, synthetic in class_ranged_su: - md += format_slot_markdown(schema, slot_name, synthetic, - 3, processed.copy(), main_class) - - md += (f'') - - with open(output_file, "w", encoding="utf-8") as f: - f.write(md) - print(f" ✓ {output_file}") - - -# ───────────────────────────────────────────────────────────────────────────── -# Entry point -# ───────────────────────────────────────────────────────────────────────────── - -def main(schema_dir: str, output_dir: str = "."): - print(f"\nLoading CatCore modules from: {schema_dir}") - schema = load_merged_schema(schema_dir) - - output_path = Path(output_dir) - output_path.mkdir(parents=True, exist_ok=True) - - main_classes = { - "Synthesis": "synthesis.md", - "Characterization": "characterization.md", - "Reaction": "reaction.md", - "Simulation": "simulation.md", - } - - print(f"Generating Markdown docs in: {output_dir}") - for main_class, filename in main_classes.items(): - generate_markdown_for_main_class(schema, main_class, str(output_path / filename)) - - print(f"\n✓ All done — {len(main_classes)} files written to '{output_dir}'.") - - -if __name__ == "__main__": - # ── Edit these two paths to match your local setup ────────────────────── - schema_dir = "./schema" - output_dir = "./docs" - # ──────────────────────────────────────────────────────────────────────── - main(schema_dir, output_dir) - diff --git a/catcore_converter.py b/catcore_converter.py deleted file mode 100644 index 946a9e389..000000000 --- a/catcore_converter.py +++ /dev/null @@ -1,553 +0,0 @@ -import yaml -from pathlib import Path -from typing import Dict, List, Set, Optional - -# ── Module filenames (relative to the schema directory) ──────────────────────── -MODULE_FILES = [ - "catcore_common.yaml", - "catcore_synthesis_ap.yaml", - "catcore_characterization_ap.yaml", - "catcore_reaction_ap.yaml", - "catcore_simulation_ap.yaml", - "catcore.yaml", -] - - -# ───────────────────────────────────────────────────────────────────────────── -# Schema loading & merging -# ───────────────────────────────────────────────────────────────────────────── - -def load_yaml_file(file_path: str) -> dict: - path = Path(file_path) - if not path.exists(): - print(f" [WARNING] Module not found, skipping: {file_path}") - return {} - with open(path, "r", encoding="utf-8") as f: - return yaml.safe_load(f) or {} - - -def merge_schemas(modules: List[dict]) -> dict: - """ - Merge all module dicts into one flat schema. - - Classes that appear in multiple modules (e.g. Synthesis is defined in - catcore_synthesis_ap and stubbed in catcore.yaml) are intelligently merged: - slot_usage and slots lists are unioned; all other keys let the later module win. - """ - merged: dict = {"prefixes": {}, "classes": {}, "slots": {}, "enums": {}} - - for module in modules: - if not module: - continue - - for key in ("id", "name", "title", "description", "license", - "version", "default_prefix", "default_range"): - if key not in merged and key in module: - merged[key] = module[key] - - for section in ("prefixes", "classes", "slots", "enums"): - section_data = module.get(section) or {} - for name, definition in section_data.items(): - if section == "classes" and name in merged["classes"]: - existing = merged["classes"][name] - incoming = definition or {} - if "slot_usage" in incoming: - existing.setdefault("slot_usage", {}) - existing["slot_usage"].update(incoming["slot_usage"]) - if "slots" in incoming: - existing_slots = existing.get("slots", []) - for s in incoming["slots"]: - if s not in existing_slots: - existing_slots.append(s) - existing["slots"] = existing_slots - for k, v in incoming.items(): - if k not in ("slot_usage", "slots"): - existing[k] = v - else: - merged[section][name] = dict(definition) if isinstance(definition, dict) else definition - - return merged - - -def load_merged_schema(schema_dir: str) -> dict: - schema_dir_path = Path(schema_dir) - modules = [] - for filename in MODULE_FILES: - full_path = schema_dir_path / filename - print(f" Loading: {full_path}") - modules.append(load_yaml_file(str(full_path))) - - merged = merge_schemas(modules) - print(f" Merged schema: {len(merged.get('classes', {}))} classes, " - f"{len(merged.get('slots', {}))} slots\n") - return merged - - -# ───────────────────────────────────────────────────────────────────────────── -# BUG FIX 1: Mixin slot resolution -# -# In LinkML, a class can declare `mixins: [MixinA, MixinB]`. The converter's -# original get_class_slots() only looked at `slots`, completely ignoring mixin -# contributions. This means e.g. PowderXRD was missing xray_source/monochromator -# (from XRaySourceMixin), and BandGap was missing 5 slots from two mixins. -# -# get_all_class_slots() walks the full mixin chain and returns the complete -# deduplicated slot list: own slots first, then each mixin's slots in order. -# ───────────────────────────────────────────────────────────────────────────── - -def get_all_class_slots(schema: dict, class_name: str, - _seen: Optional[Set[str]] = None) -> List[str]: - """ - Return ALL slots available on a class, including those contributed by mixins - (resolved recursively so that mixin-of-mixin chains work too). - - Order: own `slots` first, then each mixin's slots in declaration order. - Duplicates are removed (first occurrence wins). - """ - if _seen is None: - _seen = set() - if class_name in _seen: - return [] - _seen.add(class_name) - - classes = schema.get("classes", {}) - class_def = classes.get(class_name, {}) - - own_slots = class_def.get("slots", []) or [] - mixin_names = class_def.get("mixins", []) or [] - - # Gather mixin slots (recursively, in case mixins themselves have mixins) - mixin_slots: List[str] = [] - for mixin_name in mixin_names: - for s in get_all_class_slots(schema, mixin_name, _seen.copy()): - if s not in mixin_slots: - mixin_slots.append(s) - - # Deduplicate: own slots take priority - combined: List[str] = list(own_slots) - for s in mixin_slots: - if s not in combined: - combined.append(s) - - return combined - - -# ───────────────────────────────────────────────────────────────────────────── -# BUG FIX 2: Mixin class filtering in subclass listings -# -# The original get_subclasses() returned mixin classes (e.g. DryingMixin, -# XRaySourceMixin) alongside real output classes because both use `is_a`. -# Mixin classes are purely internal slot-containers and must NOT appear as -# subclasses in the generated docs. -# -# is_mixin() checks the `mixin: true` flag set on each mixin class definition. -# get_subclasses() now skips classes where is_mixin() returns True. -# ───────────────────────────────────────────────────────────────────────────── - -def is_mixin(schema: dict, class_name: str) -> bool: - """Return True if the class is a LinkML mixin (mixin: true).""" - return bool(schema.get("classes", {}).get(class_name, {}).get("mixin", False)) - - -def get_subclasses(schema: dict, parent_class: str) -> List[str]: - """ - Return all (recursive) non-mixin subclasses of parent_class. - Mixin classes are excluded from the result. - """ - subclasses = [] - for class_name, class_def in schema.get("classes", {}).items(): - if class_def.get("is_a") == parent_class and not is_mixin(schema, class_name): - subclasses.append(class_name) - subclasses.extend(get_subclasses(schema, class_name)) - return subclasses - - -# ───────────────────────────────────────────────────────────────────────────── -# Standard helpers -# ───────────────────────────────────────────────────────────────────────────── - -def get_slot_details(schema: dict, slot_name: str) -> dict: - return schema.get("slots", {}).get(slot_name, {}) - - -def is_class_in_schema(schema: dict, class_name: str) -> bool: - return class_name in schema.get("classes", {}) - - -def snake_to_readable(text: str) -> str: - return text.replace("_", " ") - - -def expand_curie(schema: dict, value: str) -> str: - if ":" not in value or value.startswith("http"): - return value - prefix, local = value.split(":", 1) - prefixes = schema.get("prefixes", {}) - if prefix not in prefixes: - return value - entry = prefixes[prefix] - if isinstance(entry, str): - base = entry - elif isinstance(entry, dict): - base = (entry.get("prefix_reference") or entry.get("uri") - or entry.get("prefix") or "") - else: - return value - if not base: - return value - return base + local if base.endswith(("/", "#")) else base + local - - -def get_slot_cardinality(schema: dict, class_name: str, - slot_name: str, slot_details: dict) -> str: - """ - Determine the cardinality label for a slot in the context of a class. - Falls back to slot-level required/recommended flags when no slot_usage - override exists (important for modular files where cardinality is set - directly on the slot definition rather than in slot_usage). - """ - class_def = schema.get("classes", {}).get(class_name, {}) - usage = class_def.get("slot_usage", {}).get(slot_name, {}) - - required = usage.get("required", slot_details.get("required", False)) - recommended = usage.get("recommended", slot_details.get("recommended", False)) - multivalued = usage.get("multivalued", slot_details.get("multivalued", False)) - - parts = [] - if required: - parts.append("Required") - elif recommended: - parts.append("Recommended") - else: - parts.append("Optional") - if multivalued: - parts.append("Multivalued") - return ", ".join(parts) - - -# ───────────────────────────────────────────────────────────────────────────── -# Markdown formatters -# ───────────────────────────────────────────────────────────────────────────── - -def format_class_markdown( - schema: dict, - class_name: str, - level: int = 3, - processed_classes: Optional[Set[str]] = None, - parent_class: Optional[str] = None, -) -> str: - if processed_classes is None: - processed_classes = set() - if class_name in processed_classes: - return "" - processed_classes.add(class_name) - - classes = schema.get("classes", {}) - class_def = classes.get(class_name, {}) - - description = class_def.get("description", "No description available") - class_uri = class_def.get("class_uri", "") - is_abstract = class_def.get("abstract", False) - schema_link = f"./elements/{class_name}.md" - - md = f'
\n' - md += f'{snake_to_readable(class_name)}\n\n' - - if is_abstract: - md += "**Abstract Class**\n\n" - - md += f"**Description:** {description}\n\n" - - if class_uri: - expanded = expand_curie(schema, class_uri) - md += f"**CURIE:** [`{class_uri}`]({expanded})\n\n" - - md += f"**Schema Reference:** [{class_name}]({schema_link})\n\n" - - # BUG FIX 1 applied: use get_all_class_slots instead of class_def.get('slots') - slots = get_all_class_slots(schema, class_name) - if slots: - md += "**Slots**\n\n" - for slot_name in slots: - slot_details = get_slot_details(schema, slot_name) - md += format_slot_markdown( - schema, slot_name, slot_details, level + 2, - processed_classes.copy(), class_name - ) - - md += ( - f"

\n" - f" \n' - f" 💡 Submit Term Feedback\n" - f" \n" - f"

" - ) - md += "
\n\n" - return md - - -def format_slot_markdown( - schema: dict, - slot_name: str, - slot_details: dict, - level: int = 3, - processed_classes: Optional[Set[str]] = None, - parent_class: Optional[str] = None, -) -> str: - if processed_classes is None: - processed_classes = set() - - description = slot_details.get("description", "No description available") - range_type = slot_details.get("range", "string") - slot_uri = slot_details.get("slot_uri", "") - unit = slot_details.get("unit", {}) - schema_link = f"./elements/{slot_name}.md" - - cardinality = "" - striped_cardinality = "" - if parent_class: - cardinality = get_slot_cardinality(schema, parent_class, slot_name, slot_details) - cardinality = f" ({cardinality})" - striped_cardinality = cardinality.replace("(", "").replace(")", "") - - md = f'
\n' - md += f"{snake_to_readable(slot_name)}{cardinality}\n\n" - md += f"**Description:** {description}\n\n" - md += f"**Data Type:** {range_type}\n\n" - md += f"**Cardinality:** {striped_cardinality}\n\n" - - if slot_uri: - expanded = expand_curie(schema, slot_uri) - md += f"**CURIE:** [`{slot_uri}`]({expanded})\n\n" - - md += f"**Schema Reference:** [{slot_name}]({schema_link})\n\n" - - if unit: - ucum_code = unit.get("ucum_code", "") - if ucum_code: - md += f"**Unit:** {ucum_code}\n\n" - - if is_class_in_schema(schema, range_type) and not is_mixin(schema, range_type): - md += "**Data Type Class Details:**\n\n" - md += format_class_markdown(schema, range_type, level, processed_classes, None) - - # BUG FIX 2 applied: get_subclasses already filters out mixins - subclasses = get_subclasses(schema, range_type) - if subclasses: - md += f"**Possible Subclasses / Enumerations of {snake_to_readable(range_type)}:**\n\n" - for subclass in subclasses: - if subclass not in processed_classes: - md += format_class_markdown( - schema, subclass, level + 1, processed_classes, None - ) - - md += ( - f"

\n" - f" \n' - f" 💡 Submit Term Feedback\n" - f" \n" - f"

" - ) - md += "
\n\n" - return md - - -LEGEND = """\ -
**Legend** - -- **Description:**A short description for Comprehension purposes - -- **Data Type:** This specifies exactly what kind of information belongs in this field. Most simply, it could be a direct value, such as a number (float) or a piece of text (string). However, the Data Type can also point to another Class in the schema. When this happens, the field is not just a single value; it becomes a structured container. Designating a Class as the Data Type causes the field to contain a complete structured record, defined entirely by its own comprehensive collection of specific fields. Consequently, this allows for the systematic construction of complex data structures via organized, nested information layers within the broader schema architecture. - -- **Cardinality:** This controls how many entries a specific data field must have. It defines if a field is required or optional, and whether it can accept a single value versus a list of multiple values. - -- **CURIE:** A CURIE (Compact URI) is a short, easy-to-read reference that acts as a useful shortcut for a long, complex web address. Instead of seeing a full URL, you will see a two-part reference like gene:symbol, where the parts are separated by a colon. The first part is the prefix (a short code for the source website), and the second is the local identifier for the specific item. This structure is much easier to read and type, making the schema less cluttered and reducing errors. The full web link (URI) for the CURIE is always available if you click the provided link. - -- **Schema Reference:** This link directs you to the complete, technical documentation for this part of the schema. This detailed view is generated automatically by LinkML's documentation tool and provides all underlying rules, data types, and complex relationships for expert users and developers. - -- **Slots:** A Slot represents an individual data field or attribute that belongs to a specific Class (entity type) within the schema. If a Class defines an entity like 'Book', the Slots define the individual pieces of information about that book, such as the 'title', 'author', and 'ISBN'. Essentially, Slots are the essential building blocks that define the characteristics and permissible data for every record in the schema. - -- **Enumerations:** Often called an Enum, Enumerations are a predefined, fixed list of permissible values that a Slot can accept. It is used to strictly limit the available choices for a data field to ensure consistency and prevent errors. For example, a 'Status' field might be restricted to the Enumeration list of only 'Active', 'Inactive', or 'Pending'. Any data entered that is not on this limited list is considered invalid by the schema. - -
""" - - -def generate_markdown_for_main_class( - schema: dict, main_class: str, output_file: str -): - classes = schema.get("classes", {}) - main_class_def = classes.get(main_class, {}) - class_uri = main_class_def.get("class_uri", "") - is_abstract = main_class_def.get("abstract", False) - - md_content = f"# {snake_to_readable(main_class)}\n\n" - md_content += "test description\n\n" - - if is_abstract: - md_content += "**Abstract Class**\n\n" - - if class_uri: - md_content += f"**CURIE:** [`{class_uri}`]({class_uri})\n\n" - - # BUG FIX 1 applied: use get_all_class_slots for the main class too - slots = get_all_class_slots(schema, main_class) - if slots: - md_content += LEGEND + "\n" - md_content += "## Slots\n\n" - processed_classes: Set[str] = set() - for slot_name in slots: - slot_details = get_slot_details(schema, slot_name) - md_content += format_slot_markdown( - schema, slot_name, slot_details, 3, - processed_classes.copy(), main_class - ) - - processed_classes = {main_class} - # BUG FIX 2 applied: get_subclasses already filters mixin classes - subclasses = get_subclasses(schema, main_class) - - if subclasses: - md_content += "## Subclasses\n\n" - - direct_subclasses = [ - sc for sc in subclasses - if classes.get(sc, {}).get("is_a") == main_class - ] - - for subclass in direct_subclasses: - if subclass not in processed_classes: - md_content += format_class_markdown( - schema, subclass, level=3, - processed_classes=processed_classes - ) - - nested_subclasses = [ - sc for sc in subclasses - if classes.get(sc, {}).get("is_a") == subclass - ] - if nested_subclasses: - md_content += f"**Nested Subclasses of {snake_to_readable(subclass)}:**\n\n" - for nested in nested_subclasses: - if nested not in processed_classes: - md_content += format_class_markdown( - schema, nested, level=4, - processed_classes=processed_classes - ) - - main_class_lower = main_class.lower() - md_content += ( - f'' - ) - - with open(output_file, "w", encoding="utf-8") as f: - f.write(md_content) - - print(f" ✓ {output_file}") - - -# ───────────────────────────────────────────────────────────────────────────── -# Smoke-test: run against the uploaded files and report slot counts -# ───────────────────────────────────────────────────────────────────────────── - -def smoke_test(schema: dict): - """Print expected vs resolved slot counts for key classes.""" - tests = { - # class expected_min_slots reason - "Synthesis": (6, "6 direct slots"), - "Characterization": (5, "5 direct slots"), - "Reaction": (8, "8 direct slots"), - "Simulation": (2, "2 direct slots"), - "WetImpregnation": (1, "inherits from Impregnation via is_a chain → but Impregnation has 3+mixin slots"), - "Impregnation": (9, "3 own + DryingMixin(4) + CalcinationMixin(6)"), - "CoPrecipitation": (14, "PrecipitationMixin(4) + DryingMixin(4) + CalcinationMixin(6)"), - "PowderXRD": (10, "8 own + XRaySourceMixin(2)"), - "BandGap": (12, "7 own + MaterialDescriptorMixin(2) + DFTSettingsMixin(3)"), - "DielectricTensors": (7, "2 own + MaterialDescriptorMixin(2) + DFTSettingsMixin(3)"), - } - print("── Smoke test: resolved slot counts ─────────────────────────────") - all_ok = True - for cls, (expected_min, reason) in tests.items(): - resolved = get_all_class_slots(schema, cls) - ok = len(resolved) >= expected_min - status = "✓" if ok else "✗" - if not ok: - all_ok = False - print(f" {status} {cls}: {len(resolved)} slots (expected ≥{expected_min} — {reason})") - if not ok: - print(f" got: {resolved}") - print() - - print("── Smoke test: mixin filtering ───────────────────────────────────") - sim_subclasses = get_subclasses(schema, "Simulation") - char_subclasses = get_subclasses(schema, "Characterization") - syn_subclasses = get_subclasses(schema, "Synthesis") - - mixin_names = [n for n, d in schema.get("classes", {}).items() if d.get("mixin")] - leaked_sim = [c for c in sim_subclasses if c in mixin_names] - leaked_char = [c for c in char_subclasses if c in mixin_names] - leaked_syn = [c for c in syn_subclasses if c in mixin_names] - - for label, leaked, subclasses in [ - ("Simulation", leaked_sim, sim_subclasses), - ("Characterization", leaked_char, char_subclasses), - ("Synthesis", leaked_syn, syn_subclasses), - ]: - if leaked: - print(f" ✗ {label}: mixin classes leaked into subclasses: {leaked}") - all_ok = False - else: - print(f" ✓ {label}: {len(subclasses)} subclasses, no mixins leaked") - - print() - print("── Overall:", "ALL TESTS PASSED ✓" if all_ok else "SOME TESTS FAILED ✗") - print() - - -# ───────────────────────────────────────────────────────────────────────────── -# Entry point -# ───────────────────────────────────────────────────────────────────────────── - -def main(schema_dir: str, output_dir: str = "."): - """ - Load all CatCore module YAML files from schema_dir, merge them, optionally - run the smoke test, then generate one Markdown doc page per main class. - """ - print(f"\nLoading CatCore modules from: {schema_dir}") - schema = load_merged_schema(schema_dir) - - smoke_test(schema) - - output_path = Path(output_dir) - output_path.mkdir(parents=True, exist_ok=True) - - main_classes = { - "Synthesis": "synthesis.md", - "Characterization": "characterization.md", - "Reaction": "reaction.md", - "Simulation": "simulation.md", - } - - print(f"Generating Markdown docs in: {output_dir}") - for main_class, filename in main_classes.items(): - output_file = output_path / filename - generate_markdown_for_main_class(schema, main_class, str(output_file)) - - print(f"\n✓ All done — {len(main_classes)} files written to '{output_dir}'.") - -if __name__ == "__main__": - # ── Edit these two paths to match your local setup ────────────────────── - schema_dir = "./schema" - output_dir = "./docs" - # ──────────────────────────────────────────────────────────────────────── - main(schema_dir, output_dir) diff --git a/catcore_linkml.xlsx b/catcore_linkml.xlsx deleted file mode 100644 index 3ab26d37b..000000000 Binary files a/catcore_linkml.xlsx and /dev/null differ diff --git a/config.public.mk b/config.public.mk index f4719377a..0edb1a674 100644 --- a/config.public.mk +++ b/config.public.mk @@ -6,10 +6,10 @@ # Note: # - just works fine with quoted variables of dot-env files like this one -LINKML_SCHEMA_NAME="catcore" +LINKML_SCHEMA_NAME="coremeta4cat" LINKML_SCHEMA_AUTHOR="Hendrik Borgelt " -LINKML_SCHEMA_DESCRIPTION="A metadata collection for catalysis related research" -LINKML_SCHEMA_SOURCE_DIR="src/catcore/schema" +LINKML_SCHEMA_DESCRIPTION="CoreMeta4Cat is a community-driven metadata initiative under NFDI4Cat that defines the minimum information required for reporting catalysis research data. Built on the FAIR principles — Findable, Accessible, Interoperable, and Reusable — it provides a shared language for researchers to describe, share, and discover catalysis datasets across institutions and disciplines. By standardizing metadata, CoreMeta4Cat aims to enhance data interoperability, facilitate data sharing, and accelerate scientific discovery in the field of catalysis." +LINKML_SCHEMA_SOURCE_DIR="src/coremeta4cat/schema" ###### linkml generator variables, used by justfile @@ -17,7 +17,7 @@ LINKML_SCHEMA_SOURCE_DIR="src/catcore/schema" LINKML_GENERATORS_CONFIG_YAML=config.yaml ## pass args if gendoc ignores config.yaml (i.e. --no-mergeimports) -LINKML_GENERATORS_DOC_ARGS= +LINKML_GENERATORS_DOC_ARGS="--truncate-descriptions False --hierarchical-class-view --subfolder-type-separation --index-name overview" ## pass args to workaround genowl rdfs config bug (linkml#1453) ## (i.e. --no-type-objects --no-metaclasses --metadata-profile rdfs) diff --git a/docs/about.md b/docs/about.md index b95dbf738..10ec31c36 100644 --- a/docs/about.md +++ b/docs/about.md @@ -1,15 +1,33 @@ # About CoreMeta4Cat -Robust data-sharing guidelines are essential in catalysis research to guarantee high-quality metadata, reproducibility, and the sustained progress of digital catalysis. To establish community-accepted guidelines for reporting metadata in this field, CoreMeta4Cat (an initiative under NFDI4Cat) specifies the minimum information that go beyond the conventional field-independent metadata, and should be reported with the catalysis research data. This guideline should help users to handle and standarise data in this versatile research field based on the FAIR principle (F-indable, A-ccessible, I-nteroperable, R-eusable). Integration of CoreMeta4Cat into data repositories ensures the availability of high-quality metadata and facilitates efficient access to and querying of published datasets. -The terminology employed in CoreMeta4Cat is based on Voc4Cat (developed under NFDI4Cat), which supports standardized semantic representation and advances ontology development efforts. Terms not yet covered by Voc4Cat are provisionally defined within the model and incorporated as the vocabulary is updated. Structurally, the model consists of two parts: “Inner CoreMeta4Cat” and “Expanded CoreMeta4Cat”. Within these layers, data fields are organized hierarchically, following a parent–child relationship. The inner CoreMeta4Cat describes the most fundamental metadata which is mandatory to describe the research on the most general level with the goal of facilitating a categorization of the research data and help researchers to make their data findable. The expanded CoreMeta4Cat contains the data classes 'Synthesis', 'Reaction', 'Characterization' and 'Simulation'. The data fields are classified as “Mandatory,” “Recommended,” and “Optional” to reflect their relative priority. This classification helps users identify the minimum required metadata necessary to ensure data quality, while also allowing the inclusion of additional information that, although not mandatory, further enhances the value and usability of the data. Moreover, this prioritization facilitates the efficient handling and management of the large volumes of metadata generated by experimental devices and computation. -The CoreMeta4Cat model is a “living organism” that evolves through user feedback on the addition, removal, and modification of data fields, for which provisions are provided on this webpage through the “Submit Term Feedback” button. All feedback and suggestions are reviewed by the CoreMeta4Cat development team and incorporated as appropriate based on their relevance and impact. +Robust data-sharing guidelines are essential in catalysis research to ensure high-quality metadata, reproducibility, and the sustained progress of digital catalysis. CoreMeta4Cat — an initiative under [NFDI4Cat](https://nfdi4cat.org) — specifies the minimum information that must be reported alongside catalysis research data, going beyond conventional field-independent metadata. The guideline helps researchers handle and standardise data across this versatile research field in accordance with the [FAIR principles](https://www.go-fair.org/fair-principles/) (Findable, Accessible, Interoperable, Reusable). Integration of CoreMeta4Cat into data repositories ensures the availability of high-quality metadata and facilitates efficient access to and querying of published datasets. +## Terminology and Vocabulary -image +The terminology employed in CoreMeta4Cat is based on [Voc4Cat](https://nfdi4cat.github.io/voc4cat/), a controlled vocabulary developed under NFDI4Cat that supports standardised semantic representation and advances ontology development in catalysis. Terms not yet covered by Voc4Cat are provisionally defined within the model and incorporated as the vocabulary is updated. CoreMeta4Cat is built on top of [DCAT-AP+](https://nfdi-de.github.io/dcat-ap-plus/) and its chemistry extension [ChemDCAT-AP](https://nfdi-de.github.io/chem-dcat-ap/), enabling interoperability with broader research data infrastructures. -Inner CoreMeta4Cat: The inner CoreMeta4Cat defines the most fundamental metadata, which are mandatory for describing research at a general level. Its goal is to facilitate consistent categorization of research data and assist researchers in making their datasets more easily findable. The data classes in the inner CoreMeta4Cat consists of Catalysis Research Field (Mandatory), Reaction type (Mandatory), Active Site (Recommended) and Identifier (Recommended). -Catalysis Research Field: This section describes the different types of catalysis, including homogeneous, heterogeneous, electrocatalysis, and hybrid catalysis. It also provides provisions for specifying other types of catalysis that do not fall within these categories. -Reaction type: The catalytic reaction under investigation (examples: hydrogenation, oxidation, hydroformylation, etc.) -Active Site: It is recommended to specify the primary species in the catalyst responsible for catalytic activity. The expected value for this field is a text entry identifying a molecule, element, or other relevant species, with the option to provide multiple entries if applicable. -Identifier: It is the identification of the catalyst through user defined labels. +## Citation + +If you use CoreMeta4Cat in your research, please cite: + +> *CoreMeta4Cat: Minimum Information Guidelines for Catalysis Research Data.* NFDI4Cat. [https://nfdi4cat.github.io/CoreMeta4Cat/](https://nfdi4cat.github.io/CoreMeta4Cat/) + +A journal publication is still pending. + +## Acknowledgements + +CoreMeta4Cat builds on the provenance and metadata infrastructure established by [DCAT-AP+](https://nfdi-de.github.io/dcat-ap-plus/) and [ChemDCAT-AP](https://nfdi-de.github.io/chem-dcat-ap/). These schemas provide the foundational data model — including the activity, entity, and attribute patterns — on which the CatCore application profile is defined. We gratefully acknowledge the work of the DCAT-AP+ and ChemDCAT-AP development teams. + +## Funding + +CoreMeta4Cat is funded by the German Research Foundation (DFG) and the German Federal Ministry of Education and Research (BMBF) as part of the National Research Data Infrastructure (NFDI): + +| Project | Funder | Grant | Link | +|---|---|---|---| +| **NFDI4Cat** — NFDI for Catalysis-Related Sciences | DFG | [441926934](https://gepris.dfg.de/gepris/projekt/441926934) | [nfdi4cat.org](https://nfdi4cat.org/) | +| **CarboDiol** — Carbohydrates to α-ω-Diols 2.0| BMBF | [03XP0612B](https://materialneutral.info/project/carbo-diol2-0/) | — | + +## Contact and Contributions + +CoreMeta4Cat is developed openly on [GitHub](https://github.com/nfdi4cat/CoreMeta4Cat). Contributions, issue reports, and suggestions are welcome via the repository's issue tracker. diff --git a/docs/characterization.md b/docs/characterization.md index 107077acd..39a352ed0 100644 --- a/docs/characterization.md +++ b/docs/characterization.md @@ -41,12 +41,12 @@ The class follows a hierarchical structure in which selection of a characterizat **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:sample_state`](https://w3id.org/nfdi4cat/catcore/sample_state) +**CURIE:** [`coremeta4cat:sample_state`](https://w3id.org/nfdi4cat/coremeta4cat/sample_state) -**Schema Reference:** [sample_state](./elements/sample_state.md) +**Schema Reference:** [sample_state](./elements/slots/sample_state.md)

- + 💡 Submit Term Feedback

@@ -60,12 +60,12 @@ The class follows a hierarchical structure in which selection of a characterizat **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:sample_description`](https://w3id.org/nfdi4cat/catcore/sample_description) +**CURIE:** [`coremeta4cat:sample_description`](https://w3id.org/nfdi4cat/coremeta4cat/sample_description) -**Schema Reference:** [sample_description](./elements/sample_description.md) +**Schema Reference:** [sample_description](./elements/slots/sample_description.md)

- + 💡 Submit Term Feedback

@@ -81,10 +81,10 @@ The class follows a hierarchical structure in which selection of a characterizat **CURIE:** [`AFP:0001159`](http://purl.allotrope.org/ontologies/process#AFP_0001159) -**Schema Reference:** [sample_preparation](./elements/sample_preparation.md) +**Schema Reference:** [sample_preparation](./elements/slots/sample_preparation.md)

- + 💡 Submit Term Feedback

@@ -98,12 +98,12 @@ The class follows a hierarchical structure in which selection of a characterizat **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000122`](https://w3id.org/nfdi4cat/voc4cat_0000122) +**CURIE:** [`VOC4CAT:0000122`](https://w3id.org/nfdi4cat/voc4cat_0000122) -**Schema Reference:** [sample_pretreatment](./elements/sample_pretreatment.md) +**Schema Reference:** [sample_pretreatment](./elements/slots/sample_pretreatment.md)

- + 💡 Submit Term Feedback

@@ -119,24 +119,24 @@ The class follows a hierarchical structure in which selection of a characterizat **CURIE:** [`AFR:0000317`](http://purl.allotrope.org/ontologies/result#AFR_0000317) -**Schema Reference:** [detector_type](./elements/detector_type.md) +**Schema Reference:** [detector_type](./elements/slots/detector_type.md)

- + 💡 Submit Term Feedback

-realized plan (Required) +realized plan (Mandatory) **Description:** The CharacterizationTechnique (protocol) realized in this Characterization. **Data Type:** CharacterizationTechnique -**Cardinality:** Required +**Cardinality:** Mandatory -**Schema Reference:** [realized_plan](./elements/realized_plan.md) +**Schema Reference:** [realized_plan](./elements/slots/realized_plan.md) **Data Type Class Details:** @@ -151,10 +151,10 @@ Linked from Characterization via realized_plan. **CURIE:** [`OBI:0000272`](http://purl.obolibrary.org/obo/OBI_0000272) -**Schema Reference:** [CharacterizationTechnique](./elements/CharacterizationTechnique.md) +**Schema Reference:** [CharacterizationTechnique](./elements/classes/CharacterizationTechnique.md)

- + 💡 Submit Term Feedback

@@ -168,27 +168,27 @@ Linked from Characterization via realized_plan. **CURIE:** [`CHMO:0000158`](http://purl.obolibrary.org/obo/CHMO_0000158) -**Schema Reference:** [PowderXRD](./elements/PowderXRD.md) +**Schema Reference:** [PowderXRD](./elements/classes/PowderXRD.md) **Slots**
minimum 2theta (Optional, Multivalued) -**Description:** Minimum 2θ angle in the diffraction scan. +**Description:** Minimum 2theta angle in the diffraction scan. **Data Type:** float **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:minimum_2theta`](https://w3id.org/nfdi4cat/catcore/minimum_2theta) +**CURIE:** [`coremeta4cat:minimum_2theta`](https://w3id.org/nfdi4cat/coremeta4cat/minimum_2theta) -**Schema Reference:** [minimum_2theta](./elements/minimum_2theta.md) +**Schema Reference:** [minimum_2theta](./elements/slots/minimum_2theta.md) **Unit:** deg

- + 💡 Submit Term Feedback

@@ -196,20 +196,20 @@ Linked from Characterization via realized_plan.
maximum 2theta (Optional, Multivalued) -**Description:** Maximum 2θ angle in the diffraction scan. +**Description:** Maximum 2theta angle in the diffraction scan. **Data Type:** float **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:maximum_2theta`](https://w3id.org/nfdi4cat/catcore/maximum_2theta) +**CURIE:** [`coremeta4cat:maximum_2theta`](https://w3id.org/nfdi4cat/coremeta4cat/maximum_2theta) -**Schema Reference:** [maximum_2theta](./elements/maximum_2theta.md) +**Schema Reference:** [maximum_2theta](./elements/slots/maximum_2theta.md) **Unit:** deg

- + 💡 Submit Term Feedback

@@ -225,10 +225,10 @@ Linked from Characterization via realized_plan. **CURIE:** [`AFR:0000950`](http://purl.allotrope.org/ontologies/result#AFR_0000950) -**Schema Reference:** [step_size](./elements/step_size.md) +**Schema Reference:** [step_size](./elements/slots/step_size.md)

- + 💡 Submit Term Feedback

@@ -242,12 +242,12 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000108`](https://w3id.org/nfdi4cat/voc4cat_0000108) +**CURIE:** [`VOC4CAT:0000108`](https://w3id.org/nfdi4cat/voc4cat_0000108) -**Schema Reference:** [operation_mode](./elements/operation_mode.md) +**Schema Reference:** [operation_mode](./elements/slots/operation_mode.md)

- + 💡 Submit Term Feedback

@@ -261,12 +261,12 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:atmosphere`](https://w3id.org/nfdi4cat/catcore/atmosphere) +**CURIE:** [`coremeta4cat:atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/atmosphere) -**Schema Reference:** [atmosphere](./elements/atmosphere.md) +**Schema Reference:** [atmosphere](./elements/slots/atmosphere.md)

- + 💡 Submit Term Feedback

@@ -282,12 +282,12 @@ Linked from Characterization via realized_plan. **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -301,14 +301,14 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:sample_spinning_speed`](https://w3id.org/nfdi4cat/catcore/sample_spinning_speed) +**CURIE:** [`coremeta4cat:sample_spinning_speed`](https://w3id.org/nfdi4cat/coremeta4cat/sample_spinning_speed) -**Schema Reference:** [sample_spinning_speed](./elements/sample_spinning_speed.md) +**Schema Reference:** [sample_spinning_speed](./elements/slots/sample_spinning_speed.md) **Unit:** rpm

- + 💡 Submit Term Feedback

@@ -324,12 +324,12 @@ Linked from Characterization via realized_plan. **CURIE:** [`AFR:0002455`](http://purl.allotrope.org/ontologies/result#AFR_0002455) -**Schema Reference:** [experiment_duration](./elements/experiment_duration.md) +**Schema Reference:** [experiment_duration](./elements/slots/experiment_duration.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -337,7 +337,7 @@ Linked from Characterization via realized_plan.
xray source (Optional, Multivalued) -**Description:** X-ray source used (e.g. Cu Kα, Mo Kα, synchrotron). +**Description:** X-ray source used (e.g. Cu K-alpha, Mo K-alpha, synchrotron). **Data Type:** string @@ -345,10 +345,10 @@ Linked from Characterization via realized_plan. **CURIE:** [`OBI:0001138`](http://purl.obolibrary.org/obo/OBI_0001138) -**Schema Reference:** [xray_source](./elements/xray_source.md) +**Schema Reference:** [xray_source](./elements/slots/xray_source.md)

- + 💡 Submit Term Feedback

@@ -364,16 +364,16 @@ Linked from Characterization via realized_plan. **CURIE:** [`CHMO:0002120`](http://purl.obolibrary.org/obo/CHMO_0002120) -**Schema Reference:** [monochromator](./elements/monochromator.md) +**Schema Reference:** [monochromator](./elements/slots/monochromator.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -385,7 +385,7 @@ Linked from Characterization via realized_plan. **CURIE:** [`CHMO:0000852`](http://purl.obolibrary.org/obo/CHMO_0000852) -**Schema Reference:** [SingleCrystalXRD](./elements/SingleCrystalXRD.md) +**Schema Reference:** [SingleCrystalXRD](./elements/classes/SingleCrystalXRD.md) **Slots** @@ -400,12 +400,12 @@ Linked from Characterization via realized_plan. **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -413,7 +413,7 @@ Linked from Characterization via realized_plan.
xray source (Optional, Multivalued) -**Description:** X-ray source used (e.g. Cu Kα, Mo Kα, synchrotron). +**Description:** X-ray source used (e.g. Cu K-alpha, Mo K-alpha, synchrotron). **Data Type:** string @@ -421,10 +421,10 @@ Linked from Characterization via realized_plan. **CURIE:** [`OBI:0001138`](http://purl.obolibrary.org/obo/OBI_0001138) -**Schema Reference:** [xray_source](./elements/xray_source.md) +**Schema Reference:** [xray_source](./elements/slots/xray_source.md)

- + 💡 Submit Term Feedback

@@ -440,16 +440,16 @@ Linked from Characterization via realized_plan. **CURIE:** [`CHMO:0002120`](http://purl.obolibrary.org/obo/CHMO_0002120) -**Schema Reference:** [monochromator](./elements/monochromator.md) +**Schema Reference:** [monochromator](./elements/slots/monochromator.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -459,9 +459,9 @@ Linked from Characterization via realized_plan. **Description:** X-ray absorption spectroscopy (XAS/XANES/EXAFS) for electronic and local structure analysis. -**CURIE:** [`voc4cat:0000286`](https://w3id.org/nfdi4cat/voc4cat_0000286) +**CURIE:** [`VOC4CAT:0000286`](https://w3id.org/nfdi4cat/voc4cat_0000286) -**Schema Reference:** [XRayAbsorptionSpectroscopy](./elements/XRayAbsorptionSpectroscopy.md) +**Schema Reference:** [XRayAbsorptionSpectroscopy](./elements/classes/XRayAbsorptionSpectroscopy.md) **Slots** @@ -474,12 +474,12 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000108`](https://w3id.org/nfdi4cat/voc4cat_0000108) +**CURIE:** [`VOC4CAT:0000108`](https://w3id.org/nfdi4cat/voc4cat_0000108) -**Schema Reference:** [operation_mode](./elements/operation_mode.md) +**Schema Reference:** [operation_mode](./elements/slots/operation_mode.md)

- + 💡 Submit Term Feedback

@@ -493,12 +493,12 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:element_analyzed`](https://w3id.org/nfdi4cat/catcore/element_analyzed) +**CURIE:** [`coremeta4cat:element_analyzed`](https://w3id.org/nfdi4cat/coremeta4cat/element_analyzed) -**Schema Reference:** [element_analyzed](./elements/element_analyzed.md) +**Schema Reference:** [element_analyzed](./elements/slots/element_analyzed.md)

- + 💡 Submit Term Feedback

@@ -512,12 +512,12 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:absorption_edge`](https://w3id.org/nfdi4cat/catcore/absorption_edge) +**CURIE:** [`coremeta4cat:absorption_edge`](https://w3id.org/nfdi4cat/coremeta4cat/absorption_edge) -**Schema Reference:** [absorption_edge](./elements/absorption_edge.md) +**Schema Reference:** [absorption_edge](./elements/slots/absorption_edge.md)

- + 💡 Submit Term Feedback

@@ -533,12 +533,12 @@ Linked from Characterization via realized_plan. **CURIE:** [`AFR:0000950`](http://purl.allotrope.org/ontologies/result#AFR_0000950) -**Schema Reference:** [energy_resolution](./elements/energy_resolution.md) +**Schema Reference:** [energy_resolution](./elements/slots/energy_resolution.md) **Unit:** eV

- + 💡 Submit Term Feedback

@@ -554,12 +554,12 @@ Linked from Characterization via realized_plan. **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -573,12 +573,12 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:beamline_source`](https://w3id.org/nfdi4cat/catcore/beamline_source) +**CURIE:** [`coremeta4cat:beamline_source`](https://w3id.org/nfdi4cat/coremeta4cat/beamline_source) -**Schema Reference:** [beamline_source](./elements/beamline_source.md) +**Schema Reference:** [beamline_source](./elements/slots/beamline_source.md)

- + 💡 Submit Term Feedback

@@ -592,12 +592,12 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:noise_of_measurement`](https://w3id.org/nfdi4cat/catcore/noise_of_measurement) +**CURIE:** [`coremeta4cat:noise_of_measurement`](https://w3id.org/nfdi4cat/coremeta4cat/noise_of_measurement) -**Schema Reference:** [noise_of_measurement](./elements/noise_of_measurement.md) +**Schema Reference:** [noise_of_measurement](./elements/slots/noise_of_measurement.md)

- + 💡 Submit Term Feedback

@@ -611,12 +611,12 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:number_of_cycles`](https://w3id.org/nfdi4cat/catcore/number_of_cycles) +**CURIE:** [`coremeta4cat:number_of_cycles`](https://w3id.org/nfdi4cat/coremeta4cat/number_of_cycles) -**Schema Reference:** [number_of_cycles](./elements/number_of_cycles.md) +**Schema Reference:** [number_of_cycles](./elements/slots/number_of_cycles.md)

- + 💡 Submit Term Feedback

@@ -624,7 +624,7 @@ Linked from Characterization via realized_plan.
xray source (Optional, Multivalued) -**Description:** X-ray source used (e.g. Cu Kα, Mo Kα, synchrotron). +**Description:** X-ray source used (e.g. Cu K-alpha, Mo K-alpha, synchrotron). **Data Type:** string @@ -632,10 +632,10 @@ Linked from Characterization via realized_plan. **CURIE:** [`OBI:0001138`](http://purl.obolibrary.org/obo/OBI_0001138) -**Schema Reference:** [xray_source](./elements/xray_source.md) +**Schema Reference:** [xray_source](./elements/slots/xray_source.md)

- + 💡 Submit Term Feedback

@@ -651,10 +651,10 @@ Linked from Characterization via realized_plan. **CURIE:** [`CHMO:0002120`](http://purl.obolibrary.org/obo/CHMO_0002120) -**Schema Reference:** [monochromator](./elements/monochromator.md) +**Schema Reference:** [monochromator](./elements/slots/monochromator.md)

- + 💡 Submit Term Feedback

@@ -668,14 +668,14 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:minimum_energy`](https://w3id.org/nfdi4cat/catcore/minimum_energy) +**CURIE:** [`coremeta4cat:minimum_energy`](https://w3id.org/nfdi4cat/coremeta4cat/minimum_energy) -**Schema Reference:** [minimum_energy](./elements/minimum_energy.md) +**Schema Reference:** [minimum_energy](./elements/slots/minimum_energy.md) **Unit:** eV

- + 💡 Submit Term Feedback

@@ -689,20 +689,20 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:maximum_energy`](https://w3id.org/nfdi4cat/catcore/maximum_energy) +**CURIE:** [`coremeta4cat:maximum_energy`](https://w3id.org/nfdi4cat/coremeta4cat/maximum_energy) -**Schema Reference:** [maximum_energy](./elements/maximum_energy.md) +**Schema Reference:** [maximum_energy](./elements/slots/maximum_energy.md) **Unit:** eV

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -714,7 +714,7 @@ Linked from Characterization via realized_plan. **CURIE:** [`CHMO:0000404`](http://purl.obolibrary.org/obo/CHMO_0000404) -**Schema Reference:** [XPS](./elements/XPS.md) +**Schema Reference:** [XPS](./elements/classes/XPS.md) **Slots** @@ -727,14 +727,14 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:total_acquisition_time`](https://w3id.org/nfdi4cat/catcore/total_acquisition_time) +**CURIE:** [`coremeta4cat:total_acquisition_time`](https://w3id.org/nfdi4cat/coremeta4cat/total_acquisition_time) -**Schema Reference:** [total_acquisition_time](./elements/total_acquisition_time.md) +**Schema Reference:** [total_acquisition_time](./elements/slots/total_acquisition_time.md) **Unit:** s

- + 💡 Submit Term Feedback

@@ -748,12 +748,12 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:number_of_scans`](https://w3id.org/nfdi4cat/catcore/number_of_scans) +**CURIE:** [`coremeta4cat:number_of_scans`](https://w3id.org/nfdi4cat/coremeta4cat/number_of_scans) -**Schema Reference:** [number_of_scans](./elements/number_of_scans.md) +**Schema Reference:** [number_of_scans](./elements/slots/number_of_scans.md)

- + 💡 Submit Term Feedback

@@ -769,10 +769,10 @@ Linked from Characterization via realized_plan. **CURIE:** [`AFR:0000950`](http://purl.allotrope.org/ontologies/result#AFR_0000950) -**Schema Reference:** [step_size](./elements/step_size.md) +**Schema Reference:** [step_size](./elements/slots/step_size.md)

- + 💡 Submit Term Feedback

@@ -786,14 +786,14 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:pass_energy`](https://w3id.org/nfdi4cat/catcore/pass_energy) +**CURIE:** [`coremeta4cat:pass_energy`](https://w3id.org/nfdi4cat/coremeta4cat/pass_energy) -**Schema Reference:** [pass_energy](./elements/pass_energy.md) +**Schema Reference:** [pass_energy](./elements/slots/pass_energy.md) **Unit:** eV

- + 💡 Submit Term Feedback

@@ -807,14 +807,14 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:spot_size`](https://w3id.org/nfdi4cat/catcore/spot_size) +**CURIE:** [`coremeta4cat:spot_size`](https://w3id.org/nfdi4cat/coremeta4cat/spot_size) -**Schema Reference:** [spot_size](./elements/spot_size.md) +**Schema Reference:** [spot_size](./elements/slots/spot_size.md) **Unit:** mm

- + 💡 Submit Term Feedback

@@ -828,12 +828,12 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000108`](https://w3id.org/nfdi4cat/voc4cat_0000108) +**CURIE:** [`VOC4CAT:0000108`](https://w3id.org/nfdi4cat/voc4cat_0000108) -**Schema Reference:** [lense_mode](./elements/lense_mode.md) +**Schema Reference:** [lense_mode](./elements/slots/lense_mode.md)

- + 💡 Submit Term Feedback

@@ -847,12 +847,12 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:charge_compensation`](https://w3id.org/nfdi4cat/catcore/charge_compensation) +**CURIE:** [`coremeta4cat:charge_compensation`](https://w3id.org/nfdi4cat/coremeta4cat/charge_compensation) -**Schema Reference:** [charge_compensation](./elements/charge_compensation.md) +**Schema Reference:** [charge_compensation](./elements/slots/charge_compensation.md)

- + 💡 Submit Term Feedback

@@ -866,12 +866,12 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:atmosphere`](https://w3id.org/nfdi4cat/catcore/atmosphere) +**CURIE:** [`coremeta4cat:atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/atmosphere) -**Schema Reference:** [atmosphere](./elements/atmosphere.md) +**Schema Reference:** [atmosphere](./elements/slots/atmosphere.md)

- + 💡 Submit Term Feedback

@@ -879,7 +879,7 @@ Linked from Characterization via realized_plan.
xray source (Optional, Multivalued) -**Description:** X-ray source used (e.g. Cu Kα, Mo Kα, synchrotron). +**Description:** X-ray source used (e.g. Cu K-alpha, Mo K-alpha, synchrotron). **Data Type:** string @@ -887,10 +887,10 @@ Linked from Characterization via realized_plan. **CURIE:** [`OBI:0001138`](http://purl.obolibrary.org/obo/OBI_0001138) -**Schema Reference:** [xray_source](./elements/xray_source.md) +**Schema Reference:** [xray_source](./elements/slots/xray_source.md)

- + 💡 Submit Term Feedback

@@ -906,10 +906,10 @@ Linked from Characterization via realized_plan. **CURIE:** [`CHMO:0002120`](http://purl.obolibrary.org/obo/CHMO_0002120) -**Schema Reference:** [monochromator](./elements/monochromator.md) +**Schema Reference:** [monochromator](./elements/slots/monochromator.md)

- + 💡 Submit Term Feedback

@@ -923,14 +923,14 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:minimum_energy`](https://w3id.org/nfdi4cat/catcore/minimum_energy) +**CURIE:** [`coremeta4cat:minimum_energy`](https://w3id.org/nfdi4cat/coremeta4cat/minimum_energy) -**Schema Reference:** [minimum_energy](./elements/minimum_energy.md) +**Schema Reference:** [minimum_energy](./elements/slots/minimum_energy.md) **Unit:** eV

- + 💡 Submit Term Feedback

@@ -944,20 +944,20 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:maximum_energy`](https://w3id.org/nfdi4cat/catcore/maximum_energy) +**CURIE:** [`coremeta4cat:maximum_energy`](https://w3id.org/nfdi4cat/coremeta4cat/maximum_energy) -**Schema Reference:** [maximum_energy](./elements/maximum_energy.md) +**Schema Reference:** [maximum_energy](./elements/slots/maximum_energy.md) **Unit:** eV

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -969,7 +969,7 @@ Linked from Characterization via realized_plan. **CURIE:** [`CHMO:0000309`](http://purl.obolibrary.org/obo/CHMO_0000309) -**Schema Reference:** [EDX](./elements/EDX.md) +**Schema Reference:** [EDX](./elements/classes/EDX.md) **Slots** @@ -982,14 +982,14 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:primary_energy`](https://w3id.org/nfdi4cat/catcore/primary_energy) +**CURIE:** [`coremeta4cat:primary_energy`](https://w3id.org/nfdi4cat/coremeta4cat/primary_energy) -**Schema Reference:** [primary_energy](./elements/primary_energy.md) +**Schema Reference:** [primary_energy](./elements/slots/primary_energy.md) **Unit:** keV

- + 💡 Submit Term Feedback

@@ -1003,14 +1003,14 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:counting_time`](https://w3id.org/nfdi4cat/catcore/counting_time) +**CURIE:** [`coremeta4cat:counting_time`](https://w3id.org/nfdi4cat/coremeta4cat/counting_time) -**Schema Reference:** [counting_time](./elements/counting_time.md) +**Schema Reference:** [counting_time](./elements/slots/counting_time.md) **Unit:** s

- + 💡 Submit Term Feedback

@@ -1024,12 +1024,12 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:resolution`](https://w3id.org/nfdi4cat/catcore/resolution) +**CURIE:** [`coremeta4cat:resolution`](https://w3id.org/nfdi4cat/coremeta4cat/resolution) -**Schema Reference:** [resolution](./elements/resolution.md) +**Schema Reference:** [resolution](./elements/slots/resolution.md)

- + 💡 Submit Term Feedback

@@ -1043,18 +1043,18 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:calibration_method`](https://w3id.org/nfdi4cat/catcore/calibration_method) +**CURIE:** [`coremeta4cat:calibration_method`](https://w3id.org/nfdi4cat/coremeta4cat/calibration_method) -**Schema Reference:** [calibration_method](./elements/calibration_method.md) +**Schema Reference:** [calibration_method](./elements/slots/calibration_method.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -1064,9 +1064,9 @@ Linked from Characterization via realized_plan. **Description:** Infrared spectroscopy (FTIR/ATR) for functional group and surface species identification. -**CURIE:** [`catcore:InfraredSpectroscopy`](https://w3id.org/nfdi4cat/catcore/InfraredSpectroscopy) +**CURIE:** [`coremeta4cat:InfraredSpectroscopy`](https://w3id.org/nfdi4cat/coremeta4cat/InfraredSpectroscopy) -**Schema Reference:** [InfraredSpectroscopy](./elements/InfraredSpectroscopy.md) +**Schema Reference:** [InfraredSpectroscopy](./elements/classes/InfraredSpectroscopy.md) **Slots** @@ -1079,12 +1079,12 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000108`](https://w3id.org/nfdi4cat/voc4cat_0000108) +**CURIE:** [`VOC4CAT:0000108`](https://w3id.org/nfdi4cat/voc4cat_0000108) -**Schema Reference:** [operation_mode](./elements/operation_mode.md) +**Schema Reference:** [operation_mode](./elements/slots/operation_mode.md)

- + 💡 Submit Term Feedback

@@ -1098,14 +1098,14 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:minimum_wavenumber`](https://w3id.org/nfdi4cat/catcore/minimum_wavenumber) +**CURIE:** [`coremeta4cat:minimum_wavenumber`](https://w3id.org/nfdi4cat/coremeta4cat/minimum_wavenumber) -**Schema Reference:** [minimum_wavenumber](./elements/minimum_wavenumber.md) +**Schema Reference:** [minimum_wavenumber](./elements/slots/minimum_wavenumber.md) **Unit:** cm-1

- + 💡 Submit Term Feedback

@@ -1119,14 +1119,14 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:maximum_wavenumber`](https://w3id.org/nfdi4cat/catcore/maximum_wavenumber) +**CURIE:** [`coremeta4cat:maximum_wavenumber`](https://w3id.org/nfdi4cat/coremeta4cat/maximum_wavenumber) -**Schema Reference:** [maximum_wavenumber](./elements/maximum_wavenumber.md) +**Schema Reference:** [maximum_wavenumber](./elements/slots/maximum_wavenumber.md) **Unit:** cm-1

- + 💡 Submit Term Feedback

@@ -1142,10 +1142,10 @@ Linked from Characterization via realized_plan. **CURIE:** [`AFR:0000950`](http://purl.allotrope.org/ontologies/result#AFR_0000950) -**Schema Reference:** [step_size](./elements/step_size.md) +**Schema Reference:** [step_size](./elements/slots/step_size.md)

- + 💡 Submit Term Feedback

@@ -1161,12 +1161,12 @@ Linked from Characterization via realized_plan. **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -1182,10 +1182,10 @@ Linked from Characterization via realized_plan. **CURIE:** [`AFP:0003721`](http://purl.allotrope.org/ontologies/process#AFP_0003721) -**Schema Reference:** [background_correction](./elements/background_correction.md) +**Schema Reference:** [background_correction](./elements/slots/background_correction.md)

- + 💡 Submit Term Feedback

@@ -1199,12 +1199,12 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:number_of_scans`](https://w3id.org/nfdi4cat/catcore/number_of_scans) +**CURIE:** [`coremeta4cat:number_of_scans`](https://w3id.org/nfdi4cat/coremeta4cat/number_of_scans) -**Schema Reference:** [number_of_scans](./elements/number_of_scans.md) +**Schema Reference:** [number_of_scans](./elements/slots/number_of_scans.md)

- + 💡 Submit Term Feedback

@@ -1218,18 +1218,18 @@ Linked from Characterization via realized_plan. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:atmosphere`](https://w3id.org/nfdi4cat/catcore/atmosphere) +**CURIE:** [`coremeta4cat:atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/atmosphere) -**Schema Reference:** [atmosphere](./elements/atmosphere.md) +**Schema Reference:** [atmosphere](./elements/slots/atmosphere.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -1242,7 +1242,7 @@ surface species identification under reactive gas conditions. **CURIE:** [`CHMO:0000645`](http://purl.obolibrary.org/obo/CHMO_0000645) -**Schema Reference:** [DRIFTS](./elements/DRIFTS.md) +**Schema Reference:** [DRIFTS](./elements/classes/DRIFTS.md) **Slots** @@ -1255,12 +1255,12 @@ surface species identification under reactive gas conditions. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:adsorption_gas`](https://w3id.org/nfdi4cat/catcore/adsorption_gas) +**CURIE:** [`coremeta4cat:adsorption_gas`](https://w3id.org/nfdi4cat/coremeta4cat/adsorption_gas) -**Schema Reference:** [adsorption_gas](./elements/adsorption_gas.md) +**Schema Reference:** [adsorption_gas](./elements/slots/adsorption_gas.md)

- + 💡 Submit Term Feedback

@@ -1274,12 +1274,12 @@ surface species identification under reactive gas conditions. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:atmosphere`](https://w3id.org/nfdi4cat/catcore/atmosphere) +**CURIE:** [`coremeta4cat:atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/atmosphere) -**Schema Reference:** [atmosphere](./elements/atmosphere.md) +**Schema Reference:** [atmosphere](./elements/slots/atmosphere.md)

- + 💡 Submit Term Feedback

@@ -1293,14 +1293,14 @@ surface species identification under reactive gas conditions. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:flow_rate`](https://w3id.org/nfdi4cat/catcore/flow_rate) +**CURIE:** [`coremeta4cat:flow_rate`](https://w3id.org/nfdi4cat/coremeta4cat/flow_rate) -**Schema Reference:** [flow_rate](./elements/flow_rate.md) +**Schema Reference:** [flow_rate](./elements/slots/flow_rate.md) **Unit:** mL/min

- + 💡 Submit Term Feedback

@@ -1314,12 +1314,12 @@ surface species identification under reactive gas conditions. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:diluting_reference`](https://w3id.org/nfdi4cat/catcore/diluting_reference) +**CURIE:** [`coremeta4cat:diluting_reference`](https://w3id.org/nfdi4cat/coremeta4cat/diluting_reference) -**Schema Reference:** [diluting_reference](./elements/diluting_reference.md) +**Schema Reference:** [diluting_reference](./elements/slots/diluting_reference.md)

- + 💡 Submit Term Feedback

@@ -1333,12 +1333,12 @@ surface species identification under reactive gas conditions. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:ratio_reference_sample`](https://w3id.org/nfdi4cat/catcore/ratio_reference_sample) +**CURIE:** [`coremeta4cat:ratio_reference_sample`](https://w3id.org/nfdi4cat/coremeta4cat/ratio_reference_sample) -**Schema Reference:** [ratio_reference_sample](./elements/ratio_reference_sample.md) +**Schema Reference:** [ratio_reference_sample](./elements/slots/ratio_reference_sample.md)

- + 💡 Submit Term Feedback

@@ -1354,10 +1354,10 @@ surface species identification under reactive gas conditions. **CURIE:** [`AFR:0000950`](http://purl.allotrope.org/ontologies/result#AFR_0000950) -**Schema Reference:** [step_size](./elements/step_size.md) +**Schema Reference:** [step_size](./elements/slots/step_size.md)

- + 💡 Submit Term Feedback

@@ -1371,12 +1371,12 @@ surface species identification under reactive gas conditions. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:resolution`](https://w3id.org/nfdi4cat/catcore/resolution) +**CURIE:** [`coremeta4cat:resolution`](https://w3id.org/nfdi4cat/coremeta4cat/resolution) -**Schema Reference:** [resolution](./elements/resolution.md) +**Schema Reference:** [resolution](./elements/slots/resolution.md)

- + 💡 Submit Term Feedback

@@ -1390,12 +1390,12 @@ surface species identification under reactive gas conditions. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:background_correction_method`](https://w3id.org/nfdi4cat/catcore/background_correction_method) +**CURIE:** [`coremeta4cat:background_correction_method`](https://w3id.org/nfdi4cat/coremeta4cat/background_correction_method) -**Schema Reference:** [background_correction_method](./elements/background_correction_method.md) +**Schema Reference:** [background_correction_method](./elements/slots/background_correction_method.md)

- + 💡 Submit Term Feedback

@@ -1411,12 +1411,12 @@ surface species identification under reactive gas conditions. **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -1430,18 +1430,18 @@ surface species identification under reactive gas conditions. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:number_of_scans`](https://w3id.org/nfdi4cat/catcore/number_of_scans) +**CURIE:** [`coremeta4cat:number_of_scans`](https://w3id.org/nfdi4cat/coremeta4cat/number_of_scans) -**Schema Reference:** [number_of_scans](./elements/number_of_scans.md) +**Schema Reference:** [number_of_scans](./elements/slots/number_of_scans.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -1451,9 +1451,9 @@ surface species identification under reactive gas conditions. **Description:** Raman spectroscopy for vibrational and structural characterization. -**CURIE:** [`voc4cat:0000069`](https://w3id.org/nfdi4cat/voc4cat_0000069) +**CURIE:** [`VOC4CAT:0000069`](https://w3id.org/nfdi4cat/voc4cat_0000069) -**Schema Reference:** [RamanSpectroscopy](./elements/RamanSpectroscopy.md) +**Schema Reference:** [RamanSpectroscopy](./elements/classes/RamanSpectroscopy.md) **Slots** @@ -1468,12 +1468,12 @@ surface species identification under reactive gas conditions. **CURIE:** [`AFR:0001594`](http://purl.allotrope.org/ontologies/result#AFR_0001594) -**Schema Reference:** [excitation_laser_wavelength](./elements/excitation_laser_wavelength.md) +**Schema Reference:** [excitation_laser_wavelength](./elements/slots/excitation_laser_wavelength.md) **Unit:** nm

- + 💡 Submit Term Feedback

@@ -1489,12 +1489,12 @@ surface species identification under reactive gas conditions. **CURIE:** [`AFR:0001595`](http://purl.allotrope.org/ontologies/result#AFR_0001595) -**Schema Reference:** [excitation_laser_power](./elements/excitation_laser_power.md) +**Schema Reference:** [excitation_laser_power](./elements/slots/excitation_laser_power.md) **Unit:** mW

- + 💡 Submit Term Feedback

@@ -1510,10 +1510,10 @@ surface species identification under reactive gas conditions. **CURIE:** [`AFR:0002226`](http://purl.allotrope.org/ontologies/result#AFR_0002226) -**Schema Reference:** [magnification_setting](./elements/magnification_setting.md) +**Schema Reference:** [magnification_setting](./elements/slots/magnification_setting.md)

- + 💡 Submit Term Feedback

@@ -1527,14 +1527,14 @@ surface species identification under reactive gas conditions. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:integration_time`](https://w3id.org/nfdi4cat/catcore/integration_time) +**CURIE:** [`coremeta4cat:integration_time`](https://w3id.org/nfdi4cat/coremeta4cat/integration_time) -**Schema Reference:** [integration_time](./elements/integration_time.md) +**Schema Reference:** [integration_time](./elements/slots/integration_time.md) **Unit:** s

- + 💡 Submit Term Feedback

@@ -1548,12 +1548,12 @@ surface species identification under reactive gas conditions. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:number_of_scans`](https://w3id.org/nfdi4cat/catcore/number_of_scans) +**CURIE:** [`coremeta4cat:number_of_scans`](https://w3id.org/nfdi4cat/coremeta4cat/number_of_scans) -**Schema Reference:** [number_of_scans](./elements/number_of_scans.md) +**Schema Reference:** [number_of_scans](./elements/slots/number_of_scans.md)

- + 💡 Submit Term Feedback

@@ -1567,12 +1567,12 @@ surface species identification under reactive gas conditions. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:atmosphere`](https://w3id.org/nfdi4cat/catcore/atmosphere) +**CURIE:** [`coremeta4cat:atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/atmosphere) -**Schema Reference:** [atmosphere](./elements/atmosphere.md) +**Schema Reference:** [atmosphere](./elements/slots/atmosphere.md)

- + 💡 Submit Term Feedback

@@ -1588,12 +1588,12 @@ surface species identification under reactive gas conditions. **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -1607,18 +1607,18 @@ surface species identification under reactive gas conditions. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:filter_or_grating`](https://w3id.org/nfdi4cat/catcore/filter_or_grating) +**CURIE:** [`coremeta4cat:filter_or_grating`](https://w3id.org/nfdi4cat/coremeta4cat/filter_or_grating) -**Schema Reference:** [filter_or_grating](./elements/filter_or_grating.md) +**Schema Reference:** [filter_or_grating](./elements/slots/filter_or_grating.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -1631,9 +1631,9 @@ Note: for detailed liquid-state NMR minimum information, the dedicated nmr_dcat_ap profile (MARGARITAS) should be used in combination with this subprofile. -**CURIE:** [`voc4cat:0000073`](https://w3id.org/nfdi4cat/voc4cat_0000073) +**CURIE:** [`VOC4CAT:0000073`](https://w3id.org/nfdi4cat/voc4cat_0000073) -**Schema Reference:** [NMRSpectroscopy](./elements/NMRSpectroscopy.md) +**Schema Reference:** [NMRSpectroscopy](./elements/classes/NMRSpectroscopy.md) **Slots** @@ -1646,12 +1646,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:nucleus`](https://w3id.org/nfdi4cat/catcore/nucleus) +**CURIE:** [`coremeta4cat:nucleus`](https://w3id.org/nfdi4cat/coremeta4cat/nucleus) -**Schema Reference:** [nucleus](./elements/nucleus.md) +**Schema Reference:** [nucleus](./elements/slots/nucleus.md)

- + 💡 Submit Term Feedback

@@ -1665,12 +1665,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0007246`](https://w3id.org/nfdi4cat/voc4cat_0007246) +**CURIE:** [`VOC4CAT:0007246`](https://w3id.org/nfdi4cat/voc4cat_0007246) -**Schema Reference:** [solvent](./elements/solvent.md) +**Schema Reference:** [solvent](./elements/slots/solvent.md)

- + 💡 Submit Term Feedback

@@ -1684,14 +1684,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:irradiation_frequency`](https://w3id.org/nfdi4cat/catcore/irradiation_frequency) +**CURIE:** [`coremeta4cat:irradiation_frequency`](https://w3id.org/nfdi4cat/coremeta4cat/irradiation_frequency) -**Schema Reference:** [irradiation_frequency](./elements/irradiation_frequency.md) +**Schema Reference:** [irradiation_frequency](./elements/slots/irradiation_frequency.md) **Unit:** MHz

- + 💡 Submit Term Feedback

@@ -1707,12 +1707,12 @@ this subprofile. **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -1726,12 +1726,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:nmr_pulse_sequence`](https://w3id.org/nfdi4cat/catcore/nmr_pulse_sequence) +**CURIE:** [`coremeta4cat:nmr_pulse_sequence`](https://w3id.org/nfdi4cat/coremeta4cat/nmr_pulse_sequence) -**Schema Reference:** [nmr_pulse_sequence](./elements/nmr_pulse_sequence.md) +**Schema Reference:** [nmr_pulse_sequence](./elements/slots/nmr_pulse_sequence.md)

- + 💡 Submit Term Feedback

@@ -1745,12 +1745,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:nmr_sample_tube`](https://w3id.org/nfdi4cat/catcore/nmr_sample_tube) +**CURIE:** [`coremeta4cat:nmr_sample_tube`](https://w3id.org/nfdi4cat/coremeta4cat/nmr_sample_tube) -**Schema Reference:** [nmr_sample_tube](./elements/nmr_sample_tube.md) +**Schema Reference:** [nmr_sample_tube](./elements/slots/nmr_sample_tube.md)

- + 💡 Submit Term Feedback

@@ -1764,12 +1764,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:number_of_scans`](https://w3id.org/nfdi4cat/catcore/number_of_scans) +**CURIE:** [`coremeta4cat:number_of_scans`](https://w3id.org/nfdi4cat/coremeta4cat/number_of_scans) -**Schema Reference:** [number_of_scans](./elements/number_of_scans.md) +**Schema Reference:** [number_of_scans](./elements/slots/number_of_scans.md)

- + 💡 Submit Term Feedback

@@ -1783,18 +1783,18 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:atmosphere`](https://w3id.org/nfdi4cat/catcore/atmosphere) +**CURIE:** [`coremeta4cat:atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/atmosphere) -**Schema Reference:** [atmosphere](./elements/atmosphere.md) +**Schema Reference:** [atmosphere](./elements/slots/atmosphere.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -1804,9 +1804,9 @@ this subprofile. **Description:** TEM for atomic-resolution imaging and diffraction of catalyst particles. -**CURIE:** [`voc4cat:0000078`](https://w3id.org/nfdi4cat/voc4cat_0000078) +**CURIE:** [`VOC4CAT:0000078`](https://w3id.org/nfdi4cat/voc4cat_0000078) -**Schema Reference:** [TransmissionElectronMicroscopy](./elements/TransmissionElectronMicroscopy.md) +**Schema Reference:** [TransmissionElectronMicroscopy](./elements/classes/TransmissionElectronMicroscopy.md) **Slots** @@ -1819,12 +1819,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000108`](https://w3id.org/nfdi4cat/voc4cat_0000108) +**CURIE:** [`VOC4CAT:0000108`](https://w3id.org/nfdi4cat/voc4cat_0000108) -**Schema Reference:** [operation_mode](./elements/operation_mode.md) +**Schema Reference:** [operation_mode](./elements/slots/operation_mode.md)

- + 💡 Submit Term Feedback

@@ -1838,12 +1838,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:gun_type`](https://w3id.org/nfdi4cat/catcore/gun_type) +**CURIE:** [`coremeta4cat:gun_type`](https://w3id.org/nfdi4cat/coremeta4cat/gun_type) -**Schema Reference:** [gun_type](./elements/gun_type.md) +**Schema Reference:** [gun_type](./elements/slots/gun_type.md)

- + 💡 Submit Term Feedback

@@ -1857,14 +1857,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:acceleration_voltage`](https://w3id.org/nfdi4cat/catcore/acceleration_voltage) +**CURIE:** [`coremeta4cat:acceleration_voltage`](https://w3id.org/nfdi4cat/coremeta4cat/acceleration_voltage) -**Schema Reference:** [acceleration_voltage](./elements/acceleration_voltage.md) +**Schema Reference:** [acceleration_voltage](./elements/slots/acceleration_voltage.md) **Unit:** kV

- + 💡 Submit Term Feedback

@@ -1880,16 +1880,16 @@ this subprofile. **CURIE:** [`AFR:0002226`](http://purl.allotrope.org/ontologies/result#AFR_0002226) -**Schema Reference:** [magnification_setting](./elements/magnification_setting.md) +**Schema Reference:** [magnification_setting](./elements/slots/magnification_setting.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -1899,9 +1899,9 @@ this subprofile. **Description:** SEM for surface morphology and particle size/shape imaging. -**CURIE:** [`voc4cat:0000075`](https://w3id.org/nfdi4cat/voc4cat_0000075) +**CURIE:** [`VOC4CAT:0000075`](https://w3id.org/nfdi4cat/voc4cat_0000075) -**Schema Reference:** [ScanningElectronMicroscopy](./elements/ScanningElectronMicroscopy.md) +**Schema Reference:** [ScanningElectronMicroscopy](./elements/classes/ScanningElectronMicroscopy.md) **Slots** @@ -1914,14 +1914,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:image_resolution`](https://w3id.org/nfdi4cat/catcore/image_resolution) +**CURIE:** [`coremeta4cat:image_resolution`](https://w3id.org/nfdi4cat/coremeta4cat/image_resolution) -**Schema Reference:** [image_resolution](./elements/image_resolution.md) +**Schema Reference:** [image_resolution](./elements/slots/image_resolution.md) **Unit:** nm

- + 💡 Submit Term Feedback

@@ -1935,12 +1935,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:field_emitter`](https://w3id.org/nfdi4cat/catcore/field_emitter) +**CURIE:** [`coremeta4cat:field_emitter`](https://w3id.org/nfdi4cat/coremeta4cat/field_emitter) -**Schema Reference:** [field_emitter](./elements/field_emitter.md) +**Schema Reference:** [field_emitter](./elements/slots/field_emitter.md)

- + 💡 Submit Term Feedback

@@ -1954,12 +1954,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:gun_type`](https://w3id.org/nfdi4cat/catcore/gun_type) +**CURIE:** [`coremeta4cat:gun_type`](https://w3id.org/nfdi4cat/coremeta4cat/gun_type) -**Schema Reference:** [gun_type](./elements/gun_type.md) +**Schema Reference:** [gun_type](./elements/slots/gun_type.md)

- + 💡 Submit Term Feedback

@@ -1973,14 +1973,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:acceleration_voltage`](https://w3id.org/nfdi4cat/catcore/acceleration_voltage) +**CURIE:** [`coremeta4cat:acceleration_voltage`](https://w3id.org/nfdi4cat/coremeta4cat/acceleration_voltage) -**Schema Reference:** [acceleration_voltage](./elements/acceleration_voltage.md) +**Schema Reference:** [acceleration_voltage](./elements/slots/acceleration_voltage.md) **Unit:** kV

- + 💡 Submit Term Feedback

@@ -1996,16 +1996,16 @@ this subprofile. **CURIE:** [`AFR:0002226`](http://purl.allotrope.org/ontologies/result#AFR_0002226) -**Schema Reference:** [magnification_setting](./elements/magnification_setting.md) +**Schema Reference:** [magnification_setting](./elements/slots/magnification_setting.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -2017,7 +2017,7 @@ this subprofile. **CURIE:** [`CHMO:0000690`](http://purl.obolibrary.org/obo/CHMO_0000690) -**Schema Reference:** [Thermogravimetry](./elements/Thermogravimetry.md) +**Schema Reference:** [Thermogravimetry](./elements/classes/Thermogravimetry.md) **Slots** @@ -2030,12 +2030,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000108`](https://w3id.org/nfdi4cat/voc4cat_0000108) +**CURIE:** [`VOC4CAT:0000108`](https://w3id.org/nfdi4cat/voc4cat_0000108) -**Schema Reference:** [operation_mode](./elements/operation_mode.md) +**Schema Reference:** [operation_mode](./elements/slots/operation_mode.md)

- + 💡 Submit Term Feedback

@@ -2049,12 +2049,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:atmosphere`](https://w3id.org/nfdi4cat/catcore/atmosphere) +**CURIE:** [`coremeta4cat:atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/atmosphere) -**Schema Reference:** [atmosphere](./elements/atmosphere.md) +**Schema Reference:** [atmosphere](./elements/slots/atmosphere.md)

- + 💡 Submit Term Feedback

@@ -2070,12 +2070,12 @@ this subprofile. **CURIE:** [`NCIT:C164644`](http://purl.obolibrary.org/obo/NCIT_C164644) -**Schema Reference:** [initial_temperature](./elements/initial_temperature.md) +**Schema Reference:** [initial_temperature](./elements/slots/initial_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2091,12 +2091,12 @@ this subprofile. **CURIE:** [`NCIT:C164644`](http://purl.obolibrary.org/obo/NCIT_C164644) -**Schema Reference:** [final_temperature](./elements/final_temperature.md) +**Schema Reference:** [final_temperature](./elements/slots/final_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2110,14 +2110,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:sample_mass`](https://w3id.org/nfdi4cat/catcore/sample_mass) +**CURIE:** [`coremeta4cat:sample_mass`](https://w3id.org/nfdi4cat/coremeta4cat/sample_mass) -**Schema Reference:** [sample_mass](./elements/sample_mass.md) +**Schema Reference:** [sample_mass](./elements/slots/sample_mass.md) **Unit:** mg

- + 💡 Submit Term Feedback

@@ -2131,14 +2131,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:minimum_temperature`](https://w3id.org/nfdi4cat/catcore/minimum_temperature) +**CURIE:** [`coremeta4cat:minimum_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/minimum_temperature) -**Schema Reference:** [minimum_temperature](./elements/minimum_temperature.md) +**Schema Reference:** [minimum_temperature](./elements/slots/minimum_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2152,14 +2152,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:maximum_temperature`](https://w3id.org/nfdi4cat/catcore/maximum_temperature) +**CURIE:** [`coremeta4cat:maximum_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/maximum_temperature) -**Schema Reference:** [maximum_temperature](./elements/maximum_temperature.md) +**Schema Reference:** [maximum_temperature](./elements/slots/maximum_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2173,14 +2173,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:heating_rate`](https://w3id.org/nfdi4cat/catcore/heating_rate) +**CURIE:** [`coremeta4cat:heating_rate`](https://w3id.org/nfdi4cat/coremeta4cat/heating_rate) -**Schema Reference:** [heating_rate](./elements/heating_rate.md) +**Schema Reference:** [heating_rate](./elements/slots/heating_rate.md) **Unit:** Cel/min

- + 💡 Submit Term Feedback

@@ -2194,18 +2194,18 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:heating_procedure`](https://w3id.org/nfdi4cat/catcore/heating_procedure) +**CURIE:** [`coremeta4cat:heating_procedure`](https://w3id.org/nfdi4cat/coremeta4cat/heating_procedure) -**Schema Reference:** [heating_procedure](./elements/heating_procedure.md) +**Schema Reference:** [heating_procedure](./elements/slots/heating_procedure.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -2217,7 +2217,7 @@ this subprofile. **CURIE:** [`CHMO:0002908`](http://purl.obolibrary.org/obo/CHMO_0002908) -**Schema Reference:** [TPR](./elements/TPR.md) +**Schema Reference:** [TPR](./elements/classes/TPR.md) **Slots** @@ -2230,12 +2230,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:reducing_gas_composition`](https://w3id.org/nfdi4cat/catcore/reducing_gas_composition) +**CURIE:** [`coremeta4cat:reducing_gas_composition`](https://w3id.org/nfdi4cat/coremeta4cat/reducing_gas_composition) -**Schema Reference:** [reducing_gas_composition](./elements/reducing_gas_composition.md) +**Schema Reference:** [reducing_gas_composition](./elements/slots/reducing_gas_composition.md)

- + 💡 Submit Term Feedback

@@ -2249,14 +2249,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:minimum_temperature`](https://w3id.org/nfdi4cat/catcore/minimum_temperature) +**CURIE:** [`coremeta4cat:minimum_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/minimum_temperature) -**Schema Reference:** [minimum_temperature](./elements/minimum_temperature.md) +**Schema Reference:** [minimum_temperature](./elements/slots/minimum_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2270,14 +2270,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:maximum_temperature`](https://w3id.org/nfdi4cat/catcore/maximum_temperature) +**CURIE:** [`coremeta4cat:maximum_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/maximum_temperature) -**Schema Reference:** [maximum_temperature](./elements/maximum_temperature.md) +**Schema Reference:** [maximum_temperature](./elements/slots/maximum_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2291,14 +2291,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:heating_rate`](https://w3id.org/nfdi4cat/catcore/heating_rate) +**CURIE:** [`coremeta4cat:heating_rate`](https://w3id.org/nfdi4cat/coremeta4cat/heating_rate) -**Schema Reference:** [heating_rate](./elements/heating_rate.md) +**Schema Reference:** [heating_rate](./elements/slots/heating_rate.md) **Unit:** Cel/min

- + 💡 Submit Term Feedback

@@ -2312,18 +2312,18 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:heating_procedure`](https://w3id.org/nfdi4cat/catcore/heating_procedure) +**CURIE:** [`coremeta4cat:heating_procedure`](https://w3id.org/nfdi4cat/coremeta4cat/heating_procedure) -**Schema Reference:** [heating_procedure](./elements/heating_procedure.md) +**Schema Reference:** [heating_procedure](./elements/slots/heating_procedure.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -2335,7 +2335,7 @@ this subprofile. **CURIE:** [`CHMO:0002907`](http://purl.obolibrary.org/obo/CHMO_0002907) -**Schema Reference:** [TPO](./elements/TPO.md) +**Schema Reference:** [TPO](./elements/classes/TPO.md) **Slots** @@ -2348,12 +2348,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:oxidizing_gas_composition`](https://w3id.org/nfdi4cat/catcore/oxidizing_gas_composition) +**CURIE:** [`coremeta4cat:oxidizing_gas_composition`](https://w3id.org/nfdi4cat/coremeta4cat/oxidizing_gas_composition) -**Schema Reference:** [oxidizing_gas_composition](./elements/oxidizing_gas_composition.md) +**Schema Reference:** [oxidizing_gas_composition](./elements/slots/oxidizing_gas_composition.md)

- + 💡 Submit Term Feedback

@@ -2367,14 +2367,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:minimum_temperature`](https://w3id.org/nfdi4cat/catcore/minimum_temperature) +**CURIE:** [`coremeta4cat:minimum_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/minimum_temperature) -**Schema Reference:** [minimum_temperature](./elements/minimum_temperature.md) +**Schema Reference:** [minimum_temperature](./elements/slots/minimum_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2388,14 +2388,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:maximum_temperature`](https://w3id.org/nfdi4cat/catcore/maximum_temperature) +**CURIE:** [`coremeta4cat:maximum_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/maximum_temperature) -**Schema Reference:** [maximum_temperature](./elements/maximum_temperature.md) +**Schema Reference:** [maximum_temperature](./elements/slots/maximum_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2409,14 +2409,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:heating_rate`](https://w3id.org/nfdi4cat/catcore/heating_rate) +**CURIE:** [`coremeta4cat:heating_rate`](https://w3id.org/nfdi4cat/coremeta4cat/heating_rate) -**Schema Reference:** [heating_rate](./elements/heating_rate.md) +**Schema Reference:** [heating_rate](./elements/slots/heating_rate.md) **Unit:** Cel/min

- + 💡 Submit Term Feedback

@@ -2430,18 +2430,18 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:heating_procedure`](https://w3id.org/nfdi4cat/catcore/heating_procedure) +**CURIE:** [`coremeta4cat:heating_procedure`](https://w3id.org/nfdi4cat/coremeta4cat/heating_procedure) -**Schema Reference:** [heating_procedure](./elements/heating_procedure.md) +**Schema Reference:** [heating_procedure](./elements/slots/heating_procedure.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -2451,9 +2451,9 @@ this subprofile. **Description:** Brunauer-Emmett-Teller analysis for specific surface area and pore size distribution. -**CURIE:** [`catcore:BET`](https://w3id.org/nfdi4cat/catcore/BET) +**CURIE:** [`coremeta4cat:BET`](https://w3id.org/nfdi4cat/coremeta4cat/BET) -**Schema Reference:** [BET](./elements/BET.md) +**Schema Reference:** [BET](./elements/classes/BET.md) **Slots** @@ -2466,12 +2466,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:adsorbate_gas`](https://w3id.org/nfdi4cat/catcore/adsorbate_gas) +**CURIE:** [`coremeta4cat:adsorbate_gas`](https://w3id.org/nfdi4cat/coremeta4cat/adsorbate_gas) -**Schema Reference:** [adsorbate_gas](./elements/adsorbate_gas.md) +**Schema Reference:** [adsorbate_gas](./elements/slots/adsorbate_gas.md)

- + 💡 Submit Term Feedback

@@ -2485,14 +2485,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:degassing_temperature`](https://w3id.org/nfdi4cat/catcore/degassing_temperature) +**CURIE:** [`coremeta4cat:degassing_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/degassing_temperature) -**Schema Reference:** [degassing_temperature](./elements/degassing_temperature.md) +**Schema Reference:** [degassing_temperature](./elements/slots/degassing_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2506,14 +2506,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:measurement_temperature`](https://w3id.org/nfdi4cat/catcore/measurement_temperature) +**CURIE:** [`coremeta4cat:measurement_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/measurement_temperature) -**Schema Reference:** [measurement_temperature](./elements/measurement_temperature.md) +**Schema Reference:** [measurement_temperature](./elements/slots/measurement_temperature.md) **Unit:** K

- + 💡 Submit Term Feedback

@@ -2527,12 +2527,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:pore_size_distribution_method`](https://w3id.org/nfdi4cat/catcore/pore_size_distribution_method) +**CURIE:** [`coremeta4cat:pore_size_distribution_method`](https://w3id.org/nfdi4cat/coremeta4cat/pore_size_distribution_method) -**Schema Reference:** [pore_size_distribution_method](./elements/pore_size_distribution_method.md) +**Schema Reference:** [pore_size_distribution_method](./elements/slots/pore_size_distribution_method.md)

- + 💡 Submit Term Feedback

@@ -2546,20 +2546,20 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:sample_mass`](https://w3id.org/nfdi4cat/catcore/sample_mass) +**CURIE:** [`coremeta4cat:sample_mass`](https://w3id.org/nfdi4cat/coremeta4cat/sample_mass) -**Schema Reference:** [sample_mass](./elements/sample_mass.md) +**Schema Reference:** [sample_mass](./elements/slots/sample_mass.md) **Unit:** mg

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -2571,7 +2571,7 @@ this subprofile. **CURIE:** [`CHMO:0000267`](http://purl.obolibrary.org/obo/CHMO_0000267) -**Schema Reference:** [ICPAES](./elements/ICPAES.md) +**Schema Reference:** [ICPAES](./elements/classes/ICPAES.md) **Slots** @@ -2584,12 +2584,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:element_analyzed`](https://w3id.org/nfdi4cat/catcore/element_analyzed) +**CURIE:** [`coremeta4cat:element_analyzed`](https://w3id.org/nfdi4cat/coremeta4cat/element_analyzed) -**Schema Reference:** [element_analyzed](./elements/element_analyzed.md) +**Schema Reference:** [element_analyzed](./elements/slots/element_analyzed.md)

- + 💡 Submit Term Feedback

@@ -2603,12 +2603,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:calibration_method`](https://w3id.org/nfdi4cat/catcore/calibration_method) +**CURIE:** [`coremeta4cat:calibration_method`](https://w3id.org/nfdi4cat/coremeta4cat/calibration_method) -**Schema Reference:** [calibration_method](./elements/calibration_method.md) +**Schema Reference:** [calibration_method](./elements/slots/calibration_method.md)

- + 💡 Submit Term Feedback

@@ -2624,10 +2624,10 @@ this subprofile. **CURIE:** [`NCIT:C105701`](http://purl.obolibrary.org/obo/NCIT_C105701) -**Schema Reference:** [detection_limit](./elements/detection_limit.md) +**Schema Reference:** [detection_limit](./elements/slots/detection_limit.md)

- + 💡 Submit Term Feedback

@@ -2641,18 +2641,18 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:matrix_effect_correction`](https://w3id.org/nfdi4cat/catcore/matrix_effect_correction) +**CURIE:** [`coremeta4cat:matrix_effect_correction`](https://w3id.org/nfdi4cat/coremeta4cat/matrix_effect_correction) -**Schema Reference:** [matrix_effect_correction](./elements/matrix_effect_correction.md) +**Schema Reference:** [matrix_effect_correction](./elements/slots/matrix_effect_correction.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -2664,7 +2664,7 @@ this subprofile. **CURIE:** [`CHMO:0001075`](http://purl.obolibrary.org/obo/CHMO_0001075) -**Schema Reference:** [ElementalAnalysis](./elements/ElementalAnalysis.md) +**Schema Reference:** [ElementalAnalysis](./elements/classes/ElementalAnalysis.md) **Slots** @@ -2677,12 +2677,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:elements_analyzed`](https://w3id.org/nfdi4cat/catcore/elements_analyzed) +**CURIE:** [`coremeta4cat:elements_analyzed`](https://w3id.org/nfdi4cat/coremeta4cat/elements_analyzed) -**Schema Reference:** [elements_analyzed](./elements/elements_analyzed.md) +**Schema Reference:** [elements_analyzed](./elements/slots/elements_analyzed.md)

- + 💡 Submit Term Feedback

@@ -2696,14 +2696,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:combustion_temperature`](https://w3id.org/nfdi4cat/catcore/combustion_temperature) +**CURIE:** [`coremeta4cat:combustion_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/combustion_temperature) -**Schema Reference:** [combustion_temperature](./elements/combustion_temperature.md) +**Schema Reference:** [combustion_temperature](./elements/slots/combustion_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2717,18 +2717,18 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:carrier_gas`](https://w3id.org/nfdi4cat/catcore/carrier_gas) +**CURIE:** [`coremeta4cat:carrier_gas`](https://w3id.org/nfdi4cat/coremeta4cat/carrier_gas) -**Schema Reference:** [carrier_gas](./elements/carrier_gas.md) +**Schema Reference:** [carrier_gas](./elements/slots/carrier_gas.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -2738,9 +2738,9 @@ this subprofile. **Description:** UV-Vis spectroscopy for electronic transitions, band gap, and concentration determination. -**CURIE:** [`voc4cat:0000079`](https://w3id.org/nfdi4cat/voc4cat_0000079) +**CURIE:** [`VOC4CAT:0000079`](https://w3id.org/nfdi4cat/voc4cat_0000079) -**Schema Reference:** [UVVisSpectroscopy](./elements/UVVisSpectroscopy.md) +**Schema Reference:** [UVVisSpectroscopy](./elements/classes/UVVisSpectroscopy.md) **Slots** @@ -2753,14 +2753,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:minimum_wavelength`](https://w3id.org/nfdi4cat/catcore/minimum_wavelength) +**CURIE:** [`coremeta4cat:minimum_wavelength`](https://w3id.org/nfdi4cat/coremeta4cat/minimum_wavelength) -**Schema Reference:** [minimum_wavelength](./elements/minimum_wavelength.md) +**Schema Reference:** [minimum_wavelength](./elements/slots/minimum_wavelength.md) **Unit:** nm

- + 💡 Submit Term Feedback

@@ -2774,14 +2774,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:maximum_wavelength`](https://w3id.org/nfdi4cat/catcore/maximum_wavelength) +**CURIE:** [`coremeta4cat:maximum_wavelength`](https://w3id.org/nfdi4cat/coremeta4cat/maximum_wavelength) -**Schema Reference:** [maximum_wavelength](./elements/maximum_wavelength.md) +**Schema Reference:** [maximum_wavelength](./elements/slots/maximum_wavelength.md) **Unit:** nm

- + 💡 Submit Term Feedback

@@ -2797,12 +2797,12 @@ this subprofile. **CURIE:** [`AFQ:0000268`](http://purl.allotrope.org/ontologies/quality#AFQ_0000268) -**Schema Reference:** [path_length](./elements/path_length.md) +**Schema Reference:** [path_length](./elements/slots/path_length.md) **Unit:** cm

- + 💡 Submit Term Feedback

@@ -2816,12 +2816,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0007246`](https://w3id.org/nfdi4cat/voc4cat_0007246) +**CURIE:** [`VOC4CAT:0007246`](https://w3id.org/nfdi4cat/voc4cat_0007246) -**Schema Reference:** [solvent](./elements/solvent.md) +**Schema Reference:** [solvent](./elements/slots/solvent.md)

- + 💡 Submit Term Feedback

@@ -2835,20 +2835,20 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:concentration`](https://w3id.org/nfdi4cat/catcore/concentration) +**CURIE:** [`coremeta4cat:concentration`](https://w3id.org/nfdi4cat/coremeta4cat/concentration) -**Schema Reference:** [concentration](./elements/concentration.md) +**Schema Reference:** [concentration](./elements/slots/concentration.md) **Unit:** mol/L

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -2858,9 +2858,9 @@ this subprofile. **Description:** Photoluminescence spectroscopy for defect and charge carrier characterization. -**CURIE:** [`catcore:PhotoluminescenceSpectroscopy`](https://w3id.org/nfdi4cat/catcore/PhotoluminescenceSpectroscopy) +**CURIE:** [`coremeta4cat:PhotoluminescenceSpectroscopy`](https://w3id.org/nfdi4cat/coremeta4cat/PhotoluminescenceSpectroscopy) -**Schema Reference:** [PhotoluminescenceSpectroscopy](./elements/PhotoluminescenceSpectroscopy.md) +**Schema Reference:** [PhotoluminescenceSpectroscopy](./elements/classes/PhotoluminescenceSpectroscopy.md) **Slots** @@ -2873,12 +2873,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:emission_range`](https://w3id.org/nfdi4cat/catcore/emission_range) +**CURIE:** [`coremeta4cat:emission_range`](https://w3id.org/nfdi4cat/coremeta4cat/emission_range) -**Schema Reference:** [emission_range](./elements/emission_range.md) +**Schema Reference:** [emission_range](./elements/slots/emission_range.md)

- + 💡 Submit Term Feedback

@@ -2892,14 +2892,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:slit_width`](https://w3id.org/nfdi4cat/catcore/slit_width) +**CURIE:** [`coremeta4cat:slit_width`](https://w3id.org/nfdi4cat/coremeta4cat/slit_width) -**Schema Reference:** [slit_width](./elements/slit_width.md) +**Schema Reference:** [slit_width](./elements/slots/slit_width.md) **Unit:** nm

- + 💡 Submit Term Feedback

@@ -2915,10 +2915,10 @@ this subprofile. **CURIE:** [`AFR:0000950`](http://purl.allotrope.org/ontologies/result#AFR_0000950) -**Schema Reference:** [step_size](./elements/step_size.md) +**Schema Reference:** [step_size](./elements/slots/step_size.md)

- + 💡 Submit Term Feedback

@@ -2932,14 +2932,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:integration_time`](https://w3id.org/nfdi4cat/catcore/integration_time) +**CURIE:** [`coremeta4cat:integration_time`](https://w3id.org/nfdi4cat/coremeta4cat/integration_time) -**Schema Reference:** [integration_time](./elements/integration_time.md) +**Schema Reference:** [integration_time](./elements/slots/integration_time.md) **Unit:** s

- + 💡 Submit Term Feedback

@@ -2955,12 +2955,12 @@ this subprofile. **CURIE:** [`AFR:0002479`](http://purl.allotrope.org/ontologies/result#AFR_0002479) -**Schema Reference:** [excitation_wavelength](./elements/excitation_wavelength.md) +**Schema Reference:** [excitation_wavelength](./elements/slots/excitation_wavelength.md) **Unit:** nm

- + 💡 Submit Term Feedback

@@ -2976,12 +2976,12 @@ this subprofile. **CURIE:** [`NCIT:C204101`](http://purl.obolibrary.org/obo/NCIT_C204101) -**Schema Reference:** [emission_wavelength](./elements/emission_wavelength.md) +**Schema Reference:** [emission_wavelength](./elements/slots/emission_wavelength.md) **Unit:** nm

- + 💡 Submit Term Feedback

@@ -2995,12 +2995,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:optical_filter`](https://w3id.org/nfdi4cat/catcore/optical_filter) +**CURIE:** [`coremeta4cat:optical_filter`](https://w3id.org/nfdi4cat/coremeta4cat/optical_filter) -**Schema Reference:** [optical_filter](./elements/optical_filter.md) +**Schema Reference:** [optical_filter](./elements/slots/optical_filter.md)

- + 💡 Submit Term Feedback

@@ -3016,18 +3016,18 @@ this subprofile. **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -3037,9 +3037,9 @@ this subprofile. **Description:** Time-resolved photoluminescence for charge carrier lifetime and recombination dynamics. -**CURIE:** [`catcore:PhotoluminescenceLifetime`](https://w3id.org/nfdi4cat/catcore/PhotoluminescenceLifetime) +**CURIE:** [`coremeta4cat:PhotoluminescenceLifetime`](https://w3id.org/nfdi4cat/coremeta4cat/PhotoluminescenceLifetime) -**Schema Reference:** [PhotoluminescenceLifetime](./elements/PhotoluminescenceLifetime.md) +**Schema Reference:** [PhotoluminescenceLifetime](./elements/classes/PhotoluminescenceLifetime.md) **Slots** @@ -3052,12 +3052,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:lifetime_fitting_model`](https://w3id.org/nfdi4cat/catcore/lifetime_fitting_model) +**CURIE:** [`coremeta4cat:lifetime_fitting_model`](https://w3id.org/nfdi4cat/coremeta4cat/lifetime_fitting_model) -**Schema Reference:** [lifetime_fitting_model](./elements/lifetime_fitting_model.md) +**Schema Reference:** [lifetime_fitting_model](./elements/slots/lifetime_fitting_model.md)

- + 💡 Submit Term Feedback

@@ -3071,12 +3071,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:number_of_shots`](https://w3id.org/nfdi4cat/catcore/number_of_shots) +**CURIE:** [`coremeta4cat:number_of_shots`](https://w3id.org/nfdi4cat/coremeta4cat/number_of_shots) -**Schema Reference:** [number_of_shots](./elements/number_of_shots.md) +**Schema Reference:** [number_of_shots](./elements/slots/number_of_shots.md)

- + 💡 Submit Term Feedback

@@ -3092,12 +3092,12 @@ this subprofile. **CURIE:** [`AFR:0002479`](http://purl.allotrope.org/ontologies/result#AFR_0002479) -**Schema Reference:** [excitation_wavelength](./elements/excitation_wavelength.md) +**Schema Reference:** [excitation_wavelength](./elements/slots/excitation_wavelength.md) **Unit:** nm

- + 💡 Submit Term Feedback

@@ -3113,12 +3113,12 @@ this subprofile. **CURIE:** [`NCIT:C204101`](http://purl.obolibrary.org/obo/NCIT_C204101) -**Schema Reference:** [emission_wavelength](./elements/emission_wavelength.md) +**Schema Reference:** [emission_wavelength](./elements/slots/emission_wavelength.md) **Unit:** nm

- + 💡 Submit Term Feedback

@@ -3132,12 +3132,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:optical_filter`](https://w3id.org/nfdi4cat/catcore/optical_filter) +**CURIE:** [`coremeta4cat:optical_filter`](https://w3id.org/nfdi4cat/coremeta4cat/optical_filter) -**Schema Reference:** [optical_filter](./elements/optical_filter.md) +**Schema Reference:** [optical_filter](./elements/slots/optical_filter.md)

- + 💡 Submit Term Feedback

@@ -3153,18 +3153,18 @@ this subprofile. **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -3176,7 +3176,7 @@ this subprofile. **CURIE:** [`CHMO:0000025`](http://purl.obolibrary.org/obo/CHMO_0000025) -**Schema Reference:** [CyclicVoltammetry](./elements/CyclicVoltammetry.md) +**Schema Reference:** [CyclicVoltammetry](./elements/classes/CyclicVoltammetry.md) **Slots** @@ -3189,14 +3189,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0007213`](https://w3id.org/nfdi4cat/voc4cat_0007213) +**CURIE:** [`VOC4CAT:0007213`](https://w3id.org/nfdi4cat/voc4cat_0007213) -**Schema Reference:** [scan_rate](./elements/scan_rate.md) +**Schema Reference:** [scan_rate](./elements/slots/scan_rate.md) **Unit:** mV/s

- + 💡 Submit Term Feedback

@@ -3210,14 +3210,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:minimum_potential`](https://w3id.org/nfdi4cat/catcore/minimum_potential) +**CURIE:** [`coremeta4cat:minimum_potential`](https://w3id.org/nfdi4cat/coremeta4cat/minimum_potential) -**Schema Reference:** [minimum_potential](./elements/minimum_potential.md) +**Schema Reference:** [minimum_potential](./elements/slots/minimum_potential.md) **Unit:** V

- + 💡 Submit Term Feedback

@@ -3231,14 +3231,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:maximum_potential`](https://w3id.org/nfdi4cat/catcore/maximum_potential) +**CURIE:** [`coremeta4cat:maximum_potential`](https://w3id.org/nfdi4cat/coremeta4cat/maximum_potential) -**Schema Reference:** [maximum_potential](./elements/maximum_potential.md) +**Schema Reference:** [maximum_potential](./elements/slots/maximum_potential.md) **Unit:** V

- + 💡 Submit Term Feedback

@@ -3252,14 +3252,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0007218`](https://w3id.org/nfdi4cat/voc4cat_0007218) +**CURIE:** [`VOC4CAT:0007218`](https://w3id.org/nfdi4cat/voc4cat_0007218) -**Schema Reference:** [step_size_potential](./elements/step_size_potential.md) +**Schema Reference:** [step_size_potential](./elements/slots/step_size_potential.md) **Unit:** mV

- + 💡 Submit Term Feedback

@@ -3273,12 +3273,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:number_of_cycles`](https://w3id.org/nfdi4cat/catcore/number_of_cycles) +**CURIE:** [`coremeta4cat:number_of_cycles`](https://w3id.org/nfdi4cat/coremeta4cat/number_of_cycles) -**Schema Reference:** [number_of_cycles](./elements/number_of_cycles.md) +**Schema Reference:** [number_of_cycles](./elements/slots/number_of_cycles.md)

- + 💡 Submit Term Feedback

@@ -3292,12 +3292,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0007204`](https://w3id.org/nfdi4cat/voc4cat_0007204) +**CURIE:** [`VOC4CAT:0007204`](https://w3id.org/nfdi4cat/voc4cat_0007204) -**Schema Reference:** [reference_electrode](./elements/reference_electrode.md) +**Schema Reference:** [reference_electrode](./elements/slots/reference_electrode.md)

- + 💡 Submit Term Feedback

@@ -3311,12 +3311,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0007202`](https://w3id.org/nfdi4cat/voc4cat_0007202) +**CURIE:** [`VOC4CAT:0007202`](https://w3id.org/nfdi4cat/voc4cat_0007202) -**Schema Reference:** [working_electrode](./elements/working_electrode.md) +**Schema Reference:** [working_electrode](./elements/slots/working_electrode.md)

- + 💡 Submit Term Feedback

@@ -3330,12 +3330,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0007203`](https://w3id.org/nfdi4cat/voc4cat_0007203) +**CURIE:** [`VOC4CAT:0007203`](https://w3id.org/nfdi4cat/voc4cat_0007203) -**Schema Reference:** [counter_electrode](./elements/counter_electrode.md) +**Schema Reference:** [counter_electrode](./elements/slots/counter_electrode.md)

- + 💡 Submit Term Feedback

@@ -3349,12 +3349,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:electrolyte_composition`](https://w3id.org/nfdi4cat/catcore/electrolyte_composition) +**CURIE:** [`coremeta4cat:electrolyte_composition`](https://w3id.org/nfdi4cat/coremeta4cat/electrolyte_composition) -**Schema Reference:** [electrolyte_composition](./elements/electrolyte_composition.md) +**Schema Reference:** [electrolyte_composition](./elements/slots/electrolyte_composition.md)

- + 💡 Submit Term Feedback

@@ -3368,14 +3368,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:electrolyte_concentration`](https://w3id.org/nfdi4cat/catcore/electrolyte_concentration) +**CURIE:** [`coremeta4cat:electrolyte_concentration`](https://w3id.org/nfdi4cat/coremeta4cat/electrolyte_concentration) -**Schema Reference:** [electrolyte_concentration](./elements/electrolyte_concentration.md) +**Schema Reference:** [electrolyte_concentration](./elements/slots/electrolyte_concentration.md) **Unit:** mol/L

- + 💡 Submit Term Feedback

@@ -3389,12 +3389,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:atmosphere`](https://w3id.org/nfdi4cat/catcore/atmosphere) +**CURIE:** [`coremeta4cat:atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/atmosphere) -**Schema Reference:** [atmosphere](./elements/atmosphere.md) +**Schema Reference:** [atmosphere](./elements/slots/atmosphere.md)

- + 💡 Submit Term Feedback

@@ -3410,18 +3410,18 @@ this subprofile. **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -3431,9 +3431,9 @@ this subprofile. **Description:** Electrical conductivity measurement for ionic and electronic transport characterization. -**CURIE:** [`catcore:ConductivityMeasurement`](https://w3id.org/nfdi4cat/catcore/ConductivityMeasurement) +**CURIE:** [`coremeta4cat:ConductivityMeasurement`](https://w3id.org/nfdi4cat/coremeta4cat/ConductivityMeasurement) -**Schema Reference:** [ConductivityMeasurement](./elements/ConductivityMeasurement.md) +**Schema Reference:** [ConductivityMeasurement](./elements/classes/ConductivityMeasurement.md) **Slots** @@ -3446,18 +3446,18 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:electrode_configuration`](https://w3id.org/nfdi4cat/catcore/electrode_configuration) +**CURIE:** [`coremeta4cat:electrode_configuration`](https://w3id.org/nfdi4cat/coremeta4cat/electrode_configuration) -**Schema Reference:** [electrode_configuration](./elements/electrode_configuration.md) +**Schema Reference:** [electrode_configuration](./elements/slots/electrode_configuration.md)

- + 💡 Submit Term Feedback

-frequency (Optional, Multivalued) +ac frequency (Optional, Multivalued) **Description:** Frequency of AC signal applied in impedance or conductivity measurement. @@ -3465,14 +3465,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0007239`](https://w3id.org/nfdi4cat/voc4cat_0007239) +**CURIE:** [`VOC4CAT:0007239`](https://w3id.org/nfdi4cat/voc4cat_0007239) -**Schema Reference:** [frequency](./elements/frequency.md) +**Schema Reference:** [ac_frequency](./elements/slots/ac_frequency.md) **Unit:** Hz

- + 💡 Submit Term Feedback

@@ -3486,12 +3486,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:ac_dc_mode`](https://w3id.org/nfdi4cat/catcore/ac_dc_mode) +**CURIE:** [`coremeta4cat:ac_dc_mode`](https://w3id.org/nfdi4cat/coremeta4cat/ac_dc_mode) -**Schema Reference:** [ac_dc_mode](./elements/ac_dc_mode.md) +**Schema Reference:** [ac_dc_mode](./elements/slots/ac_dc_mode.md)

- + 💡 Submit Term Feedback

@@ -3505,12 +3505,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:sample_geometry`](https://w3id.org/nfdi4cat/catcore/sample_geometry) +**CURIE:** [`coremeta4cat:sample_geometry`](https://w3id.org/nfdi4cat/coremeta4cat/sample_geometry) -**Schema Reference:** [sample_geometry](./elements/sample_geometry.md) +**Schema Reference:** [sample_geometry](./elements/slots/sample_geometry.md)

- + 💡 Submit Term Feedback

@@ -3524,12 +3524,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0007204`](https://w3id.org/nfdi4cat/voc4cat_0007204) +**CURIE:** [`VOC4CAT:0007204`](https://w3id.org/nfdi4cat/voc4cat_0007204) -**Schema Reference:** [reference_electrode](./elements/reference_electrode.md) +**Schema Reference:** [reference_electrode](./elements/slots/reference_electrode.md)

- + 💡 Submit Term Feedback

@@ -3543,12 +3543,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0007202`](https://w3id.org/nfdi4cat/voc4cat_0007202) +**CURIE:** [`VOC4CAT:0007202`](https://w3id.org/nfdi4cat/voc4cat_0007202) -**Schema Reference:** [working_electrode](./elements/working_electrode.md) +**Schema Reference:** [working_electrode](./elements/slots/working_electrode.md)

- + 💡 Submit Term Feedback

@@ -3562,12 +3562,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0007203`](https://w3id.org/nfdi4cat/voc4cat_0007203) +**CURIE:** [`VOC4CAT:0007203`](https://w3id.org/nfdi4cat/voc4cat_0007203) -**Schema Reference:** [counter_electrode](./elements/counter_electrode.md) +**Schema Reference:** [counter_electrode](./elements/slots/counter_electrode.md)

- + 💡 Submit Term Feedback

@@ -3581,12 +3581,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:electrolyte_composition`](https://w3id.org/nfdi4cat/catcore/electrolyte_composition) +**CURIE:** [`coremeta4cat:electrolyte_composition`](https://w3id.org/nfdi4cat/coremeta4cat/electrolyte_composition) -**Schema Reference:** [electrolyte_composition](./elements/electrolyte_composition.md) +**Schema Reference:** [electrolyte_composition](./elements/slots/electrolyte_composition.md)

- + 💡 Submit Term Feedback

@@ -3600,14 +3600,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:electrolyte_concentration`](https://w3id.org/nfdi4cat/catcore/electrolyte_concentration) +**CURIE:** [`coremeta4cat:electrolyte_concentration`](https://w3id.org/nfdi4cat/coremeta4cat/electrolyte_concentration) -**Schema Reference:** [electrolyte_concentration](./elements/electrolyte_concentration.md) +**Schema Reference:** [electrolyte_concentration](./elements/slots/electrolyte_concentration.md) **Unit:** mol/L

- + 💡 Submit Term Feedback

@@ -3621,12 +3621,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:atmosphere`](https://w3id.org/nfdi4cat/catcore/atmosphere) +**CURIE:** [`coremeta4cat:atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/atmosphere) -**Schema Reference:** [atmosphere](./elements/atmosphere.md) +**Schema Reference:** [atmosphere](./elements/slots/atmosphere.md)

- + 💡 Submit Term Feedback

@@ -3642,18 +3642,18 @@ this subprofile. **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -3665,7 +3665,7 @@ this subprofile. **CURIE:** [`CHMO:0000167`](http://purl.obolibrary.org/obo/CHMO_0000167) -**Schema Reference:** [DynamicLightScattering](./elements/DynamicLightScattering.md) +**Schema Reference:** [DynamicLightScattering](./elements/classes/DynamicLightScattering.md) **Slots** @@ -3678,12 +3678,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0007246`](https://w3id.org/nfdi4cat/voc4cat_0007246) +**CURIE:** [`VOC4CAT:0007246`](https://w3id.org/nfdi4cat/voc4cat_0007246) -**Schema Reference:** [solvent](./elements/solvent.md) +**Schema Reference:** [solvent](./elements/slots/solvent.md)

- + 💡 Submit Term Feedback

@@ -3697,14 +3697,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:concentration`](https://w3id.org/nfdi4cat/catcore/concentration) +**CURIE:** [`coremeta4cat:concentration`](https://w3id.org/nfdi4cat/coremeta4cat/concentration) -**Schema Reference:** [concentration](./elements/concentration.md) +**Schema Reference:** [concentration](./elements/slots/concentration.md) **Unit:** mol/L

- + 💡 Submit Term Feedback

@@ -3718,14 +3718,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000176`](https://w3id.org/nfdi4cat/voc4cat_0000176) +**CURIE:** [`VOC4CAT:0000176`](https://w3id.org/nfdi4cat/voc4cat_0000176) -**Schema Reference:** [light_wavelength](./elements/light_wavelength.md) +**Schema Reference:** [light_wavelength](./elements/slots/light_wavelength.md) **Unit:** nm

- + 💡 Submit Term Feedback

@@ -3739,14 +3739,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:scattering_angle`](https://w3id.org/nfdi4cat/catcore/scattering_angle) +**CURIE:** [`coremeta4cat:scattering_angle`](https://w3id.org/nfdi4cat/coremeta4cat/scattering_angle) -**Schema Reference:** [scattering_angle](./elements/scattering_angle.md) +**Schema Reference:** [scattering_angle](./elements/slots/scattering_angle.md) **Unit:** deg

- + 💡 Submit Term Feedback

@@ -3760,12 +3760,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:refractive_index`](https://w3id.org/nfdi4cat/catcore/refractive_index) +**CURIE:** [`coremeta4cat:refractive_index`](https://w3id.org/nfdi4cat/coremeta4cat/refractive_index) -**Schema Reference:** [refractive_index](./elements/refractive_index.md) +**Schema Reference:** [refractive_index](./elements/slots/refractive_index.md)

- + 💡 Submit Term Feedback

@@ -3781,12 +3781,12 @@ this subprofile. **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -3800,12 +3800,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:dispersant`](https://w3id.org/nfdi4cat/catcore/dispersant) +**CURIE:** [`coremeta4cat:dispersant`](https://w3id.org/nfdi4cat/coremeta4cat/dispersant) -**Schema Reference:** [dispersant](./elements/dispersant.md) +**Schema Reference:** [dispersant](./elements/slots/dispersant.md)

- + 💡 Submit Term Feedback

@@ -3819,32 +3819,32 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:measurement_duration`](https://w3id.org/nfdi4cat/catcore/measurement_duration) +**CURIE:** [`coremeta4cat:measurement_duration`](https://w3id.org/nfdi4cat/coremeta4cat/measurement_duration) -**Schema Reference:** [measurement_duration](./elements/measurement_duration.md) +**Schema Reference:** [measurement_duration](./elements/slots/measurement_duration.md) **Unit:** s

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

-ESI MS +ElectroSprayIonizationMassSpectrometry **Description:** Electrospray ionisation mass spectrometry for molecular mass and identity determination. **CURIE:** [`CHMO:0000482`](http://purl.obolibrary.org/obo/CHMO_0000482) -**Schema Reference:** [ESI_MS](./elements/ESI_MS.md) +**Schema Reference:** [ElectroSprayIonizationMassSpectrometry](./elements/classes/ElectroSprayIonizationMassSpectrometry.md) **Slots** @@ -3857,12 +3857,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000108`](https://w3id.org/nfdi4cat/voc4cat_0000108) +**CURIE:** [`VOC4CAT:0000108`](https://w3id.org/nfdi4cat/voc4cat_0000108) -**Schema Reference:** [operation_mode](./elements/operation_mode.md) +**Schema Reference:** [operation_mode](./elements/slots/operation_mode.md)

- + 💡 Submit Term Feedback

@@ -3878,12 +3878,12 @@ this subprofile. **CURIE:** [`CHMO:0002792`](http://purl.obolibrary.org/obo/CHMO_0002792) -**Schema Reference:** [spray_voltage](./elements/spray_voltage.md) +**Schema Reference:** [spray_voltage](./elements/slots/spray_voltage.md) **Unit:** kV

- + 💡 Submit Term Feedback

@@ -3897,14 +3897,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:capillary_temperature`](https://w3id.org/nfdi4cat/catcore/capillary_temperature) +**CURIE:** [`coremeta4cat:capillary_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/capillary_temperature) -**Schema Reference:** [capillary_temperature](./elements/capillary_temperature.md) +**Schema Reference:** [capillary_temperature](./elements/slots/capillary_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -3918,12 +3918,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0007246`](https://w3id.org/nfdi4cat/voc4cat_0007246) +**CURIE:** [`VOC4CAT:0007246`](https://w3id.org/nfdi4cat/voc4cat_0007246) -**Schema Reference:** [solvent_composition](./elements/solvent_composition.md) +**Schema Reference:** [solvent_composition](./elements/slots/solvent_composition.md)

- + 💡 Submit Term Feedback

@@ -3937,14 +3937,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:flow_rate`](https://w3id.org/nfdi4cat/catcore/flow_rate) +**CURIE:** [`coremeta4cat:flow_rate`](https://w3id.org/nfdi4cat/coremeta4cat/flow_rate) -**Schema Reference:** [flow_rate](./elements/flow_rate.md) +**Schema Reference:** [flow_rate](./elements/slots/flow_rate.md) **Unit:** mL/min

- + 💡 Submit Term Feedback

@@ -3958,12 +3958,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:carrier_gas`](https://w3id.org/nfdi4cat/catcore/carrier_gas) +**CURIE:** [`coremeta4cat:carrier_gas`](https://w3id.org/nfdi4cat/coremeta4cat/carrier_gas) -**Schema Reference:** [carrier_gas](./elements/carrier_gas.md) +**Schema Reference:** [carrier_gas](./elements/slots/carrier_gas.md)

- + 💡 Submit Term Feedback

@@ -3977,14 +3977,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:concentration`](https://w3id.org/nfdi4cat/catcore/concentration) +**CURIE:** [`coremeta4cat:concentration`](https://w3id.org/nfdi4cat/coremeta4cat/concentration) -**Schema Reference:** [concentration](./elements/concentration.md) +**Schema Reference:** [concentration](./elements/slots/concentration.md) **Unit:** mol/L

- + 💡 Submit Term Feedback

@@ -4000,10 +4000,10 @@ this subprofile. **CURIE:** [`AFR:0002652`](http://purl.allotrope.org/ontologies/result#AFR_0002652) -**Schema Reference:** [mz_minimum](./elements/mz_minimum.md) +**Schema Reference:** [mz_minimum](./elements/slots/mz_minimum.md)

- + 💡 Submit Term Feedback

@@ -4019,16 +4019,16 @@ this subprofile. **CURIE:** [`AFR:0002653`](http://purl.allotrope.org/ontologies/result#AFR_0002653) -**Schema Reference:** [mz_maximum](./elements/mz_maximum.md) +**Schema Reference:** [mz_maximum](./elements/slots/mz_maximum.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -4040,7 +4040,7 @@ this subprofile. **CURIE:** [`CHMO:0000497`](http://purl.obolibrary.org/obo/CHMO_0000497) -**Schema Reference:** [GCMS](./elements/GCMS.md) +**Schema Reference:** [GCMS](./elements/classes/GCMS.md) **Slots** @@ -4053,12 +4053,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:carrier_gas`](https://w3id.org/nfdi4cat/catcore/carrier_gas) +**CURIE:** [`coremeta4cat:carrier_gas`](https://w3id.org/nfdi4cat/coremeta4cat/carrier_gas) -**Schema Reference:** [carrier_gas](./elements/carrier_gas.md) +**Schema Reference:** [carrier_gas](./elements/slots/carrier_gas.md)

- + 💡 Submit Term Feedback

@@ -4072,12 +4072,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:carrier_gas_purity`](https://w3id.org/nfdi4cat/catcore/carrier_gas_purity) +**CURIE:** [`coremeta4cat:carrier_gas_purity`](https://w3id.org/nfdi4cat/coremeta4cat/carrier_gas_purity) -**Schema Reference:** [carrier_gas_purity](./elements/carrier_gas_purity.md) +**Schema Reference:** [carrier_gas_purity](./elements/slots/carrier_gas_purity.md)

- + 💡 Submit Term Feedback

@@ -4091,14 +4091,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:inlet_temperature`](https://w3id.org/nfdi4cat/catcore/inlet_temperature) +**CURIE:** [`coremeta4cat:inlet_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/inlet_temperature) -**Schema Reference:** [inlet_temperature](./elements/inlet_temperature.md) +**Schema Reference:** [inlet_temperature](./elements/slots/inlet_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -4112,14 +4112,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:minimum_oven_temperature`](https://w3id.org/nfdi4cat/catcore/minimum_oven_temperature) +**CURIE:** [`coremeta4cat:minimum_oven_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/minimum_oven_temperature) -**Schema Reference:** [minimum_oven_temperature](./elements/minimum_oven_temperature.md) +**Schema Reference:** [minimum_oven_temperature](./elements/slots/minimum_oven_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -4133,14 +4133,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:maximum_oven_temperature`](https://w3id.org/nfdi4cat/catcore/maximum_oven_temperature) +**CURIE:** [`coremeta4cat:maximum_oven_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/maximum_oven_temperature) -**Schema Reference:** [maximum_oven_temperature](./elements/maximum_oven_temperature.md) +**Schema Reference:** [maximum_oven_temperature](./elements/slots/maximum_oven_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -4154,14 +4154,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:heating_ramp`](https://w3id.org/nfdi4cat/catcore/heating_ramp) +**CURIE:** [`coremeta4cat:heating_ramp`](https://w3id.org/nfdi4cat/coremeta4cat/heating_ramp) -**Schema Reference:** [heating_ramp](./elements/heating_ramp.md) +**Schema Reference:** [heating_ramp](./elements/slots/heating_ramp.md) **Unit:** Cel/min

- + 💡 Submit Term Feedback

@@ -4175,12 +4175,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:heating_procedure`](https://w3id.org/nfdi4cat/catcore/heating_procedure) +**CURIE:** [`coremeta4cat:heating_procedure`](https://w3id.org/nfdi4cat/coremeta4cat/heating_procedure) -**Schema Reference:** [heating_procedure](./elements/heating_procedure.md) +**Schema Reference:** [heating_procedure](./elements/slots/heating_procedure.md)

- + 💡 Submit Term Feedback

@@ -4194,12 +4194,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:acquisition_mode`](https://w3id.org/nfdi4cat/catcore/acquisition_mode) +**CURIE:** [`coremeta4cat:acquisition_mode`](https://w3id.org/nfdi4cat/coremeta4cat/acquisition_mode) -**Schema Reference:** [acquisition_mode](./elements/acquisition_mode.md) +**Schema Reference:** [acquisition_mode](./elements/slots/acquisition_mode.md)

- + 💡 Submit Term Feedback

@@ -4213,14 +4213,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:solvent_delay`](https://w3id.org/nfdi4cat/catcore/solvent_delay) +**CURIE:** [`coremeta4cat:solvent_delay`](https://w3id.org/nfdi4cat/coremeta4cat/solvent_delay) -**Schema Reference:** [solvent_delay](./elements/solvent_delay.md) +**Schema Reference:** [solvent_delay](./elements/slots/solvent_delay.md) **Unit:** min

- + 💡 Submit Term Feedback

@@ -4234,12 +4234,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:trace_ion_detection`](https://w3id.org/nfdi4cat/catcore/trace_ion_detection) +**CURIE:** [`coremeta4cat:trace_ion_detection`](https://w3id.org/nfdi4cat/coremeta4cat/trace_ion_detection) -**Schema Reference:** [trace_ion_detection](./elements/trace_ion_detection.md) +**Schema Reference:** [trace_ion_detection](./elements/slots/trace_ion_detection.md)

- + 💡 Submit Term Feedback

@@ -4253,12 +4253,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:split_ratio`](https://w3id.org/nfdi4cat/catcore/split_ratio) +**CURIE:** [`coremeta4cat:split_ratio`](https://w3id.org/nfdi4cat/coremeta4cat/split_ratio) -**Schema Reference:** [split_ratio](./elements/split_ratio.md) +**Schema Reference:** [split_ratio](./elements/slots/split_ratio.md)

- + 💡 Submit Term Feedback

@@ -4272,12 +4272,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:column_type`](https://w3id.org/nfdi4cat/catcore/column_type) +**CURIE:** [`coremeta4cat:column_type`](https://w3id.org/nfdi4cat/coremeta4cat/column_type) -**Schema Reference:** [column_type](./elements/column_type.md) +**Schema Reference:** [column_type](./elements/slots/column_type.md)

- + 💡 Submit Term Feedback

@@ -4293,10 +4293,10 @@ this subprofile. **CURIE:** [`AFRL:0000011`](http://purl.allotrope.org/ontologies/role#AFRL_0000011) -**Schema Reference:** [eluent](./elements/eluent.md) +**Schema Reference:** [eluent](./elements/slots/eluent.md)

- + 💡 Submit Term Feedback

@@ -4310,14 +4310,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:flow_rate`](https://w3id.org/nfdi4cat/catcore/flow_rate) +**CURIE:** [`coremeta4cat:flow_rate`](https://w3id.org/nfdi4cat/coremeta4cat/flow_rate) -**Schema Reference:** [flow_rate](./elements/flow_rate.md) +**Schema Reference:** [flow_rate](./elements/slots/flow_rate.md) **Unit:** mL/min

- + 💡 Submit Term Feedback

@@ -4331,14 +4331,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:injection_volume`](https://w3id.org/nfdi4cat/catcore/injection_volume) +**CURIE:** [`coremeta4cat:injection_volume`](https://w3id.org/nfdi4cat/coremeta4cat/injection_volume) -**Schema Reference:** [injection_volume](./elements/injection_volume.md) +**Schema Reference:** [injection_volume](./elements/slots/injection_volume.md) **Unit:** uL

- + 💡 Submit Term Feedback

@@ -4352,12 +4352,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:external_standard`](https://w3id.org/nfdi4cat/catcore/external_standard) +**CURIE:** [`coremeta4cat:external_standard`](https://w3id.org/nfdi4cat/coremeta4cat/external_standard) -**Schema Reference:** [external_standard](./elements/external_standard.md) +**Schema Reference:** [external_standard](./elements/slots/external_standard.md)

- + 💡 Submit Term Feedback

@@ -4371,12 +4371,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:internal_standard`](https://w3id.org/nfdi4cat/catcore/internal_standard) +**CURIE:** [`coremeta4cat:internal_standard`](https://w3id.org/nfdi4cat/coremeta4cat/internal_standard) -**Schema Reference:** [internal_standard](./elements/internal_standard.md) +**Schema Reference:** [internal_standard](./elements/slots/internal_standard.md)

- + 💡 Submit Term Feedback

@@ -4392,10 +4392,10 @@ this subprofile. **CURIE:** [`AFR:0002652`](http://purl.allotrope.org/ontologies/result#AFR_0002652) -**Schema Reference:** [mz_minimum](./elements/mz_minimum.md) +**Schema Reference:** [mz_minimum](./elements/slots/mz_minimum.md)

- + 💡 Submit Term Feedback

@@ -4411,16 +4411,16 @@ this subprofile. **CURIE:** [`AFR:0002653`](http://purl.allotrope.org/ontologies/result#AFR_0002653) -**Schema Reference:** [mz_maximum](./elements/mz_maximum.md) +**Schema Reference:** [mz_maximum](./elements/slots/mz_maximum.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -4432,7 +4432,7 @@ this subprofile. **CURIE:** [`AFP:0000843`](http://purl.allotrope.org/ontologies/process#AFP_0000843) -**Schema Reference:** [SizeExclusionChromatography](./elements/SizeExclusionChromatography.md) +**Schema Reference:** [SizeExclusionChromatography](./elements/classes/SizeExclusionChromatography.md) **Slots** @@ -4447,12 +4447,12 @@ this subprofile. **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -4466,12 +4466,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:calibration_standard`](https://w3id.org/nfdi4cat/catcore/calibration_standard) +**CURIE:** [`coremeta4cat:calibration_standard`](https://w3id.org/nfdi4cat/coremeta4cat/calibration_standard) -**Schema Reference:** [calibration_standard](./elements/calibration_standard.md) +**Schema Reference:** [calibration_standard](./elements/slots/calibration_standard.md)

- + 💡 Submit Term Feedback

@@ -4485,12 +4485,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:column_type`](https://w3id.org/nfdi4cat/catcore/column_type) +**CURIE:** [`coremeta4cat:column_type`](https://w3id.org/nfdi4cat/coremeta4cat/column_type) -**Schema Reference:** [column_type](./elements/column_type.md) +**Schema Reference:** [column_type](./elements/slots/column_type.md)

- + 💡 Submit Term Feedback

@@ -4506,10 +4506,10 @@ this subprofile. **CURIE:** [`AFRL:0000011`](http://purl.allotrope.org/ontologies/role#AFRL_0000011) -**Schema Reference:** [eluent](./elements/eluent.md) +**Schema Reference:** [eluent](./elements/slots/eluent.md)

- + 💡 Submit Term Feedback

@@ -4523,14 +4523,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:flow_rate`](https://w3id.org/nfdi4cat/catcore/flow_rate) +**CURIE:** [`coremeta4cat:flow_rate`](https://w3id.org/nfdi4cat/coremeta4cat/flow_rate) -**Schema Reference:** [flow_rate](./elements/flow_rate.md) +**Schema Reference:** [flow_rate](./elements/slots/flow_rate.md) **Unit:** mL/min

- + 💡 Submit Term Feedback

@@ -4544,14 +4544,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:injection_volume`](https://w3id.org/nfdi4cat/catcore/injection_volume) +**CURIE:** [`coremeta4cat:injection_volume`](https://w3id.org/nfdi4cat/coremeta4cat/injection_volume) -**Schema Reference:** [injection_volume](./elements/injection_volume.md) +**Schema Reference:** [injection_volume](./elements/slots/injection_volume.md) **Unit:** uL

- + 💡 Submit Term Feedback

@@ -4565,12 +4565,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:external_standard`](https://w3id.org/nfdi4cat/catcore/external_standard) +**CURIE:** [`coremeta4cat:external_standard`](https://w3id.org/nfdi4cat/coremeta4cat/external_standard) -**Schema Reference:** [external_standard](./elements/external_standard.md) +**Schema Reference:** [external_standard](./elements/slots/external_standard.md)

- + 💡 Submit Term Feedback

@@ -4584,30 +4584,30 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:internal_standard`](https://w3id.org/nfdi4cat/catcore/internal_standard) +**CURIE:** [`coremeta4cat:internal_standard`](https://w3id.org/nfdi4cat/coremeta4cat/internal_standard) -**Schema Reference:** [internal_standard](./elements/internal_standard.md) +**Schema Reference:** [internal_standard](./elements/slots/internal_standard.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

-HPLC MS +HighPerformanceLiquidChromatographyMassSpectrometry **Description:** High-performance liquid chromatography-mass spectrometry for compound identification and quantification. **CURIE:** [`CHMO:0000796`](http://purl.obolibrary.org/obo/CHMO_0000796) -**Schema Reference:** [HPLC_MS](./elements/HPLC_MS.md) +**Schema Reference:** [HighPerformanceLiquidChromatographyMassSpectrometry](./elements/classes/HighPerformanceLiquidChromatographyMassSpectrometry.md) **Slots** @@ -4620,12 +4620,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:gradient_program`](https://w3id.org/nfdi4cat/catcore/gradient_program) +**CURIE:** [`coremeta4cat:gradient_program`](https://w3id.org/nfdi4cat/coremeta4cat/gradient_program) -**Schema Reference:** [gradient_program](./elements/gradient_program.md) +**Schema Reference:** [gradient_program](./elements/slots/gradient_program.md)

- + 💡 Submit Term Feedback

@@ -4639,12 +4639,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:ionization_mode`](https://w3id.org/nfdi4cat/catcore/ionization_mode) +**CURIE:** [`coremeta4cat:ionization_mode`](https://w3id.org/nfdi4cat/coremeta4cat/ionization_mode) -**Schema Reference:** [ionization_mode](./elements/ionization_mode.md) +**Schema Reference:** [ionization_mode](./elements/slots/ionization_mode.md)

- + 💡 Submit Term Feedback

@@ -4660,12 +4660,12 @@ this subprofile. **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -4679,12 +4679,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:column_type`](https://w3id.org/nfdi4cat/catcore/column_type) +**CURIE:** [`coremeta4cat:column_type`](https://w3id.org/nfdi4cat/coremeta4cat/column_type) -**Schema Reference:** [column_type](./elements/column_type.md) +**Schema Reference:** [column_type](./elements/slots/column_type.md)

- + 💡 Submit Term Feedback

@@ -4700,10 +4700,10 @@ this subprofile. **CURIE:** [`AFRL:0000011`](http://purl.allotrope.org/ontologies/role#AFRL_0000011) -**Schema Reference:** [eluent](./elements/eluent.md) +**Schema Reference:** [eluent](./elements/slots/eluent.md)

- + 💡 Submit Term Feedback

@@ -4717,14 +4717,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:flow_rate`](https://w3id.org/nfdi4cat/catcore/flow_rate) +**CURIE:** [`coremeta4cat:flow_rate`](https://w3id.org/nfdi4cat/coremeta4cat/flow_rate) -**Schema Reference:** [flow_rate](./elements/flow_rate.md) +**Schema Reference:** [flow_rate](./elements/slots/flow_rate.md) **Unit:** mL/min

- + 💡 Submit Term Feedback

@@ -4738,14 +4738,14 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:injection_volume`](https://w3id.org/nfdi4cat/catcore/injection_volume) +**CURIE:** [`coremeta4cat:injection_volume`](https://w3id.org/nfdi4cat/coremeta4cat/injection_volume) -**Schema Reference:** [injection_volume](./elements/injection_volume.md) +**Schema Reference:** [injection_volume](./elements/slots/injection_volume.md) **Unit:** uL

- + 💡 Submit Term Feedback

@@ -4759,12 +4759,12 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:external_standard`](https://w3id.org/nfdi4cat/catcore/external_standard) +**CURIE:** [`coremeta4cat:external_standard`](https://w3id.org/nfdi4cat/coremeta4cat/external_standard) -**Schema Reference:** [external_standard](./elements/external_standard.md) +**Schema Reference:** [external_standard](./elements/slots/external_standard.md)

- + 💡 Submit Term Feedback

@@ -4778,24 +4778,24 @@ this subprofile. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:internal_standard`](https://w3id.org/nfdi4cat/catcore/internal_standard) +**CURIE:** [`coremeta4cat:internal_standard`](https://w3id.org/nfdi4cat/coremeta4cat/internal_standard) -**Schema Reference:** [internal_standard](./elements/internal_standard.md) +**Schema Reference:** [internal_standard](./elements/slots/internal_standard.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

diff --git a/docs/coremeta4cat-users.md b/docs/coremeta4cat-users.md index afbf63453..712386ce2 100644 --- a/docs/coremeta4cat-users.md +++ b/docs/coremeta4cat-users.md @@ -17,7 +17,11 @@ This page lists projects, data repositories, and communities that have adopted C ## NFDI4Cat -![NFDI4Cat Logo](images/nfdi4cat-logo.png) +
+ + nfdi4cat-logo + +
CoreMeta4Cat is developed within the [NFDI4Cat](https://nfdi4cat.org) initiative — the National Research Data Infrastructure consortium for catalysis sciences in Germany. NFDI4Cat brings together universities, research institutions, and industrial partners to build shared data infrastructure for the catalysis community. diff --git a/docs/index.md b/docs/index.md index 990d819ea..8091d70a7 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,26 +1,70 @@ # CoreMeta4Cat -Robust data-sharing guidelines are essential in catalysis research to guarantee high-quality metadata, reproducibility, and the sustained progress of digital catalysis. To establish community-accepted guidelines for reporting metadata in this field, CoreMeta4Cat (an initiative under NFDI4Cat) specifies the minimum information that go beyond the conventional field-independent metadata, and should be reported with the catalysis research data. This guideline should help users to handle and standarise data in this versatile research field based on the FAIR principle (F-indable, A-ccessible, I-nteroperable, R-eusable). Integration of CoreMeta4Cat into data repositories ensures the availability of high-quality metadata and facilitates efficient access to and querying of published datasets. -The terminology employed in CoreMeta4Cat is based on Voc4Cat (developed under NFDI4Cat), which supports standardized semantic representation and advances ontology development efforts. Terms not yet covered by Voc4Cat are provisionally defined within the model and incorporated as the vocabulary is updated. Structurally, the model consists of two parts: “Inner CoreMeta4Cat” and “Expanded CoreMeta4Cat”. Within these layers, data fields are organized hierarchically, following a parent–child relationship. The inner CoreMeta4Cat describes the most fundamental metadata which is mandatory to describe the research on the most general level with the goal of facilitating a categorization of the research data and help researchers to make their data findable. The expanded CoreMeta4Cat contains the data classes 'Synthesis', 'Reaction', 'Characterization' and 'Simulation'. The data fields are classified as “Mandatory,” “Recommended,” and “Optional” to reflect their relative priority. This classification helps users identify the minimum required metadata necessary to ensure data quality, while also allowing the inclusion of additional information that, although not mandatory, further enhances the value and usability of the data. Moreover, this prioritization facilitates the efficient handling and management of the large volumes of metadata generated by experimental devices and computation. -The CoreMeta4Cat model is a “living organism” that evolves through user feedback on the addition, removal, and modification of data fields, for which provisions are provided on this webpage through the “Submit Term Feedback” button. All feedback and suggestions are reviewed by the CoreMeta4Cat development team and incorporated as appropriate based on their relevance and impact. +**CoreMeta4Cat** is a community-driven metadata initiative under [NFDI4Cat](https://nfdi4cat.org) that defines the minimum information required for reporting catalysis research data. Built on the [FAIR principles](https://www.go-fair.org/fair-principles/) — **F**indable, **A**ccessible, **I**nteroperable, and **R**eusable — it provides a shared language for researchers to describe, share, and discover catalysis datasets across institutions and disciplines. +The model draws its terminology from [Voc4Cat](https://nfdi4cat.github.io/voc4cat/), NFDI4Cat's controlled vocabulary for catalysis, ensuring standardized semantic representation. Fields are classified as **Mandatory**, **Recommended**, or **Optional**, helping users meet minimum quality thresholds while leaving room for richer annotation. +> CoreMeta4Cat is a living standard. Community feedback — submitted via the **Submit Term Feedback** button — continuously shapes the addition, revision, and removal of data fields. -image +
+ CoreMeta4Cat model overview +
+## Getting Started -Inner CoreMeta4Cat: The inner CoreMeta4Cat defines the most fundamental metadata, which are mandatory for describing research at a general level. Its goal is to facilitate consistent categorization of research data and assist researchers in making their datasets more easily findable. The data classes in the inner CoreMeta4Cat consists of Catalysis Research Field (Mandatory), Reaction type (Mandatory), Active Site (Recommended) and Identifier (Recommended). -Catalysis Research Field: This section describes the different types of catalysis, including homogeneous, heterogeneous, electrocatalysis, and hybrid catalysis. It also provides provisions for specifying other types of catalysis that do not fall within these categories. -Reaction type: The catalytic reaction under investigation (examples: hydrogenation, oxidation, hydroformylation, etc.) -Active Site: It is recommended to specify the primary species in the catalyst responsible for catalytic activity. The expected value for this field is a text entry identifying a molecule, element, or other relevant species, with the option to provide multiple entries if applicable. -Identifier: It is the identification of the catalyst through user defined labels. +Choose the approach that fits your workflow. Both paths are fully compatible with the CoreMeta4Cat standard. +
+ + +
+## Excel Template + +The quickest way to get started. Download the pre-structured Excel template, fill in your metadata fields, and submit or archive your dataset — no technical setup required. + +**Best for:** Lab researchers, one-off submissions, teams new to structured metadata. + +[→ head over to getting started ](getting-started.md#level-1-the-vocabulary-reference-workbook) +
+ + +
+## LinkML Schema + +Semantically enrich your data using the CoreMeta4Cat LinkML schema. Ideal for programmatic workflows, repository integration, and FAIR-compliant data pipelines. + +
+ +- **[ Reaction](#reaction)** + +- **[ Synthesis](#synthesis)** + +- **[ Characterization](#characterization)** + +- **[ Simulation](#simulation)** + + - +
+
+ + +## Model Structure + +CoreMeta4Cat is organized in two concentric layers. The **Inner CoreMeta4Cat** captures the essential metadata every catalysis dataset must provide. The **Expanded CoreMeta4Cat** adds four domain-specific groups covering the full research lifecycle. + +### Inner CoreMeta4Cat + +The inner layer defines mandatory baseline metadata, enabling consistent categorization and discoverability of research data across repositories. + +| Field | Priority | Description | +|---|---|---| +| **Catalysis Research Field** | Mandatory | Type of catalysis: homogeneous, heterogeneous, electrocatalysis, hybrid, or other | +| **Reaction Type** | Mandatory | The catalytic reaction under investigation (e.g. hydrogenation, oxidation, hydroformylation) | +| **Active Site** | Recommended | Primary species responsible for catalytic activity — molecule, element, or other species | +| **Identifier** | Recommended | User-defined label(s) for identifying the catalyst | + ## [Reaction](reaction.md) @@ -71,6 +115,6 @@ The Simulation metadata group specifies the essential information for reporting ## Schema -The [Schema documentation](./elements/overview.md) for the metadata model written in LinkML Format can be found [here](elements/index.md) +The [Schema documentation](./elements/overview.md) for the metadata model written in LinkML Format can be found [here](elements/overview.md) diff --git a/docs/overview.md b/docs/overview.md index 44d346fdf..26e642ddb 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -156,6 +156,6 @@ The **Simulation** pillar covers four major computational method classes, each a ## Source code -The LinkML schema, build scripts, and documentation source are on GitHub: [HendrikBorgelt/CoreMeta4Cat](https://github.com/HendrikBorgelt/CoreMeta4Cat) +The LinkML schema, build scripts, and documentation source are on GitHub: [HendrikBorgelt/CoreMeta4Cat](https://github.com/nfdi4cat/CoreMeta4Cat) The schema is built as a domain-specific application profile on top of DCAT-AP-PLUS. The base layer is maintained by [NFDI4Cat](https://nfdi4cat.org). diff --git a/docs/reaction.md b/docs/reaction.md index 06563419c..df2dd9b08 100644 --- a/docs/reaction.md +++ b/docs/reaction.md @@ -33,42 +33,42 @@ Core fields include reactor design type, operational parameters, and product ide ## Slots
-catalyst quantity (Required, Multivalued) +catalyst quantity (Mandatory, Multivalued) **Description:** Mass of catalyst loaded into the reactor. **Data Type:** float -**Cardinality:** Required, Multivalued +**Cardinality:** Mandatory, Multivalued -**CURIE:** [`catcore:catalyst_quantity`](https://w3id.org/nfdi4cat/catcore/catalyst_quantity) +**CURIE:** [`coremeta4cat:catalyst_quantity`](https://w3id.org/nfdi4cat/coremeta4cat/catalyst_quantity) -**Schema Reference:** [catalyst_quantity](./elements/catalyst_quantity.md) +**Schema Reference:** [catalyst_quantity](./elements/slots/catalyst_quantity.md) **Unit:** g

- + 💡 Submit Term Feedback

-reactant (Required, Multivalued) +reactant (Mandatory, Multivalued) **Description:** Reactant(s) used in the reaction. Provide compound name, CAS number, or SMILES. For feeds, include composition and flow rate where known. **Data Type:** string -**Cardinality:** Required, Multivalued +**Cardinality:** Mandatory, Multivalued -**CURIE:** [`voc4cat:0000101`](https://w3id.org/nfdi4cat/voc4cat_0000101) +**CURIE:** [`VOC4CAT:0000101`](https://w3id.org/nfdi4cat/voc4cat_0000101) -**Schema Reference:** [reactant](./elements/reactant.md) +**Schema Reference:** [reactant](./elements/slots/reactant.md)

- + 💡 Submit Term Feedback

@@ -83,12 +83,12 @@ For heterogeneous catalysts, use voc4cat terms where available. **Cardinality:** Recommended, Multivalued -**CURIE:** [`voc4cat:0007014`](https://w3id.org/nfdi4cat/voc4cat_0007014) +**CURIE:** [`VOC4CAT:0007014`](https://w3id.org/nfdi4cat/voc4cat_0007014) -**Schema Reference:** [catalyst_type](./elements/catalyst_type.md) +**Schema Reference:** [catalyst_type](./elements/slots/catalyst_type.md)

- + 💡 Submit Term Feedback

@@ -103,12 +103,12 @@ as a string range (e.g. "200–400 °C") or a single set-point. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0007032`](https://w3id.org/nfdi4cat/voc4cat_0007032) +**CURIE:** [`VOC4CAT:0007032`](https://w3id.org/nfdi4cat/voc4cat_0007032) -**Schema Reference:** [reactor_temperature_range](./elements/reactor_temperature_range.md) +**Schema Reference:** [reactor_temperature_range](./elements/slots/reactor_temperature_range.md)

- + 💡 Submit Term Feedback

@@ -122,12 +122,12 @@ as a string range (e.g. "200–400 °C") or a single set-point. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:atmosphere`](https://w3id.org/nfdi4cat/catcore/atmosphere) +**CURIE:** [`coremeta4cat:atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/atmosphere) -**Schema Reference:** [atmosphere](./elements/atmosphere.md) +**Schema Reference:** [atmosphere](./elements/slots/atmosphere.md)

- + 💡 Submit Term Feedback

@@ -141,14 +141,14 @@ as a string range (e.g. "200–400 °C") or a single set-point. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000118`](https://w3id.org/nfdi4cat/voc4cat_0000118) +**CURIE:** [`VOC4CAT:0000118`](https://w3id.org/nfdi4cat/voc4cat_0000118) -**Schema Reference:** [experiment_pressure](./elements/experiment_pressure.md) +**Schema Reference:** [experiment_pressure](./elements/slots/experiment_pressure.md) **Unit:** bar

- + 💡 Submit Term Feedback

@@ -163,12 +163,12 @@ Record as a string; for individual component concentrations use reactant. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:feed_composition_range`](https://w3id.org/nfdi4cat/catcore/feed_composition_range) +**CURIE:** [`coremeta4cat:feed_composition_range`](https://w3id.org/nfdi4cat/coremeta4cat/feed_composition_range) -**Schema Reference:** [feed_composition_range](./elements/feed_composition_range.md) +**Schema Reference:** [feed_composition_range](./elements/slots/feed_composition_range.md)

- + 💡 Submit Term Feedback

@@ -184,27 +184,27 @@ Record as a string; for individual component concentrations use reactant. **CURIE:** [`AFR:0002455`](http://purl.allotrope.org/ontologies/result#AFR_0002455) -**Schema Reference:** [experiment_duration](./elements/experiment_duration.md) +**Schema Reference:** [experiment_duration](./elements/slots/experiment_duration.md) **Unit:** h

- + 💡 Submit Term Feedback

-carried out by (Required, Multivalued) +carried out by (Mandatory, Multivalued) **Description:** The reactor in which the Reaction takes place, provided as a ReactorDesignType (Device) instance. **Data Type:** ReactorDesignType -**Cardinality:** Required, Multivalued +**Cardinality:** Mandatory, Multivalued -**Schema Reference:** [carried_out_by](./elements/carried_out_by.md) +**Schema Reference:** [carried_out_by](./elements/slots/carried_out_by.md) **Data Type Class Details:** @@ -217,12 +217,12 @@ ReactorDesignType (Device) instance. Concrete subclasses specify the reactor geometry and operating mode. Linked from Reaction via carried_out_by. -**CURIE:** [`voc4cat:0007018`](https://w3id.org/nfdi4cat/voc4cat_0007018) +**CURIE:** [`VOC4CAT:0007018`](https://w3id.org/nfdi4cat/voc4cat_0007018) -**Schema Reference:** [ReactorDesignType](./elements/ReactorDesignType.md) +**Schema Reference:** [ReactorDesignType](./elements/classes/ReactorDesignType.md)

- + 💡 Submit Term Feedback

@@ -235,12 +235,12 @@ Linked from Reaction via carried_out_by. **Description:** Electrochemical reactor used in electrocatalytic experiments, including H-cells, flow cells, and membrane electrode assemblies. -**CURIE:** [`voc4cat:0000193`](https://w3id.org/nfdi4cat/voc4cat_0000193) +**CURIE:** [`VOC4CAT:0000193`](https://w3id.org/nfdi4cat/voc4cat_0000193) -**Schema Reference:** [ElectrochemicalReactor](./elements/ElectrochemicalReactor.md) +**Schema Reference:** [ElectrochemicalReactor](./elements/classes/ElectrochemicalReactor.md)

- + 💡 Submit Term Feedback

@@ -251,12 +251,12 @@ H-cells, flow cells, and membrane electrode assemblies. **Description:** Continuous stirred tank reactor (CSTR) — a well-mixed, continuous-flow reactor operating at steady state. -**CURIE:** [`voc4cat:0007019`](https://w3id.org/nfdi4cat/voc4cat_0007019) +**CURIE:** [`VOC4CAT:0007019`](https://w3id.org/nfdi4cat/voc4cat_0007019) -**Schema Reference:** [CSTR](./elements/CSTR.md) +**Schema Reference:** [CSTR](./elements/classes/CSTR.md)

- + 💡 Submit Term Feedback

@@ -267,12 +267,12 @@ reactor operating at steady state. **Description:** Plug flow reactor (PFR) — a tubular reactor in which reactant composition varies along the axis with no axial mixing. -**CURIE:** [`voc4cat:0007102`](https://w3id.org/nfdi4cat/voc4cat_0007102) +**CURIE:** [`VOC4CAT:0007102`](https://w3id.org/nfdi4cat/voc4cat_0007102) -**Schema Reference:** [PlugFlowReactor](./elements/PlugFlowReactor.md) +**Schema Reference:** [PlugFlowReactor](./elements/classes/PlugFlowReactor.md)

- + 💡 Submit Term Feedback

@@ -285,10 +285,10 @@ elevated temperature and/or pressure. **CURIE:** [`NCIT:C93052`](http://purl.obolibrary.org/obo/NCIT_C93052) -**Schema Reference:** [Autoclave](./elements/Autoclave.md) +**Schema Reference:** [Autoclave](./elements/classes/Autoclave.md)

- + 💡 Submit Term Feedback

@@ -299,12 +299,12 @@ elevated temperature and/or pressure. **Description:** Slurry reactor — a three-phase reactor in which catalyst particles are suspended in a liquid phase through which gas is bubbled. -**CURIE:** [`catcore:SlurryReactor`](https://w3id.org/nfdi4cat/catcore/SlurryReactor) +**CURIE:** [`coremeta4cat:SlurryReactor`](https://w3id.org/nfdi4cat/coremeta4cat/SlurryReactor) -**Schema Reference:** [SlurryReactor](./elements/SlurryReactor.md) +**Schema Reference:** [SlurryReactor](./elements/classes/SlurryReactor.md)

- + 💡 Submit Term Feedback

@@ -316,12 +316,12 @@ suspended in a liquid phase through which gas is bubbled. in the sub-millimetre range, enabling precise thermal control and rapid screening. -**CURIE:** [`voc4cat:0000234`](https://w3id.org/nfdi4cat/voc4cat_0000234) +**CURIE:** [`VOC4CAT:0000234`](https://w3id.org/nfdi4cat/voc4cat_0000234) -**Schema Reference:** [Microreactor](./elements/Microreactor.md) +**Schema Reference:** [Microreactor](./elements/classes/Microreactor.md)

- + 💡 Submit Term Feedback

@@ -332,12 +332,12 @@ screening. **Description:** Fixed bed reactor — a tubular reactor packed with a stationary catalyst bed. The most common reactor type in heterogeneous catalysis testing. -**CURIE:** [`catcore:FixedBedReactor`](https://w3id.org/nfdi4cat/catcore/FixedBedReactor) +**CURIE:** [`coremeta4cat:FixedBedReactor`](https://w3id.org/nfdi4cat/coremeta4cat/FixedBedReactor) -**Schema Reference:** [FixedBedReactor](./elements/FixedBedReactor.md) +**Schema Reference:** [FixedBedReactor](./elements/classes/FixedBedReactor.md)

- + 💡 Submit Term Feedback

@@ -348,9 +348,9 @@ The most common reactor type in heterogeneous catalysis testing. **Description:** Fluidized bed reactor — a reactor in which the catalyst particles are suspended in an upward-flowing gas or liquid stream. -**CURIE:** [`catcore:FluidizedBedReactor`](https://w3id.org/nfdi4cat/catcore/FluidizedBedReactor) +**CURIE:** [`coremeta4cat:FluidizedBedReactor`](https://w3id.org/nfdi4cat/coremeta4cat/FluidizedBedReactor) -**Schema Reference:** [FluidizedBedReactor](./elements/FluidizedBedReactor.md) +**Schema Reference:** [FluidizedBedReactor](./elements/classes/FluidizedBedReactor.md) **Slots** @@ -363,12 +363,12 @@ suspended in an upward-flowing gas or liquid stream. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:gas_distributor_type`](https://w3id.org/nfdi4cat/catcore/gas_distributor_type) +**CURIE:** [`coremeta4cat:gas_distributor_type`](https://w3id.org/nfdi4cat/coremeta4cat/gas_distributor_type) -**Schema Reference:** [gas_distributor_type](./elements/gas_distributor_type.md) +**Schema Reference:** [gas_distributor_type](./elements/slots/gas_distributor_type.md)

- + 💡 Submit Term Feedback

@@ -382,14 +382,14 @@ suspended in an upward-flowing gas or liquid stream. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:bed_expansion_height`](https://w3id.org/nfdi4cat/catcore/bed_expansion_height) +**CURIE:** [`coremeta4cat:bed_expansion_height`](https://w3id.org/nfdi4cat/coremeta4cat/bed_expansion_height) -**Schema Reference:** [bed_expansion_height](./elements/bed_expansion_height.md) +**Schema Reference:** [bed_expansion_height](./elements/slots/bed_expansion_height.md) **Unit:** cm

- + 💡 Submit Term Feedback

@@ -403,41 +403,41 @@ suspended in an upward-flowing gas or liquid stream. **Cardinality:** Optional -**CURIE:** [`catcore:bubble_size_distribution`](https://w3id.org/nfdi4cat/catcore/bubble_size_distribution) +**CURIE:** [`coremeta4cat:bubble_size_distribution`](https://w3id.org/nfdi4cat/coremeta4cat/bubble_size_distribution) -**Schema Reference:** [bubble_size_distribution](./elements/bubble_size_distribution.md) +**Schema Reference:** [bubble_size_distribution](./elements/slots/bubble_size_distribution.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

-product identification method (Required, Multivalued) +product identification method (Mandatory, Multivalued) **Description:** The analytical method used to identify and/or quantify reaction products. Should reference a CharacterizationTechnique instance (e.g. a GCMS or -HPLC_MS object from catcore_characterization_ap). The abstract stub +HPLC_MS object from coremeta4cat_characterization_ap). The abstract stub ProductIdentificationMethod is retained for backward compatibility. **Data Type:** ProductIdentificationMethod -**Cardinality:** Required, Multivalued +**Cardinality:** Mandatory, Multivalued -**Schema Reference:** [product_identification_method](./elements/product_identification_method.md) +**Schema Reference:** [product_identification_method](./elements/slots/product_identification_method.md) **Data Type Class Details:** @@ -448,24 +448,24 @@ ProductIdentificationMethod is retained for backward compatibility. **Description:** Abstract Plan representing the method used to identify and quantify reaction products. In practice, users should reference a concrete CharacterizationTechnique -subclass from catcore_characterization_ap (e.g. GCMS, HPLC_MS, NMRSpectroscopy). +subclass from coremeta4cat_characterization_ap (e.g. GCMS, HPLC_MS, NMRSpectroscopy). This abstract class is retained for backward compatibility with the original -CatCore monolith. It is a subclass of Plan (prov:Plan / OBI:0000272) so that +CoreMeta4Cat monolith. It is a subclass of Plan (prov:Plan / OBI:0000272) so that it can participate in the realized_plan slot if needed. **CURIE:** [`OBI:0000272`](http://purl.obolibrary.org/obo/OBI_0000272) -**Schema Reference:** [ProductIdentificationMethod](./elements/ProductIdentificationMethod.md) +**Schema Reference:** [ProductIdentificationMethod](./elements/classes/ProductIdentificationMethod.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

diff --git a/docs/schema/catcore.yaml b/docs/schema/coremeta4cat.yaml similarity index 83% rename from docs/schema/catcore.yaml rename to docs/schema/coremeta4cat.yaml index a0d59392c..3f6072e5c 100644 --- a/docs/schema/catcore.yaml +++ b/docs/schema/coremeta4cat.yaml @@ -1,54 +1,55 @@ -name: catcore-metadata -description: "The CatCore describes the minimum information which must be reported\ +name: coremeta4cat-metadata +description: "The CoreMeta4Cat describes the minimum information which must be reported\ \ with research\ndata concerning the field of catalysis. This guideline helps to\ \ handle and\nstandardize data based on the FAIR principle (Findable, Accessible,\ - \ Interoperable,\nReusable).\n\nArchitecture\n------------\nCatCore follows the\ - \ DCAT-AP-PLUS design patterns (see design-patterns.md):\n\n- The entry point is\ - \ the dcat:Dataset, extended here as CatalysisDataset.\n The catalysis research\ + \ Interoperable,\nReusable).\n\nArchitecture\n------------\nCoreMeta4Cat follows\ + \ the DCAT-AP-PLUS design patterns (see design-patterns.md):\n\n- The entry point\ + \ is the dcat:Dataset, extended here as CatalysisDataset.\n The catalysis research\ \ field is expressed via rdf_type (ClassifierMixin,\n Pattern 3) using voc4cat\ \ terms \u2014 analogous to how NMRSpectroscopy uses\n rdf_type: CHMO:0000613 to\ - \ classify the measurement type.\n\n- The four CatCore pillars are modelled as DCAT-AP-PLUS\ - \ Activity subclasses,\n following the same pattern as NMRSpectroscopy (is_a: DataGeneratingActivity):\n\ - \n Synthesis --> is_a: DataGeneratingActivity\n Produces\ - \ a catalyst (MaterialSample) as had_output_entity.\n The PreparationMethod\ - \ (protocol) is linked via realized_plan.\n\n Characterization --> is_a: DataGeneratingActivity\n\ - \ Produces measurement data about a catalyst or reaction.\n\ - \ The catalyst/sample is the evaluated_entity.\n \ - \ The CharacterizationTechnique is linked via realized_plan.\n\n \ - \ Reaction --> is_a: EvaluatedActivity\n The catalytic\ - \ process being studied, NOT a data-generating\n activity itself.\ - \ Characterization datasets are about this.\n Analogous to the\ - \ reaction being observed in a reaction\n monitoring dataset.\n\ - \n Simulation --> is_a: DataGeneratingActivity\n Generates\ - \ computational data about a catalyst or reaction.\n The SimulationMethod\ - \ (protocol) is linked via realized_plan.\n The simulation software\ - \ is carried_out_by: Software.\n\n- Catalyst samples and precursor materials are\ - \ modelled as MaterialSample\n (from material_entities_ap), which is an EvaluatedEntity.\n\ - \n- Reactors and instruments are modelled as Device (from dcat_ap_plus), which\n\ - \ is an AgenticEntity carried_out_by the relevant Activity.\n\n- PreparationMethod,\ - \ CharacterizationTechnique, and SimulationMethod are\n modelled as Plan (from\ - \ dcat_ap_plus), the protocol realized by the Activity.\n\nThis file is the top-level\ - \ aggregator. It imports catcore_common (shared\nslots and enums) and the four subprofile\ - \ modules.\n\nFull import hierarchy:\n catcore.yaml (this file \u2014 aggregator\ - \ + CatalysisDataset entry point)\n +-- catcore_common.yaml (shared slots,\ - \ enums)\n +-- chem_dcat_ap (SubstanceSample, ChemicalSubstance,\ - \ \u2026)\n +-- chemical_reaction_ap\n +-- chemical_entities_ap\n\ - \ +-- material_entities_ap\n \ - \ +-- dcat_ap_plus (DCAT-AP-PLUS base)\n +-- catcore_synthesis_ap \ - \ (Step 3 \u2014 Synthesis, PreparationMethod, mixins)\n +-- catcore_characterization_ap\ - \ (Step 4 \u2014 Characterization, 24 techniques, mixins)\n +-- catcore_reaction_ap\ - \ (Step 5 \u2014 Reaction, 8 ReactorDesignTypes)\n +-- catcore_simulation_ap\ - \ (Step 6 \u2014 Simulation, 4 methods, 12 properties, mixins)" -title: CatCore Metadata Reference Model -id: https://w3id.org/nfdi4cat/catcore + \ classify the measurement type.\n\n- The four CoreMeta4Cat pillars are modelled\ + \ as DCAT-AP-PLUS Activity subclasses,\n following the same pattern as NMRSpectroscopy\ + \ (is_a: DataGeneratingActivity):\n\n Synthesis --> is_a: DataGeneratingActivity\n\ + \ Produces a catalyst (MaterialSample) as had_output_entity.\n\ + \ The PreparationMethod (protocol) is linked via realized_plan.\n\ + \n Characterization --> is_a: DataGeneratingActivity\n \ + \ Produces measurement data about a catalyst or reaction.\n \ + \ The catalyst/sample is the evaluated_entity.\n The CharacterizationTechnique\ + \ is linked via realized_plan.\n\n Reaction --> is_a: EvaluatedActivity\n\ + \ The catalytic process being studied, NOT a data-generating\n\ + \ activity itself. Characterization datasets are about this.\n\ + \ Analogous to the reaction being observed in a reaction\n \ + \ monitoring dataset.\n\n Simulation --> is_a: DataGeneratingActivity\n\ + \ Generates computational data about a catalyst or reaction.\n\ + \ The SimulationMethod (protocol) is linked via realized_plan.\n\ + \ The simulation software is carried_out_by: Software.\n\n-\ + \ Catalyst samples and precursor materials are modelled as MaterialSample\n (from\ + \ material_entities_ap), which is an EvaluatedEntity.\n\n- Reactors and instruments\ + \ are modelled as Device (from dcat_ap_plus), which\n is an AgenticEntity carried_out_by\ + \ the relevant Activity.\n\n- PreparationMethod, CharacterizationTechnique, and\ + \ SimulationMethod are\n modelled as Plan (from dcat_ap_plus), the protocol realized\ + \ by the Activity.\n\nThis file is the top-level aggregator. It imports coremeta4cat_common\ + \ (shared\nslots and enums) and the four subprofile modules.\n\nFull import hierarchy:\n\ + \ coremeta4cat.yaml (this file \u2014 aggregator + CatalysisDataset entry point)\n\ + \ +-- coremeta4cat_common.yaml (shared slots, enums)\n +-- chem_dcat_ap\ + \ (SubstanceSample, ChemicalSubstance, \u2026)\n +-- chemical_reaction_ap\n\ + \ +-- chemical_entities_ap\n +--\ + \ material_entities_ap\n +-- dcat_ap_plus (DCAT-AP-PLUS\ + \ base)\n +-- coremeta4cat_synthesis_ap (Step 3 \u2014 Synthesis, PreparationMethod,\ + \ mixins)\n +-- coremeta4cat_characterization_ap (Step 4 \u2014 Characterization,\ + \ 24 techniques, mixins)\n +-- coremeta4cat_reaction_ap (Step 5 \u2014\ + \ Reaction, 8 ReactorDesignTypes)\n +-- coremeta4cat_simulation_ap (Step\ + \ 6 \u2014 Simulation, 4 methods, 12 properties, mixins)" +title: CoreMeta4cat Metadata Reference Model +id: https://w3id.org/nfdi4cat/coremeta4cat version: 1.0.0 imports: - linkml:types -- catcore_common -- catcore_synthesis_ap -- catcore_characterization_ap -- catcore_reaction_ap -- catcore_simulation_ap +- coremeta4cat_common +- coremeta4cat_synthesis_ap +- coremeta4cat_characterization_ap +- coremeta4cat_reaction_ap +- coremeta4cat_simulation_ap - dcat_4c_ap - dcatapplus:latest/schema/dcat_ap_plus - chemical_entities_ap @@ -56,9 +57,9 @@ imports: - material_entities_ap license: CC-BY-4.0 prefixes: - catcore: - prefix_prefix: catcore - prefix_reference: https://w3id.org/nfdi4cat/catcore/ + coremeta4cat: + prefix_prefix: coremeta4cat + prefix_reference: https://w3id.org/nfdi4cat/coremeta4cat/ VOC4CAT: prefix_prefix: VOC4CAT prefix_reference: https://w3id.org/nfdi4cat/voc4cat_ @@ -67,7 +68,7 @@ prefixes: prefix_reference: https://nfdi-de.github.io/chem-dcat-ap/ dcatapplus: prefix_prefix: dcatapplus - prefix_reference: https://nfdi-de.github.io/dcat-ap-plus/ + prefix_reference: https://w3id.org/nfdi-de/dcat-ap-plus/ linkml: prefix_prefix: linkml prefix_reference: https://w3id.org/linkml/ @@ -95,7 +96,7 @@ prefixes: NCIT: prefix_prefix: NCIT prefix_reference: http://purl.obolibrary.org/obo/NCIT_ -default_prefix: catcore +default_prefix: coremeta4cat default_range: string subsets: domain_agnostic_core: @@ -403,7 +404,7 @@ types: enums: CatalysisResearchFieldEnum: name: CatalysisResearchFieldEnum - definition_uri: https://w3id.org/nfdi4cat/catcore/CatalysisResearchFieldEnum + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/CatalysisResearchFieldEnum description: 'Enumeration of catalysis research fields. Intended for use via rdf_type on a dcat:Dataset (via ClassifierMixin) @@ -411,7 +412,7 @@ enums: to classify which field of catalysis the dataset belongs to, following DCAT-AP-PLUS Pattern 3 (Flexible classification).' - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ permissible_values: heterogeneous_catalysis: text: heterogeneous_catalysis @@ -440,9 +441,9 @@ enums: description: Other catalysis research field not covered by the above terms. ImpregnationTypeEnum: name: ImpregnationTypeEnum - definition_uri: https://w3id.org/nfdi4cat/catcore/ImpregnationTypeEnum + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ImpregnationTypeEnum description: Enumeration of impregnation types used in catalyst synthesis. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ permissible_values: wet_impregnation: text: wet_impregnation @@ -460,10 +461,10 @@ enums: description: Other impregnation type. SampleStateEnum: name: SampleStateEnum - definition_uri: https://w3id.org/nfdi4cat/catcore/SampleStateEnum + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/SampleStateEnum description: Enumeration of physical states in which a catalyst sample may be present. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ permissible_values: solid: text: solid @@ -655,12 +656,12 @@ enums: slots: atmosphere: name: atmosphere - definition_uri: https://w3id.org/nfdi4cat/catcore/atmosphere + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/atmosphere description: Gaseous environment or atmospheric conditions during a process. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:atmosphere - slot_uri: catcore:atmosphere + - coremeta4cat:atmosphere + slot_uri: coremeta4cat:atmosphere owner: Reaction domain_of: - ThermalSynthesisMixin @@ -678,9 +679,9 @@ slots: multivalued: true temperature: name: temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/temperature description: Temperature during a process or measurement. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - AFR:0001584 slot_uri: AFR:0001584 @@ -698,7 +699,7 @@ slots: - NMRSpectroscopy - DynamicLightScattering - SizeExclusionChromatography - - HPLC_MS + - HighPerformanceLiquidChromatographyMassSpectrometry - Microkinetics - MonteCarlo - AqueousStability @@ -708,9 +709,9 @@ slots: ucum_code: Cel equipment: name: equipment - definition_uri: https://w3id.org/nfdi4cat/catcore/equipment + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/equipment description: Equipment or instrument used in a process. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - VOC4CAT:0000187 slot_uri: VOC4CAT:0000187 @@ -721,30 +722,30 @@ slots: multivalued: true flow_rate: name: flow_rate - definition_uri: https://w3id.org/nfdi4cat/catcore/flow_rate + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/flow_rate description: Flow rate of a fluid or gas. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:flow_rate - slot_uri: catcore:flow_rate - owner: ESI_MS + - coremeta4cat:flow_rate + slot_uri: coremeta4cat:flow_rate + owner: ElectroSprayIonizationMassSpectrometry domain_of: - FlameSprayPyrolysis - ChromatographyMixin - DRIFTS - - ESI_MS + - ElectroSprayIonizationMassSpectrometry range: float multivalued: true unit: ucum_code: mL/min heating_rate: name: heating_rate - definition_uri: https://w3id.org/nfdi4cat/catcore/heating_rate + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/heating_rate description: Rate at which temperature is increased during a process. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:heating_rate - slot_uri: catcore:heating_rate + - coremeta4cat:heating_rate + slot_uri: coremeta4cat:heating_rate owner: TemperatureProgramMixin domain_of: - TemperatureProgramMixin @@ -754,12 +755,12 @@ slots: ucum_code: Cel/min heating_procedure: name: heating_procedure - definition_uri: https://w3id.org/nfdi4cat/catcore/heating_procedure + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/heating_procedure description: Description of the heating procedure applied. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:heating_procedure - slot_uri: catcore:heating_procedure + - coremeta4cat:heating_procedure + slot_uri: coremeta4cat:heating_procedure owner: GCMS domain_of: - TemperatureProgramMixin @@ -768,13 +769,13 @@ slots: multivalued: true number_of_cycles: name: number_of_cycles - definition_uri: https://w3id.org/nfdi4cat/catcore/number_of_cycles + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/number_of_cycles description: Number of repeated cycles in a process (e.g. ALD cycles, impregnation cycles). - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:number_of_cycles - slot_uri: catcore:number_of_cycles + - coremeta4cat:number_of_cycles + slot_uri: coremeta4cat:number_of_cycles owner: CyclicVoltammetry domain_of: - CalcinationMixin @@ -786,12 +787,12 @@ slots: multivalued: true sample_mass: name: sample_mass - definition_uri: https://w3id.org/nfdi4cat/catcore/sample_mass + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/sample_mass description: Mass of the sample used in a process or measurement. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:sample_mass - slot_uri: catcore:sample_mass + - coremeta4cat:sample_mass + slot_uri: coremeta4cat:sample_mass owner: BET domain_of: - Thermogravimetry @@ -802,9 +803,9 @@ slots: ucum_code: mg sample_pretreatment: name: sample_pretreatment - definition_uri: https://w3id.org/nfdi4cat/catcore/sample_pretreatment + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/sample_pretreatment description: Pre-treatment applied to the sample before a process or measurement. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - VOC4CAT:0000122 slot_uri: VOC4CAT:0000122 @@ -816,12 +817,12 @@ slots: multivalued: true stirring_speed: name: stirring_speed - definition_uri: https://w3id.org/nfdi4cat/catcore/stirring_speed + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/stirring_speed description: Rotational speed of stirring or agitation. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:stirring_speed - slot_uri: catcore:stirring_speed + - coremeta4cat:stirring_speed + slot_uri: coremeta4cat:stirring_speed owner: MolecularSynthesis domain_of: - MolecularSynthesis @@ -831,12 +832,12 @@ slots: ucum_code: rpm stirring_duration: name: stirring_duration - definition_uri: https://w3id.org/nfdi4cat/catcore/stirring_duration + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/stirring_duration description: Duration of stirring or agitation. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:stirring_duration - slot_uri: catcore:stirring_duration + - coremeta4cat:stirring_duration + slot_uri: coremeta4cat:stirring_duration owner: MolecularSynthesis domain_of: - MolecularSynthesis @@ -846,12 +847,12 @@ slots: ucum_code: h vessel_type: name: vessel_type - definition_uri: https://w3id.org/nfdi4cat/catcore/vessel_type + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/vessel_type description: Type of reaction or synthesis vessel used. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:vessel_type - slot_uri: catcore:vessel_type + - coremeta4cat:vessel_type + slot_uri: coremeta4cat:vessel_type owner: ThermalSynthesisMixin domain_of: - ThermalSynthesisMixin @@ -859,28 +860,28 @@ slots: multivalued: true carrier_gas: name: carrier_gas - definition_uri: https://w3id.org/nfdi4cat/catcore/carrier_gas + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/carrier_gas description: Carrier gas used in a process (e.g. in GC analysis or ALD deposition). - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:carrier_gas - slot_uri: catcore:carrier_gas + - coremeta4cat:carrier_gas + slot_uri: coremeta4cat:carrier_gas owner: GCMS domain_of: - AtomicLayerDeposition - ElementalAnalysis - - ESI_MS + - ElectroSprayIonizationMassSpectrometry - GCMS range: string multivalued: true dispersant: name: dispersant - definition_uri: https://w3id.org/nfdi4cat/catcore/dispersant + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/dispersant description: Dispersant used (e.g. in DLS measurement or flame spray pyrolysis). - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:dispersant - slot_uri: catcore:dispersant + - coremeta4cat:dispersant + slot_uri: coremeta4cat:dispersant owner: DynamicLightScattering domain_of: - FlameSprayPyrolysis @@ -889,12 +890,12 @@ slots: multivalued: true drying_device: name: drying_device - definition_uri: https://w3id.org/nfdi4cat/catcore/drying_device + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/drying_device description: Device used for drying (e.g. oven, rotary evaporator). - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:drying_device - slot_uri: catcore:drying_device + - coremeta4cat:drying_device + slot_uri: coremeta4cat:drying_device owner: DryingMixin domain_of: - DryingMixin @@ -902,12 +903,12 @@ slots: multivalued: true drying_temperature: name: drying_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/drying_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/drying_temperature description: Temperature applied during drying. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:drying_temperature - slot_uri: catcore:drying_temperature + - coremeta4cat:drying_temperature + slot_uri: coremeta4cat:drying_temperature owner: DryingMixin domain_of: - DryingMixin @@ -917,12 +918,12 @@ slots: ucum_code: Cel drying_time: name: drying_time - definition_uri: https://w3id.org/nfdi4cat/catcore/drying_time + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/drying_time description: Duration of the drying step. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:drying_time - slot_uri: catcore:drying_time + - coremeta4cat:drying_time + slot_uri: coremeta4cat:drying_time owner: DryingMixin domain_of: - DryingMixin @@ -932,12 +933,12 @@ slots: ucum_code: h drying_atmosphere: name: drying_atmosphere - definition_uri: https://w3id.org/nfdi4cat/catcore/drying_atmosphere + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/drying_atmosphere description: Atmosphere maintained during drying (e.g. air, N2). - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:drying_atmosphere - slot_uri: catcore:drying_atmosphere + - coremeta4cat:drying_atmosphere + slot_uri: coremeta4cat:drying_atmosphere owner: DryingMixin domain_of: - DryingMixin @@ -945,9 +946,9 @@ slots: multivalued: true calcination_initial_temperature: name: calcination_initial_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/calcination_initial_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/calcination_initial_temperature description: Initial temperature for calcination. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - VOC4CAT:0000057 slot_uri: VOC4CAT:0000057 @@ -960,9 +961,9 @@ slots: ucum_code: Cel calcination_final_temperature: name: calcination_final_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/calcination_final_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/calcination_final_temperature description: Final (target) temperature for calcination. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - VOC4CAT:0000058 slot_uri: VOC4CAT:0000058 @@ -975,9 +976,9 @@ slots: ucum_code: Cel calcination_dwelling_time: name: calcination_dwelling_time - definition_uri: https://w3id.org/nfdi4cat/catcore/calcination_dwelling_time + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/calcination_dwelling_time description: Time held at the final calcination temperature. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - VOC4CAT:0000060 slot_uri: VOC4CAT:0000060 @@ -990,9 +991,9 @@ slots: ucum_code: h calcination_gaseous_environment: name: calcination_gaseous_environment - definition_uri: https://w3id.org/nfdi4cat/catcore/calcination_gaseous_environment + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/calcination_gaseous_environment description: Gaseous environment maintained during calcination (e.g. air, H2/N2). - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - VOC4CAT:0000055 slot_uri: VOC4CAT:0000055 @@ -1003,9 +1004,9 @@ slots: multivalued: true calcination_heating_rate: name: calcination_heating_rate - definition_uri: https://w3id.org/nfdi4cat/catcore/calcination_heating_rate + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/calcination_heating_rate description: Heating rate during calcination. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - VOC4CAT:0000059 slot_uri: VOC4CAT:0000059 @@ -1018,9 +1019,9 @@ slots: ucum_code: Cel/min calcination_gas_flow_rate: name: calcination_gas_flow_rate - definition_uri: https://w3id.org/nfdi4cat/catcore/calcination_gas_flow_rate + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/calcination_gas_flow_rate description: Gas flow rate maintained during calcination. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - VOC4CAT:0000056 slot_uri: VOC4CAT:0000056 @@ -1033,9 +1034,9 @@ slots: ucum_code: mL/min step_size: name: step_size - definition_uri: https://w3id.org/nfdi4cat/catcore/step_size + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/step_size description: Step size for a scan (angle, wavelength, energy, or potential). - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - AFR:0000950 slot_uri: AFR:0000950 @@ -1050,12 +1051,12 @@ slots: multivalued: true resolution: name: resolution - definition_uri: https://w3id.org/nfdi4cat/catcore/resolution + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/resolution description: Resolution of a measurement or detector. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:resolution - slot_uri: catcore:resolution + - coremeta4cat:resolution + slot_uri: coremeta4cat:resolution owner: DRIFTS domain_of: - EDX @@ -1064,12 +1065,12 @@ slots: multivalued: true integration_time: name: integration_time - definition_uri: https://w3id.org/nfdi4cat/catcore/integration_time + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/integration_time description: Integration or acquisition time per measurement step. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:integration_time - slot_uri: catcore:integration_time + - coremeta4cat:integration_time + slot_uri: coremeta4cat:integration_time owner: PhotoluminescenceSpectroscopy domain_of: - RamanSpectroscopy @@ -1080,12 +1081,12 @@ slots: ucum_code: s number_of_scans: name: number_of_scans - definition_uri: https://w3id.org/nfdi4cat/catcore/number_of_scans + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/number_of_scans description: Number of scans or accumulations recorded. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:number_of_scans - slot_uri: catcore:number_of_scans + - coremeta4cat:number_of_scans + slot_uri: coremeta4cat:number_of_scans owner: NMRSpectroscopy domain_of: - XPS @@ -1097,45 +1098,45 @@ slots: multivalued: true operation_mode: name: operation_mode - definition_uri: https://w3id.org/nfdi4cat/catcore/operation_mode + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/operation_mode description: Operation mode of an instrument (e.g. transmission, reflection, AC, DC). - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - VOC4CAT:0000108 slot_uri: VOC4CAT:0000108 - owner: ESI_MS + owner: ElectroSprayIonizationMassSpectrometry domain_of: - PowderXRD - XRayAbsorptionSpectroscopy - InfraredSpectroscopy - TransmissionElectronMicroscopy - Thermogravimetry - - ESI_MS + - ElectroSprayIonizationMassSpectrometry range: string multivalued: true concentration: name: concentration - definition_uri: https://w3id.org/nfdi4cat/catcore/concentration + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/concentration description: Concentration of a substance in a sample or solution. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:concentration - slot_uri: catcore:concentration - owner: ESI_MS + - coremeta4cat:concentration + slot_uri: coremeta4cat:concentration + owner: ElectroSprayIonizationMassSpectrometry domain_of: - UVVisSpectroscopy - DynamicLightScattering - - ESI_MS + - ElectroSprayIonizationMassSpectrometry range: float multivalued: true unit: ucum_code: mol/L solvent: name: solvent - definition_uri: https://w3id.org/nfdi4cat/catcore/solvent + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/solvent description: Solvent used in a process or sample preparation. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - VOC4CAT:0007246 slot_uri: VOC4CAT:0007246 @@ -1149,12 +1150,12 @@ slots: multivalued: true injection_volume: name: injection_volume - definition_uri: https://w3id.org/nfdi4cat/catcore/injection_volume + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/injection_volume description: Volume injected in a chromatographic or mass spectrometric experiment. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:injection_volume - slot_uri: catcore:injection_volume + - coremeta4cat:injection_volume + slot_uri: coremeta4cat:injection_volume owner: ChromatographyMixin domain_of: - ChromatographyMixin @@ -1164,12 +1165,12 @@ slots: ucum_code: uL external_standard: name: external_standard - definition_uri: https://w3id.org/nfdi4cat/catcore/external_standard + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/external_standard description: External standard used for quantification or calibration. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:external_standard - slot_uri: catcore:external_standard + - coremeta4cat:external_standard + slot_uri: coremeta4cat:external_standard owner: ChromatographyMixin domain_of: - ChromatographyMixin @@ -1177,12 +1178,12 @@ slots: multivalued: true internal_standard: name: internal_standard - definition_uri: https://w3id.org/nfdi4cat/catcore/internal_standard + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/internal_standard description: Internal standard used for quantification or calibration. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:internal_standard - slot_uri: catcore:internal_standard + - coremeta4cat:internal_standard + slot_uri: coremeta4cat:internal_standard owner: ChromatographyMixin domain_of: - ChromatographyMixin @@ -1190,12 +1191,12 @@ slots: multivalued: true calibration_method: name: calibration_method - definition_uri: https://w3id.org/nfdi4cat/catcore/calibration_method + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/calibration_method description: Calibration method applied during a measurement. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:calibration_method - slot_uri: catcore:calibration_method + - coremeta4cat:calibration_method + slot_uri: coremeta4cat:calibration_method owner: ICPAES domain_of: - EDX @@ -1204,12 +1205,12 @@ slots: multivalued: true column_type: name: column_type - definition_uri: https://w3id.org/nfdi4cat/catcore/column_type + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/column_type description: Type of chromatographic column used. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:column_type - slot_uri: catcore:column_type + - coremeta4cat:column_type + slot_uri: coremeta4cat:column_type owner: ChromatographyMixin domain_of: - ChromatographyMixin @@ -1217,9 +1218,9 @@ slots: multivalued: true experiment_duration: name: experiment_duration - definition_uri: https://w3id.org/nfdi4cat/catcore/experiment_duration + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/experiment_duration description: Total duration of the experiment or measurement run. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - AFR:0002455 slot_uri: AFR:0002455 @@ -1233,12 +1234,12 @@ slots: ucum_code: h filtration_device: name: filtration_device - definition_uri: https://w3id.org/nfdi4cat/catcore/filtration_device + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/filtration_device description: Device used for filtration. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:filtration_device - slot_uri: catcore:filtration_device + - coremeta4cat:filtration_device + slot_uri: coremeta4cat:filtration_device owner: MolecularSynthesis domain_of: - FlameSprayPyrolysis @@ -1247,12 +1248,12 @@ slots: multivalued: true filter_type: name: filter_type - definition_uri: https://w3id.org/nfdi4cat/catcore/filter_type + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/filter_type description: Type of filter membrane or medium used. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - - catcore:filter_type - slot_uri: catcore:filter_type + - coremeta4cat:filter_type + slot_uri: coremeta4cat:filter_type owner: MolecularSynthesis domain_of: - FlameSprayPyrolysis @@ -1261,13 +1262,13 @@ slots: multivalued: true nominal_composition: name: nominal_composition - definition_uri: https://w3id.org/nfdi4cat/catcore/nominal_composition + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/nominal_composition description: Nominal elemental or chemical composition of the catalyst (e.g. 5wt% Pt/Al2O3). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:nominal_composition - slot_uri: catcore:nominal_composition + - coremeta4cat:nominal_composition + slot_uri: coremeta4cat:nominal_composition owner: Synthesis domain_of: - Synthesis @@ -1275,14 +1276,14 @@ slots: multivalued: true catalyst_measured_properties: name: catalyst_measured_properties - definition_uri: https://w3id.org/nfdi4cat/catcore/catalyst_measured_properties + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/catalyst_measured_properties description: 'Key measured properties of the resulting catalyst (e.g. BET surface area, sieve fraction, molar ratio).' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:catalyst_measured_properties - slot_uri: catcore:catalyst_measured_properties + - coremeta4cat:catalyst_measured_properties + slot_uri: coremeta4cat:catalyst_measured_properties owner: Synthesis domain_of: - Synthesis @@ -1290,13 +1291,13 @@ slots: multivalued: true storage_conditions: name: storage_conditions - definition_uri: https://w3id.org/nfdi4cat/catcore/storage_conditions + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/storage_conditions description: "Conditions under which the catalyst is stored (e.g. inert atmosphere,\ \ 4\xB0C)." - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:storage_conditions - slot_uri: catcore:storage_conditions + - coremeta4cat:storage_conditions + slot_uri: coremeta4cat:storage_conditions owner: Synthesis domain_of: - Synthesis @@ -1304,13 +1305,13 @@ slots: multivalued: true support: name: support - definition_uri: https://w3id.org/nfdi4cat/catcore/support + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/support description: Support material on which the active phase is deposited (e.g. Al2O3, SiO2). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:support - slot_uri: catcore:support + - coremeta4cat:support + slot_uri: coremeta4cat:support owner: Synthesis domain_of: - Synthesis @@ -1318,12 +1319,12 @@ slots: multivalued: true precursor_quantity: name: precursor_quantity - definition_uri: https://w3id.org/nfdi4cat/catcore/precursor_quantity + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/precursor_quantity description: Quantity of precursor used in synthesis. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:precursor_quantity - slot_uri: catcore:precursor_quantity + - coremeta4cat:precursor_quantity + slot_uri: coremeta4cat:precursor_quantity owner: Precursor domain_of: - Precursor @@ -1333,12 +1334,12 @@ slots: ucum_code: g impregnation_type: name: impregnation_type - definition_uri: https://w3id.org/nfdi4cat/catcore/impregnation_type + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/impregnation_type description: Type of impregnation used (wet, dry, incipient wetness). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:impregnation_type - slot_uri: catcore:impregnation_type + - coremeta4cat:impregnation_type + slot_uri: coremeta4cat:impregnation_type owner: Impregnation domain_of: - Impregnation @@ -1346,12 +1347,12 @@ slots: multivalued: true impregnation_duration: name: impregnation_duration - definition_uri: https://w3id.org/nfdi4cat/catcore/impregnation_duration + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/impregnation_duration description: Duration of the impregnation step. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:impregnation_duration - slot_uri: catcore:impregnation_duration + - coremeta4cat:impregnation_duration + slot_uri: coremeta4cat:impregnation_duration owner: Impregnation domain_of: - Impregnation @@ -1361,12 +1362,12 @@ slots: ucum_code: h impregnation_temperature: name: impregnation_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/impregnation_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/impregnation_temperature description: Temperature during the impregnation step. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:impregnation_temperature - slot_uri: catcore:impregnation_temperature + - coremeta4cat:impregnation_temperature + slot_uri: coremeta4cat:impregnation_temperature owner: Impregnation domain_of: - Impregnation @@ -1376,12 +1377,12 @@ slots: ucum_code: Cel precipitating_agent: name: precipitating_agent - definition_uri: https://w3id.org/nfdi4cat/catcore/precipitating_agent + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/precipitating_agent description: Chemical agent used to induce precipitation (e.g. NaOH, NH3). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:precipitating_agent - slot_uri: catcore:precipitating_agent + - coremeta4cat:precipitating_agent + slot_uri: coremeta4cat:precipitating_agent owner: PrecipitationMixin domain_of: - PrecipitationMixin @@ -1389,12 +1390,12 @@ slots: multivalued: true precipitating_concentration: name: precipitating_concentration - definition_uri: https://w3id.org/nfdi4cat/catcore/precipitating_concentration + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/precipitating_concentration description: Concentration of the precipitating agent. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:precipitating_concentration - slot_uri: catcore:precipitating_concentration + - coremeta4cat:precipitating_concentration + slot_uri: coremeta4cat:precipitating_concentration owner: PrecipitationMixin domain_of: - PrecipitationMixin @@ -1404,9 +1405,9 @@ slots: ucum_code: mol/L synthesis_ph: name: synthesis_ph - definition_uri: https://w3id.org/nfdi4cat/catcore/synthesis_ph + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/synthesis_ph description: pH value maintained or targeted during synthesis. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - VOC4CAT:0000052 slot_uri: VOC4CAT:0000052 @@ -1417,12 +1418,12 @@ slots: multivalued: true mixing_rate: name: mixing_rate - definition_uri: https://w3id.org/nfdi4cat/catcore/mixing_rate + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/mixing_rate description: Stirring rate during mixing of synthesis components. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:mixing_rate - slot_uri: catcore:mixing_rate + - coremeta4cat:mixing_rate + slot_uri: coremeta4cat:mixing_rate owner: PrecipitationMixin domain_of: - PrecipitationMixin @@ -1432,12 +1433,12 @@ slots: ucum_code: rpm mixing_time: name: mixing_time - definition_uri: https://w3id.org/nfdi4cat/catcore/mixing_time + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/mixing_time description: Duration of the mixing step. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:mixing_time - slot_uri: catcore:mixing_time + - coremeta4cat:mixing_time + slot_uri: coremeta4cat:mixing_time owner: PrecipitationMixin domain_of: - PrecipitationMixin @@ -1447,12 +1448,12 @@ slots: ucum_code: h mixing_temperature: name: mixing_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/mixing_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/mixing_temperature description: Temperature during mixing. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:mixing_temperature - slot_uri: catcore:mixing_temperature + - coremeta4cat:mixing_temperature + slot_uri: coremeta4cat:mixing_temperature owner: MolecularSynthesis domain_of: - PrecipitationMixin @@ -1463,12 +1464,12 @@ slots: ucum_code: Cel order_of_addition: name: order_of_addition - definition_uri: https://w3id.org/nfdi4cat/catcore/order_of_addition + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/order_of_addition description: Order in which reagents or components are combined. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:order_of_addition - slot_uri: catcore:order_of_addition + - coremeta4cat:order_of_addition + slot_uri: coremeta4cat:order_of_addition owner: PrecipitationMixin domain_of: - PrecipitationMixin @@ -1476,12 +1477,12 @@ slots: multivalued: true filtration: name: filtration - definition_uri: https://w3id.org/nfdi4cat/catcore/filtration + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/filtration description: Filtration method used to separate the precipitate (e.g. vacuum filtration). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:filtration - slot_uri: catcore:filtration + - coremeta4cat:filtration + slot_uri: coremeta4cat:filtration owner: PrecipitationMixin domain_of: - PrecipitationMixin @@ -1489,12 +1490,12 @@ slots: multivalued: true purification: name: purification - definition_uri: https://w3id.org/nfdi4cat/catcore/purification + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/purification description: Purification method applied after synthesis (e.g. washing, dialysis). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:purification - slot_uri: catcore:purification + - coremeta4cat:purification + slot_uri: coremeta4cat:purification owner: PrecipitationMixin domain_of: - PrecipitationMixin @@ -1502,12 +1503,12 @@ slots: multivalued: true aging_temperature: name: aging_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/aging_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/aging_temperature description: Temperature during aging of the precipitate or gel. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:aging_temperature - slot_uri: catcore:aging_temperature + - coremeta4cat:aging_temperature + slot_uri: coremeta4cat:aging_temperature owner: PrecipitationMixin domain_of: - PrecipitationMixin @@ -1517,12 +1518,12 @@ slots: ucum_code: Cel aging_time: name: aging_time - definition_uri: https://w3id.org/nfdi4cat/catcore/aging_time + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/aging_time description: Duration of the aging step. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:aging_time - slot_uri: catcore:aging_time + - coremeta4cat:aging_time + slot_uri: coremeta4cat:aging_time owner: SolGel domain_of: - PrecipitationMixin @@ -1533,12 +1534,12 @@ slots: ucum_code: h deposition_temperature: name: deposition_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/deposition_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/deposition_temperature description: Temperature during the deposition step. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:deposition_temperature - slot_uri: catcore:deposition_temperature + - coremeta4cat:deposition_temperature + slot_uri: coremeta4cat:deposition_temperature owner: DepositionPrecipitation domain_of: - AtomicLayerDeposition @@ -1549,12 +1550,12 @@ slots: ucum_code: Cel deposition_time: name: deposition_time - definition_uri: https://w3id.org/nfdi4cat/catcore/deposition_time + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/deposition_time description: Duration of the deposition step. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:deposition_time - slot_uri: catcore:deposition_time + - coremeta4cat:deposition_time + slot_uri: coremeta4cat:deposition_time owner: DepositionPrecipitation domain_of: - DepositionPrecipitation @@ -1564,9 +1565,9 @@ slots: ucum_code: h synthesis_temperature: name: synthesis_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/synthesis_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/synthesis_temperature description: Temperature applied during the synthesis step. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - VOC4CAT:0000051 slot_uri: VOC4CAT:0000051 @@ -1579,9 +1580,9 @@ slots: ucum_code: Cel synthesis_duration: name: synthesis_duration - definition_uri: https://w3id.org/nfdi4cat/catcore/synthesis_duration + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/synthesis_duration description: Total duration of the synthesis step. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - VOC4CAT:0000050 slot_uri: VOC4CAT:0000050 @@ -1594,9 +1595,9 @@ slots: ucum_code: h synthesis_pressure: name: synthesis_pressure - definition_uri: https://w3id.org/nfdi4cat/catcore/synthesis_pressure + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/synthesis_pressure description: Pressure applied during synthesis (e.g. in autoclave or plasma reactor). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - VOC4CAT:0000053 slot_uri: VOC4CAT:0000053 @@ -1610,12 +1611,12 @@ slots: ucum_code: bar hydrolysis_ratio: name: hydrolysis_ratio - definition_uri: https://w3id.org/nfdi4cat/catcore/hydrolysis_ratio + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/hydrolysis_ratio description: Molar ratio of water to alkoxide precursor used in hydrolysis. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:hydrolysis_ratio - slot_uri: catcore:hydrolysis_ratio + - coremeta4cat:hydrolysis_ratio + slot_uri: coremeta4cat:hydrolysis_ratio owner: SolGel domain_of: - SolGel @@ -1623,13 +1624,13 @@ slots: multivalued: true drying: name: drying - definition_uri: https://w3id.org/nfdi4cat/catcore/drying + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/drying description: Drying method used for the gel (e.g. supercritical drying, freeze drying). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:drying - slot_uri: catcore:drying + - coremeta4cat:drying + slot_uri: coremeta4cat:drying owner: SolGel domain_of: - SolGel @@ -1637,12 +1638,12 @@ slots: multivalued: true surfactant_template: name: surfactant_template - definition_uri: https://w3id.org/nfdi4cat/catcore/surfactant_template + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/surfactant_template description: Surfactant or structure-directing agent used as a template. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:surfactant_template - slot_uri: catcore:surfactant_template + - coremeta4cat:surfactant_template + slot_uri: coremeta4cat:surfactant_template owner: SolGel domain_of: - SolGel @@ -1650,12 +1651,12 @@ slots: multivalued: true filling_volume: name: filling_volume - definition_uri: https://w3id.org/nfdi4cat/catcore/filling_volume + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/filling_volume description: Volume of solution relative to autoclave volume (filling degree). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:filling_volume - slot_uri: catcore:filling_volume + - coremeta4cat:filling_volume + slot_uri: coremeta4cat:filling_volume owner: Solvothermal domain_of: - Solvothermal @@ -1665,12 +1666,12 @@ slots: ucum_code: mL stirrer_type: name: stirrer_type - definition_uri: https://w3id.org/nfdi4cat/catcore/stirrer_type + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/stirrer_type description: Type of stirrer used (e.g. magnetic, mechanical, none). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:stirrer_type - slot_uri: catcore:stirrer_type + - coremeta4cat:stirrer_type + slot_uri: coremeta4cat:stirrer_type owner: Solvothermal domain_of: - Solvothermal @@ -1678,12 +1679,12 @@ slots: multivalued: true cooling_rate: name: cooling_rate - definition_uri: https://w3id.org/nfdi4cat/catcore/cooling_rate + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/cooling_rate description: Rate at which the reactor is cooled after synthesis. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:cooling_rate - slot_uri: catcore:cooling_rate + - coremeta4cat:cooling_rate + slot_uri: coremeta4cat:cooling_rate owner: Solvothermal domain_of: - Solvothermal @@ -1693,12 +1694,12 @@ slots: ucum_code: Cel/min plasma_type: name: plasma_type - definition_uri: https://w3id.org/nfdi4cat/catcore/plasma_type + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/plasma_type description: Type of plasma used (e.g. DBD, microwave, RF plasma). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:plasma_type - slot_uri: catcore:plasma_type + - coremeta4cat:plasma_type + slot_uri: coremeta4cat:plasma_type owner: PlasmaAssisted domain_of: - PlasmaAssisted @@ -1706,12 +1707,12 @@ slots: multivalued: true power_input: name: power_input - definition_uri: https://w3id.org/nfdi4cat/catcore/power_input + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/power_input description: Power input to the plasma reactor or other energy source. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:power_input - slot_uri: catcore:power_input + - coremeta4cat:power_input + slot_uri: coremeta4cat:power_input owner: PlasmaAssisted domain_of: - PlasmaAssisted @@ -1721,12 +1722,12 @@ slots: ucum_code: W exposure_time: name: exposure_time - definition_uri: https://w3id.org/nfdi4cat/catcore/exposure_time + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/exposure_time description: Duration of plasma or other energy exposure. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:exposure_time - slot_uri: catcore:exposure_time + - coremeta4cat:exposure_time + slot_uri: coremeta4cat:exposure_time owner: PlasmaAssisted domain_of: - PlasmaAssisted @@ -1736,12 +1737,12 @@ slots: ucum_code: min fuel: name: fuel - definition_uri: https://w3id.org/nfdi4cat/catcore/fuel + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/fuel description: Organic fuel used in combustion synthesis (e.g. urea, glycine). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:fuel - slot_uri: catcore:fuel + - coremeta4cat:fuel + slot_uri: coremeta4cat:fuel owner: CombustionSynthesis domain_of: - CombustionSynthesis @@ -1749,12 +1750,12 @@ slots: multivalued: true oxidizer: name: oxidizer - definition_uri: https://w3id.org/nfdi4cat/catcore/oxidizer + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/oxidizer description: Oxidizer used in combustion synthesis (e.g. metal nitrates). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:oxidizer - slot_uri: catcore:oxidizer + - coremeta4cat:oxidizer + slot_uri: coremeta4cat:oxidizer owner: CombustionSynthesis domain_of: - CombustionSynthesis @@ -1762,12 +1763,12 @@ slots: multivalued: true fuel_to_oxidizer_ratio: name: fuel_to_oxidizer_ratio - definition_uri: https://w3id.org/nfdi4cat/catcore/fuel_to_oxidizer_ratio + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/fuel_to_oxidizer_ratio description: Molar ratio of fuel to oxidizer. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:fuel_to_oxidizer_ratio - slot_uri: catcore:fuel_to_oxidizer_ratio + - coremeta4cat:fuel_to_oxidizer_ratio + slot_uri: coremeta4cat:fuel_to_oxidizer_ratio owner: CombustionSynthesis domain_of: - CombustionSynthesis @@ -1775,12 +1776,12 @@ slots: multivalued: true set_temperature: name: set_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/set_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/set_temperature description: Target temperature set for the combustion reaction. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:set_temperature - slot_uri: catcore:set_temperature + - coremeta4cat:set_temperature + slot_uri: coremeta4cat:set_temperature owner: CombustionSynthesis domain_of: - CombustionSynthesis @@ -1790,12 +1791,12 @@ slots: ucum_code: Cel post_treatment: name: post_treatment - definition_uri: https://w3id.org/nfdi4cat/catcore/post_treatment + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/post_treatment description: Post-synthesis treatment applied to the combustion product. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:post_treatment - slot_uri: catcore:post_treatment + - coremeta4cat:post_treatment + slot_uri: coremeta4cat:post_treatment owner: CombustionSynthesis domain_of: - CombustionSynthesis @@ -1803,9 +1804,9 @@ slots: multivalued: true substrate: name: substrate - definition_uri: https://w3id.org/nfdi4cat/catcore/substrate + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/substrate description: Substrate material on which the ALD film is deposited. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - VOC4CAT:0000024 slot_uri: VOC4CAT:0000024 @@ -1816,12 +1817,12 @@ slots: multivalued: true pulse_time: name: pulse_time - definition_uri: https://w3id.org/nfdi4cat/catcore/pulse_time + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/pulse_time description: Duration of the precursor pulse in each ALD cycle. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:pulse_time - slot_uri: catcore:pulse_time + - coremeta4cat:pulse_time + slot_uri: coremeta4cat:pulse_time owner: AtomicLayerDeposition domain_of: - AtomicLayerDeposition @@ -1831,9 +1832,9 @@ slots: ucum_code: s purging_duration: name: purging_duration - definition_uri: https://w3id.org/nfdi4cat/catcore/purging_duration + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/purging_duration description: Duration of the purge step between ALD pulses. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - VOC4CAT:0000112 slot_uri: VOC4CAT:0000112 @@ -1846,12 +1847,12 @@ slots: ucum_code: s power: name: power - definition_uri: https://w3id.org/nfdi4cat/catcore/power + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/power description: Microwave power applied. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:power - slot_uri: catcore:power + - coremeta4cat:power + slot_uri: coremeta4cat:power owner: MicrowaveAssisted domain_of: - MicrowaveAssisted @@ -1861,12 +1862,12 @@ slots: ucum_code: W microwave_frequency: name: microwave_frequency - definition_uri: https://w3id.org/nfdi4cat/catcore/microwave_frequency + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/microwave_frequency description: Frequency of microwave irradiation. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:microwave_frequency - slot_uri: catcore:microwave_frequency + - coremeta4cat:microwave_frequency + slot_uri: coremeta4cat:microwave_frequency owner: MicrowaveAssisted domain_of: - MicrowaveAssisted @@ -1876,12 +1877,12 @@ slots: ucum_code: GHz sonication_power: name: sonication_power - definition_uri: https://w3id.org/nfdi4cat/catcore/sonication_power + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/sonication_power description: Acoustic power applied during sonication. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:sonication_power - slot_uri: catcore:sonication_power + - coremeta4cat:sonication_power + slot_uri: coremeta4cat:sonication_power owner: SonochemicalSynthesis domain_of: - SonochemicalSynthesis @@ -1891,12 +1892,12 @@ slots: ucum_code: W sonication_duration: name: sonication_duration - definition_uri: https://w3id.org/nfdi4cat/catcore/sonication_duration + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/sonication_duration description: Duration of ultrasonic irradiation. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:sonication_duration - slot_uri: catcore:sonication_duration + - coremeta4cat:sonication_duration + slot_uri: coremeta4cat:sonication_duration owner: SonochemicalSynthesis domain_of: - SonochemicalSynthesis @@ -1906,12 +1907,12 @@ slots: ucum_code: min flame_type: name: flame_type - definition_uri: https://w3id.org/nfdi4cat/catcore/flame_type + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/flame_type description: Type of flame used in FSP (e.g. methane/oxygen, H2/O2). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:flame_type - slot_uri: catcore:flame_type + - coremeta4cat:flame_type + slot_uri: coremeta4cat:flame_type owner: FlameSprayPyrolysis domain_of: - FlameSprayPyrolysis @@ -1919,12 +1920,12 @@ slots: multivalued: true inlet_system: name: inlet_system - definition_uri: https://w3id.org/nfdi4cat/catcore/inlet_system + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/inlet_system description: Configuration of the precursor inlet system. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:inlet_system - slot_uri: catcore:inlet_system + - coremeta4cat:inlet_system + slot_uri: coremeta4cat:inlet_system owner: FlameSprayPyrolysis domain_of: - FlameSprayPyrolysis @@ -1932,12 +1933,12 @@ slots: multivalued: true flame_ring: name: flame_ring - definition_uri: https://w3id.org/nfdi4cat/catcore/flame_ring + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/flame_ring description: Configuration of the supporting flame ring. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:flame_ring - slot_uri: catcore:flame_ring + - coremeta4cat:flame_ring + slot_uri: coremeta4cat:flame_ring owner: FlameSprayPyrolysis domain_of: - FlameSprayPyrolysis @@ -1945,12 +1946,12 @@ slots: multivalued: true capillary_pressure: name: capillary_pressure - definition_uri: https://w3id.org/nfdi4cat/catcore/capillary_pressure + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/capillary_pressure description: Pressure applied at the capillary nozzle during FSP. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:capillary_pressure - slot_uri: catcore:capillary_pressure + - coremeta4cat:capillary_pressure + slot_uri: coremeta4cat:capillary_pressure owner: FlameSprayPyrolysis domain_of: - FlameSprayPyrolysis @@ -1960,12 +1961,12 @@ slots: ucum_code: bar fuel_dispersant_ratio: name: fuel_dispersant_ratio - definition_uri: https://w3id.org/nfdi4cat/catcore/fuel_dispersant_ratio + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/fuel_dispersant_ratio description: Volume ratio of fuel to dispersant used in FSP. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:fuel_dispersant_ratio - slot_uri: catcore:fuel_dispersant_ratio + - coremeta4cat:fuel_dispersant_ratio + slot_uri: coremeta4cat:fuel_dispersant_ratio owner: FlameSprayPyrolysis domain_of: - FlameSprayPyrolysis @@ -1973,12 +1974,12 @@ slots: multivalued: true vessel_volume: name: vessel_volume - definition_uri: https://w3id.org/nfdi4cat/catcore/vessel_volume + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/vessel_volume description: Volume of the milling vessel. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:vessel_volume - slot_uri: catcore:vessel_volume + - coremeta4cat:vessel_volume + slot_uri: coremeta4cat:vessel_volume owner: MechanochemicalSynthesis domain_of: - MechanochemicalSynthesis @@ -1988,12 +1989,12 @@ slots: ucum_code: mL size_and_material: name: size_and_material - definition_uri: https://w3id.org/nfdi4cat/catcore/size_and_material + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/size_and_material description: Size and material of the milling vessel and components. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:size_and_material - slot_uri: catcore:size_and_material + - coremeta4cat:size_and_material + slot_uri: coremeta4cat:size_and_material owner: MechanochemicalSynthesis domain_of: - MechanochemicalSynthesis @@ -2001,12 +2002,12 @@ slots: multivalued: true milling_speed: name: milling_speed - definition_uri: https://w3id.org/nfdi4cat/catcore/milling_speed + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/milling_speed description: Rotational speed during milling. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:milling_speed - slot_uri: catcore:milling_speed + - coremeta4cat:milling_speed + slot_uri: coremeta4cat:milling_speed owner: MechanochemicalSynthesis domain_of: - MechanochemicalSynthesis @@ -2016,12 +2017,12 @@ slots: ucum_code: rpm milling_duration: name: milling_duration - definition_uri: https://w3id.org/nfdi4cat/catcore/milling_duration + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/milling_duration description: Total duration of the milling process. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:milling_duration - slot_uri: catcore:milling_duration + - coremeta4cat:milling_duration + slot_uri: coremeta4cat:milling_duration owner: MechanochemicalSynthesis domain_of: - MechanochemicalSynthesis @@ -2031,12 +2032,12 @@ slots: ucum_code: h ball_material: name: ball_material - definition_uri: https://w3id.org/nfdi4cat/catcore/ball_material + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ball_material description: Material of the milling balls (e.g. zirconia, stainless steel). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:ball_material - slot_uri: catcore:ball_material + - coremeta4cat:ball_material + slot_uri: coremeta4cat:ball_material owner: MechanochemicalSynthesis domain_of: - MechanochemicalSynthesis @@ -2044,12 +2045,12 @@ slots: multivalued: true ball_size: name: ball_size - definition_uri: https://w3id.org/nfdi4cat/catcore/ball_size + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ball_size description: Diameter of the milling balls. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:ball_size - slot_uri: catcore:ball_size + - coremeta4cat:ball_size + slot_uri: coremeta4cat:ball_size owner: MechanochemicalSynthesis domain_of: - MechanochemicalSynthesis @@ -2059,12 +2060,12 @@ slots: ucum_code: mm ball_to_powder_ratio: name: ball_to_powder_ratio - definition_uri: https://w3id.org/nfdi4cat/catcore/ball_to_powder_ratio + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ball_to_powder_ratio description: Mass ratio of milling balls to powder charge. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:ball_to_powder_ratio - slot_uri: catcore:ball_to_powder_ratio + - coremeta4cat:ball_to_powder_ratio + slot_uri: coremeta4cat:ball_to_powder_ratio owner: MechanochemicalSynthesis domain_of: - MechanochemicalSynthesis @@ -2072,12 +2073,12 @@ slots: multivalued: true reaction_vessel: name: reaction_vessel - definition_uri: https://w3id.org/nfdi4cat/catcore/reaction_vessel + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/reaction_vessel description: Type of reaction vessel used (e.g. Schlenk flask, round-bottom flask). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:reaction_vessel - slot_uri: catcore:reaction_vessel + - coremeta4cat:reaction_vessel + slot_uri: coremeta4cat:reaction_vessel owner: MolecularSynthesis domain_of: - MolecularSynthesis @@ -2085,12 +2086,12 @@ slots: multivalued: true mixing_device: name: mixing_device - definition_uri: https://w3id.org/nfdi4cat/catcore/mixing_device + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/mixing_device description: Device used for mixing (e.g. magnetic stirrer, vortex mixer). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:mixing_device - slot_uri: catcore:mixing_device + - coremeta4cat:mixing_device + slot_uri: coremeta4cat:mixing_device owner: MolecularSynthesis domain_of: - MolecularSynthesis @@ -2098,12 +2099,12 @@ slots: multivalued: true crystallisation_solvents: name: crystallisation_solvents - definition_uri: https://w3id.org/nfdi4cat/catcore/crystallisation_solvents + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/crystallisation_solvents description: Solvent(s) used for crystallisation. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:crystallisation_solvents - slot_uri: catcore:crystallisation_solvents + - coremeta4cat:crystallisation_solvents + slot_uri: coremeta4cat:crystallisation_solvents owner: MolecularSynthesis domain_of: - MolecularSynthesis @@ -2111,12 +2112,12 @@ slots: multivalued: true precipitation_agent: name: precipitation_agent - definition_uri: https://w3id.org/nfdi4cat/catcore/precipitation_agent + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/precipitation_agent description: Agent used to induce precipitation in molecular synthesis. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:precipitation_agent - slot_uri: catcore:precipitation_agent + - coremeta4cat:precipitation_agent + slot_uri: coremeta4cat:precipitation_agent owner: MolecularSynthesis domain_of: - MolecularSynthesis @@ -2124,12 +2125,12 @@ slots: multivalued: true crystallisation_duration: name: crystallisation_duration - definition_uri: https://w3id.org/nfdi4cat/catcore/crystallisation_duration + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/crystallisation_duration description: Duration of the crystallisation step. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:crystallisation_duration - slot_uri: catcore:crystallisation_duration + - coremeta4cat:crystallisation_duration + slot_uri: coremeta4cat:crystallisation_duration owner: MolecularSynthesis domain_of: - MolecularSynthesis @@ -2139,12 +2140,12 @@ slots: ucum_code: h purification_solvent: name: purification_solvent - definition_uri: https://w3id.org/nfdi4cat/catcore/purification_solvent + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/purification_solvent description: Solvent used for washing or recrystallisation during purification. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:purification_solvent - slot_uri: catcore:purification_solvent + - coremeta4cat:purification_solvent + slot_uri: coremeta4cat:purification_solvent owner: MolecularSynthesis domain_of: - MolecularSynthesis @@ -2152,12 +2153,12 @@ slots: multivalued: true temperature_ramp: name: temperature_ramp - definition_uri: https://w3id.org/nfdi4cat/catcore/temperature_ramp + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/temperature_ramp description: Temperature ramp rate applied during drying or activation. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:temperature_ramp - slot_uri: catcore:temperature_ramp + - coremeta4cat:temperature_ramp + slot_uri: coremeta4cat:temperature_ramp owner: MolecularSynthesis domain_of: - MolecularSynthesis @@ -2167,12 +2168,12 @@ slots: ucum_code: Cel/min sample_state: name: sample_state - definition_uri: https://w3id.org/nfdi4cat/catcore/sample_state + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/sample_state description: Physical state of the sample during characterization. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:sample_state - slot_uri: catcore:sample_state + - coremeta4cat:sample_state + slot_uri: coremeta4cat:sample_state owner: Characterization domain_of: - Characterization @@ -2180,12 +2181,12 @@ slots: multivalued: true sample_description: name: sample_description - definition_uri: https://w3id.org/nfdi4cat/catcore/sample_description + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/sample_description description: Free-text description of the sample used in this characterization. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:sample_description - slot_uri: catcore:sample_description + - coremeta4cat:sample_description + slot_uri: coremeta4cat:sample_description owner: Characterization domain_of: - Characterization @@ -2193,9 +2194,9 @@ slots: multivalued: true sample_preparation: name: sample_preparation - definition_uri: https://w3id.org/nfdi4cat/catcore/sample_preparation + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/sample_preparation description: Sample preparation steps applied immediately before measurement. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - AFP:0001159 slot_uri: AFP:0001159 @@ -2206,9 +2207,9 @@ slots: multivalued: true detector_type: name: detector_type - definition_uri: https://w3id.org/nfdi4cat/catcore/detector_type + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/detector_type description: Type of detector used in the measurement. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - AFR:0000317 slot_uri: AFR:0000317 @@ -2219,9 +2220,9 @@ slots: multivalued: true xray_source: name: xray_source - definition_uri: https://w3id.org/nfdi4cat/catcore/xray_source + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/xray_source description: X-ray source used (e.g. Cu K-alpha, Mo K-alpha, synchrotron). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - OBI:0001138 slot_uri: OBI:0001138 @@ -2232,9 +2233,9 @@ slots: multivalued: true monochromator: name: monochromator - definition_uri: https://w3id.org/nfdi4cat/catcore/monochromator + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/monochromator description: Monochromator type or configuration used. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - CHMO:0002120 slot_uri: CHMO:0002120 @@ -2245,12 +2246,12 @@ slots: multivalued: true minimum_energy: name: minimum_energy - definition_uri: https://w3id.org/nfdi4cat/catcore/minimum_energy + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/minimum_energy description: Minimum energy of the scan range. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:minimum_energy - slot_uri: catcore:minimum_energy + - coremeta4cat:minimum_energy + slot_uri: coremeta4cat:minimum_energy owner: EnergyRangeMixin domain_of: - EnergyRangeMixin @@ -2260,12 +2261,12 @@ slots: ucum_code: eV maximum_energy: name: maximum_energy - definition_uri: https://w3id.org/nfdi4cat/catcore/maximum_energy + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/maximum_energy description: Maximum energy of the scan range. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:maximum_energy - slot_uri: catcore:maximum_energy + - coremeta4cat:maximum_energy + slot_uri: coremeta4cat:maximum_energy owner: EnergyRangeMixin domain_of: - EnergyRangeMixin @@ -2275,12 +2276,12 @@ slots: ucum_code: eV gun_type: name: gun_type - definition_uri: https://w3id.org/nfdi4cat/catcore/gun_type + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/gun_type description: Type of electron gun (e.g. FEG, thermionic LaB6). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:gun_type - slot_uri: catcore:gun_type + - coremeta4cat:gun_type + slot_uri: coremeta4cat:gun_type owner: ElectronMicroscopyMixin domain_of: - ElectronMicroscopyMixin @@ -2288,12 +2289,12 @@ slots: multivalued: true acceleration_voltage: name: acceleration_voltage - definition_uri: https://w3id.org/nfdi4cat/catcore/acceleration_voltage + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/acceleration_voltage description: Acceleration voltage applied to the electron beam. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:acceleration_voltage - slot_uri: catcore:acceleration_voltage + - coremeta4cat:acceleration_voltage + slot_uri: coremeta4cat:acceleration_voltage owner: ElectronMicroscopyMixin domain_of: - ElectronMicroscopyMixin @@ -2303,9 +2304,9 @@ slots: ucum_code: kV magnification_setting: name: magnification_setting - definition_uri: https://w3id.org/nfdi4cat/catcore/magnification_setting + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/magnification_setting description: Magnification setting used for imaging. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - AFR:0002226 slot_uri: AFR:0002226 @@ -2317,12 +2318,12 @@ slots: multivalued: true minimum_temperature: name: minimum_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/minimum_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/minimum_temperature description: Minimum (start) temperature in a temperature programme. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:minimum_temperature - slot_uri: catcore:minimum_temperature + - coremeta4cat:minimum_temperature + slot_uri: coremeta4cat:minimum_temperature owner: TemperatureProgramMixin domain_of: - TemperatureProgramMixin @@ -2332,12 +2333,12 @@ slots: ucum_code: Cel maximum_temperature: name: maximum_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/maximum_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/maximum_temperature description: Maximum (final) temperature in a temperature programme. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:maximum_temperature - slot_uri: catcore:maximum_temperature + - coremeta4cat:maximum_temperature + slot_uri: coremeta4cat:maximum_temperature owner: TemperatureProgramMixin domain_of: - TemperatureProgramMixin @@ -2347,9 +2348,9 @@ slots: ucum_code: Cel initial_temperature: name: initial_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/initial_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/initial_temperature description: Initial temperature at the start of a thermal analysis run. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - NCIT:C164644 slot_uri: NCIT:C164644 @@ -2362,9 +2363,9 @@ slots: ucum_code: Cel final_temperature: name: final_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/final_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/final_temperature description: Final temperature at the end of a thermal analysis run. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - NCIT:C164644 slot_uri: NCIT:C164644 @@ -2377,9 +2378,9 @@ slots: ucum_code: Cel mz_minimum: name: mz_minimum - definition_uri: https://w3id.org/nfdi4cat/catcore/mz_minimum + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/mz_minimum description: Minimum m/z value in the mass scan range. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - AFR:0002652 slot_uri: AFR:0002652 @@ -2390,9 +2391,9 @@ slots: multivalued: true mz_maximum: name: mz_maximum - definition_uri: https://w3id.org/nfdi4cat/catcore/mz_maximum + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/mz_maximum description: Maximum m/z value in the mass scan range. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - AFR:0002653 slot_uri: AFR:0002653 @@ -2403,9 +2404,9 @@ slots: multivalued: true excitation_wavelength: name: excitation_wavelength - definition_uri: https://w3id.org/nfdi4cat/catcore/excitation_wavelength + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/excitation_wavelength description: Excitation wavelength used in photoluminescence measurement. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - AFR:0002479 slot_uri: AFR:0002479 @@ -2418,9 +2419,9 @@ slots: ucum_code: nm emission_wavelength: name: emission_wavelength - definition_uri: https://w3id.org/nfdi4cat/catcore/emission_wavelength + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/emission_wavelength description: Emission wavelength detected in photoluminescence measurement. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - NCIT:C204101 slot_uri: NCIT:C204101 @@ -2433,12 +2434,12 @@ slots: ucum_code: nm optical_filter: name: optical_filter - definition_uri: https://w3id.org/nfdi4cat/catcore/optical_filter + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/optical_filter description: Optical filter used in the emission or excitation path. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:optical_filter - slot_uri: catcore:optical_filter + - coremeta4cat:optical_filter + slot_uri: coremeta4cat:optical_filter owner: PhotoluminescenceMixin domain_of: - PhotoluminescenceMixin @@ -2446,9 +2447,9 @@ slots: multivalued: true reference_electrode: name: reference_electrode - definition_uri: https://w3id.org/nfdi4cat/catcore/reference_electrode + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/reference_electrode description: Reference electrode used in electrochemical cell (e.g. Ag/AgCl, RHE). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - VOC4CAT:0007204 slot_uri: VOC4CAT:0007204 @@ -2459,9 +2460,9 @@ slots: multivalued: true working_electrode: name: working_electrode - definition_uri: https://w3id.org/nfdi4cat/catcore/working_electrode + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/working_electrode description: Working electrode used in electrochemical cell. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - VOC4CAT:0007202 slot_uri: VOC4CAT:0007202 @@ -2472,9 +2473,9 @@ slots: multivalued: true counter_electrode: name: counter_electrode - definition_uri: https://w3id.org/nfdi4cat/catcore/counter_electrode + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/counter_electrode description: Counter electrode used in electrochemical cell. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - VOC4CAT:0007203 slot_uri: VOC4CAT:0007203 @@ -2485,12 +2486,12 @@ slots: multivalued: true electrolyte_composition: name: electrolyte_composition - definition_uri: https://w3id.org/nfdi4cat/catcore/electrolyte_composition + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/electrolyte_composition description: Chemical composition of the electrolyte solution. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:electrolyte_composition - slot_uri: catcore:electrolyte_composition + - coremeta4cat:electrolyte_composition + slot_uri: coremeta4cat:electrolyte_composition owner: ElectrochemistryMixin domain_of: - ElectrochemistryMixin @@ -2498,12 +2499,12 @@ slots: multivalued: true electrolyte_concentration: name: electrolyte_concentration - definition_uri: https://w3id.org/nfdi4cat/catcore/electrolyte_concentration + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/electrolyte_concentration description: Concentration of the electrolyte. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:electrolyte_concentration - slot_uri: catcore:electrolyte_concentration + - coremeta4cat:electrolyte_concentration + slot_uri: coremeta4cat:electrolyte_concentration owner: ElectrochemistryMixin domain_of: - ElectrochemistryMixin @@ -2513,12 +2514,12 @@ slots: ucum_code: mol/L minimum_2theta: name: minimum_2theta - definition_uri: https://w3id.org/nfdi4cat/catcore/minimum_2theta + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/minimum_2theta description: Minimum 2theta angle in the diffraction scan. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:minimum_2theta - slot_uri: catcore:minimum_2theta + - coremeta4cat:minimum_2theta + slot_uri: coremeta4cat:minimum_2theta owner: PowderXRD domain_of: - PowderXRD @@ -2528,12 +2529,12 @@ slots: ucum_code: deg maximum_2theta: name: maximum_2theta - definition_uri: https://w3id.org/nfdi4cat/catcore/maximum_2theta + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/maximum_2theta description: Maximum 2theta angle in the diffraction scan. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:maximum_2theta - slot_uri: catcore:maximum_2theta + - coremeta4cat:maximum_2theta + slot_uri: coremeta4cat:maximum_2theta owner: PowderXRD domain_of: - PowderXRD @@ -2543,12 +2544,12 @@ slots: ucum_code: deg sample_spinning_speed: name: sample_spinning_speed - definition_uri: https://w3id.org/nfdi4cat/catcore/sample_spinning_speed + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/sample_spinning_speed description: Sample spinning speed during XRD measurement. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:sample_spinning_speed - slot_uri: catcore:sample_spinning_speed + - coremeta4cat:sample_spinning_speed + slot_uri: coremeta4cat:sample_spinning_speed owner: PowderXRD domain_of: - PowderXRD @@ -2558,12 +2559,12 @@ slots: ucum_code: rpm absorption_edge: name: absorption_edge - definition_uri: https://w3id.org/nfdi4cat/catcore/absorption_edge + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/absorption_edge description: X-ray absorption edge measured (e.g. K-edge, L3-edge). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:absorption_edge - slot_uri: catcore:absorption_edge + - coremeta4cat:absorption_edge + slot_uri: coremeta4cat:absorption_edge owner: XRayAbsorptionSpectroscopy domain_of: - XRayAbsorptionSpectroscopy @@ -2571,12 +2572,12 @@ slots: multivalued: true element_analyzed: name: element_analyzed - definition_uri: https://w3id.org/nfdi4cat/catcore/element_analyzed + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/element_analyzed description: Chemical element analysed (e.g. Fe, Cu, Pt). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:element_analyzed - slot_uri: catcore:element_analyzed + - coremeta4cat:element_analyzed + slot_uri: coremeta4cat:element_analyzed owner: ICPAES domain_of: - XRayAbsorptionSpectroscopy @@ -2585,12 +2586,12 @@ slots: multivalued: true beamline_source: name: beamline_source - definition_uri: https://w3id.org/nfdi4cat/catcore/beamline_source + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/beamline_source description: Synchrotron beamline or X-ray source identifier. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:beamline_source - slot_uri: catcore:beamline_source + - coremeta4cat:beamline_source + slot_uri: coremeta4cat:beamline_source owner: XRayAbsorptionSpectroscopy domain_of: - XRayAbsorptionSpectroscopy @@ -2598,12 +2599,12 @@ slots: multivalued: true noise_of_measurement: name: noise_of_measurement - definition_uri: https://w3id.org/nfdi4cat/catcore/noise_of_measurement + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/noise_of_measurement description: Noise level of the XAS measurement (signal-to-noise ratio). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:noise_of_measurement - slot_uri: catcore:noise_of_measurement + - coremeta4cat:noise_of_measurement + slot_uri: coremeta4cat:noise_of_measurement owner: XRayAbsorptionSpectroscopy domain_of: - XRayAbsorptionSpectroscopy @@ -2611,9 +2612,9 @@ slots: multivalued: true energy_resolution: name: energy_resolution - definition_uri: https://w3id.org/nfdi4cat/catcore/energy_resolution + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/energy_resolution description: Energy resolution of the spectrometer or monochromator. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - AFR:0000950 slot_uri: AFR:0000950 @@ -2626,12 +2627,12 @@ slots: ucum_code: eV total_acquisition_time: name: total_acquisition_time - definition_uri: https://w3id.org/nfdi4cat/catcore/total_acquisition_time + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/total_acquisition_time description: Total time for XPS spectrum acquisition. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:total_acquisition_time - slot_uri: catcore:total_acquisition_time + - coremeta4cat:total_acquisition_time + slot_uri: coremeta4cat:total_acquisition_time owner: XPS domain_of: - XPS @@ -2641,12 +2642,12 @@ slots: ucum_code: s pass_energy: name: pass_energy - definition_uri: https://w3id.org/nfdi4cat/catcore/pass_energy + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/pass_energy description: Analyser pass energy setting in XPS. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:pass_energy - slot_uri: catcore:pass_energy + - coremeta4cat:pass_energy + slot_uri: coremeta4cat:pass_energy owner: XPS domain_of: - XPS @@ -2656,12 +2657,12 @@ slots: ucum_code: eV spot_size: name: spot_size - definition_uri: https://w3id.org/nfdi4cat/catcore/spot_size + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/spot_size description: X-ray spot size on the sample surface. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:spot_size - slot_uri: catcore:spot_size + - coremeta4cat:spot_size + slot_uri: coremeta4cat:spot_size owner: XPS domain_of: - XPS @@ -2671,9 +2672,9 @@ slots: ucum_code: mm lense_mode: name: lense_mode - definition_uri: https://w3id.org/nfdi4cat/catcore/lense_mode + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/lense_mode description: Electron lens mode setting in XPS analyser. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - VOC4CAT:0000108 slot_uri: VOC4CAT:0000108 @@ -2684,12 +2685,12 @@ slots: multivalued: true charge_compensation: name: charge_compensation - definition_uri: https://w3id.org/nfdi4cat/catcore/charge_compensation + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/charge_compensation description: Charge compensation method applied during XPS measurement. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:charge_compensation - slot_uri: catcore:charge_compensation + - coremeta4cat:charge_compensation + slot_uri: coremeta4cat:charge_compensation owner: XPS domain_of: - XPS @@ -2697,12 +2698,12 @@ slots: multivalued: true primary_energy: name: primary_energy - definition_uri: https://w3id.org/nfdi4cat/catcore/primary_energy + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/primary_energy description: Primary electron beam energy for EDX excitation. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:primary_energy - slot_uri: catcore:primary_energy + - coremeta4cat:primary_energy + slot_uri: coremeta4cat:primary_energy owner: EDX domain_of: - EDX @@ -2712,12 +2713,12 @@ slots: ucum_code: keV counting_time: name: counting_time - definition_uri: https://w3id.org/nfdi4cat/catcore/counting_time + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/counting_time description: X-ray counting time per point or spectrum. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:counting_time - slot_uri: catcore:counting_time + - coremeta4cat:counting_time + slot_uri: coremeta4cat:counting_time owner: EDX domain_of: - EDX @@ -2727,12 +2728,12 @@ slots: ucum_code: s minimum_wavenumber: name: minimum_wavenumber - definition_uri: https://w3id.org/nfdi4cat/catcore/minimum_wavenumber + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/minimum_wavenumber description: Minimum wavenumber of the IR scan range. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:minimum_wavenumber - slot_uri: catcore:minimum_wavenumber + - coremeta4cat:minimum_wavenumber + slot_uri: coremeta4cat:minimum_wavenumber owner: InfraredSpectroscopy domain_of: - InfraredSpectroscopy @@ -2742,12 +2743,12 @@ slots: ucum_code: cm-1 maximum_wavenumber: name: maximum_wavenumber - definition_uri: https://w3id.org/nfdi4cat/catcore/maximum_wavenumber + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/maximum_wavenumber description: Maximum wavenumber of the IR scan range. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:maximum_wavenumber - slot_uri: catcore:maximum_wavenumber + - coremeta4cat:maximum_wavenumber + slot_uri: coremeta4cat:maximum_wavenumber owner: InfraredSpectroscopy domain_of: - InfraredSpectroscopy @@ -2757,9 +2758,9 @@ slots: ucum_code: cm-1 background_correction: name: background_correction - definition_uri: https://w3id.org/nfdi4cat/catcore/background_correction + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/background_correction description: Background correction method applied to IR spectra. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - AFP:0003721 slot_uri: AFP:0003721 @@ -2770,12 +2771,12 @@ slots: multivalued: true adsorption_gas: name: adsorption_gas - definition_uri: https://w3id.org/nfdi4cat/catcore/adsorption_gas + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/adsorption_gas description: Probe gas adsorbed during in-situ DRIFTS measurement. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:adsorption_gas - slot_uri: catcore:adsorption_gas + - coremeta4cat:adsorption_gas + slot_uri: coremeta4cat:adsorption_gas owner: DRIFTS domain_of: - DRIFTS @@ -2783,12 +2784,12 @@ slots: multivalued: true diluting_reference: name: diluting_reference - definition_uri: https://w3id.org/nfdi4cat/catcore/diluting_reference + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/diluting_reference description: Reference material used to dilute the DRIFTS sample (e.g. KBr). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:diluting_reference - slot_uri: catcore:diluting_reference + - coremeta4cat:diluting_reference + slot_uri: coremeta4cat:diluting_reference owner: DRIFTS domain_of: - DRIFTS @@ -2796,12 +2797,12 @@ slots: multivalued: true ratio_reference_sample: name: ratio_reference_sample - definition_uri: https://w3id.org/nfdi4cat/catcore/ratio_reference_sample + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ratio_reference_sample description: Mass ratio of reference material to catalyst sample in DRIFTS cup. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:ratio_reference_sample - slot_uri: catcore:ratio_reference_sample + - coremeta4cat:ratio_reference_sample + slot_uri: coremeta4cat:ratio_reference_sample owner: DRIFTS domain_of: - DRIFTS @@ -2809,12 +2810,12 @@ slots: multivalued: true background_correction_method: name: background_correction_method - definition_uri: https://w3id.org/nfdi4cat/catcore/background_correction_method + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/background_correction_method description: Specific background correction method used in DRIFTS. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:background_correction_method - slot_uri: catcore:background_correction_method + - coremeta4cat:background_correction_method + slot_uri: coremeta4cat:background_correction_method owner: DRIFTS domain_of: - DRIFTS @@ -2822,9 +2823,9 @@ slots: multivalued: true excitation_laser_wavelength: name: excitation_laser_wavelength - definition_uri: https://w3id.org/nfdi4cat/catcore/excitation_laser_wavelength + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/excitation_laser_wavelength description: Wavelength of excitation laser used in Raman spectroscopy. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - AFR:0001594 slot_uri: AFR:0001594 @@ -2837,9 +2838,9 @@ slots: ucum_code: nm excitation_laser_power: name: excitation_laser_power - definition_uri: https://w3id.org/nfdi4cat/catcore/excitation_laser_power + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/excitation_laser_power description: Power of the excitation laser at the sample. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - AFR:0001595 slot_uri: AFR:0001595 @@ -2852,12 +2853,12 @@ slots: ucum_code: mW filter_or_grating: name: filter_or_grating - definition_uri: https://w3id.org/nfdi4cat/catcore/filter_or_grating + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/filter_or_grating description: Optical filter or grating used in Raman spectrometer. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:filter_or_grating - slot_uri: catcore:filter_or_grating + - coremeta4cat:filter_or_grating + slot_uri: coremeta4cat:filter_or_grating owner: RamanSpectroscopy domain_of: - RamanSpectroscopy @@ -2865,12 +2866,12 @@ slots: multivalued: true nucleus: name: nucleus - definition_uri: https://w3id.org/nfdi4cat/catcore/nucleus + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/nucleus description: NMR-active nucleus observed (e.g. 1H, 13C, 31P). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:nucleus - slot_uri: catcore:nucleus + - coremeta4cat:nucleus + slot_uri: coremeta4cat:nucleus owner: NMRSpectroscopy domain_of: - NMRSpectroscopy @@ -2878,12 +2879,12 @@ slots: multivalued: true irradiation_frequency: name: irradiation_frequency - definition_uri: https://w3id.org/nfdi4cat/catcore/irradiation_frequency + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/irradiation_frequency description: Irradiation frequency of the NMR spectrometer. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:irradiation_frequency - slot_uri: catcore:irradiation_frequency + - coremeta4cat:irradiation_frequency + slot_uri: coremeta4cat:irradiation_frequency owner: NMRSpectroscopy domain_of: - NMRSpectroscopy @@ -2893,12 +2894,12 @@ slots: ucum_code: MHz nmr_pulse_sequence: name: nmr_pulse_sequence - definition_uri: https://w3id.org/nfdi4cat/catcore/nmr_pulse_sequence + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/nmr_pulse_sequence description: NMR pulse sequence used (e.g. zgpg30, dept). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:nmr_pulse_sequence - slot_uri: catcore:nmr_pulse_sequence + - coremeta4cat:nmr_pulse_sequence + slot_uri: coremeta4cat:nmr_pulse_sequence owner: NMRSpectroscopy domain_of: - NMRSpectroscopy @@ -2906,12 +2907,12 @@ slots: multivalued: true nmr_sample_tube: name: nmr_sample_tube - definition_uri: https://w3id.org/nfdi4cat/catcore/nmr_sample_tube + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/nmr_sample_tube description: NMR sample tube type (e.g. 5mm standard, Shigemi tube). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:nmr_sample_tube - slot_uri: catcore:nmr_sample_tube + - coremeta4cat:nmr_sample_tube + slot_uri: coremeta4cat:nmr_sample_tube owner: NMRSpectroscopy domain_of: - NMRSpectroscopy @@ -2919,12 +2920,12 @@ slots: multivalued: true image_resolution: name: image_resolution - definition_uri: https://w3id.org/nfdi4cat/catcore/image_resolution + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/image_resolution description: Spatial resolution of SEM images. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:image_resolution - slot_uri: catcore:image_resolution + - coremeta4cat:image_resolution + slot_uri: coremeta4cat:image_resolution owner: ScanningElectronMicroscopy domain_of: - ScanningElectronMicroscopy @@ -2934,12 +2935,12 @@ slots: ucum_code: nm field_emitter: name: field_emitter - definition_uri: https://w3id.org/nfdi4cat/catcore/field_emitter + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/field_emitter description: Type of field emitter used in FE-SEM instrument. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:field_emitter - slot_uri: catcore:field_emitter + - coremeta4cat:field_emitter + slot_uri: coremeta4cat:field_emitter owner: ScanningElectronMicroscopy domain_of: - ScanningElectronMicroscopy @@ -2947,12 +2948,12 @@ slots: multivalued: true reducing_gas_composition: name: reducing_gas_composition - definition_uri: https://w3id.org/nfdi4cat/catcore/reducing_gas_composition + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/reducing_gas_composition description: Composition of reducing gas used in TPR (e.g. 5% H2/Ar). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:reducing_gas_composition - slot_uri: catcore:reducing_gas_composition + - coremeta4cat:reducing_gas_composition + slot_uri: coremeta4cat:reducing_gas_composition owner: TPR domain_of: - TPR @@ -2960,12 +2961,12 @@ slots: multivalued: true oxidizing_gas_composition: name: oxidizing_gas_composition - definition_uri: https://w3id.org/nfdi4cat/catcore/oxidizing_gas_composition + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/oxidizing_gas_composition description: Composition of oxidising gas used in TPO (e.g. 5% O2/Ar). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:oxidizing_gas_composition - slot_uri: catcore:oxidizing_gas_composition + - coremeta4cat:oxidizing_gas_composition + slot_uri: coremeta4cat:oxidizing_gas_composition owner: TPO domain_of: - TPO @@ -2973,12 +2974,12 @@ slots: multivalued: true adsorbate_gas: name: adsorbate_gas - definition_uri: https://w3id.org/nfdi4cat/catcore/adsorbate_gas + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/adsorbate_gas description: Adsorbate gas used in BET surface area measurement (e.g. N2, Ar). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:adsorbate_gas - slot_uri: catcore:adsorbate_gas + - coremeta4cat:adsorbate_gas + slot_uri: coremeta4cat:adsorbate_gas owner: BET domain_of: - BET @@ -2986,12 +2987,12 @@ slots: multivalued: true degassing_temperature: name: degassing_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/degassing_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/degassing_temperature description: Temperature at which sample is degassed before BET measurement. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:degassing_temperature - slot_uri: catcore:degassing_temperature + - coremeta4cat:degassing_temperature + slot_uri: coremeta4cat:degassing_temperature owner: BET domain_of: - BET @@ -3001,13 +3002,13 @@ slots: ucum_code: Cel measurement_temperature: name: measurement_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/measurement_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/measurement_temperature description: Temperature at which BET adsorption isotherm is measured (e.g. 77 K for N2). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:measurement_temperature - slot_uri: catcore:measurement_temperature + - coremeta4cat:measurement_temperature + slot_uri: coremeta4cat:measurement_temperature owner: BET domain_of: - BET @@ -3017,13 +3018,13 @@ slots: ucum_code: K pore_size_distribution_method: name: pore_size_distribution_method - definition_uri: https://w3id.org/nfdi4cat/catcore/pore_size_distribution_method + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/pore_size_distribution_method description: Method used for pore size distribution calculation (e.g. BJH, DFT, HK). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:pore_size_distribution_method - slot_uri: catcore:pore_size_distribution_method + - coremeta4cat:pore_size_distribution_method + slot_uri: coremeta4cat:pore_size_distribution_method owner: BET domain_of: - BET @@ -3031,13 +3032,13 @@ slots: multivalued: true elements_analyzed: name: elements_analyzed - definition_uri: https://w3id.org/nfdi4cat/catcore/elements_analyzed + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/elements_analyzed description: List of elements analysed by combustion elemental analysis (e.g. C, H, N, S). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:elements_analyzed - slot_uri: catcore:elements_analyzed + - coremeta4cat:elements_analyzed + slot_uri: coremeta4cat:elements_analyzed owner: ElementalAnalysis domain_of: - ElementalAnalysis @@ -3045,12 +3046,12 @@ slots: multivalued: true combustion_temperature: name: combustion_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/combustion_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/combustion_temperature description: Combustion furnace temperature for elemental analysis. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:combustion_temperature - slot_uri: catcore:combustion_temperature + - coremeta4cat:combustion_temperature + slot_uri: coremeta4cat:combustion_temperature owner: ElementalAnalysis domain_of: - ElementalAnalysis @@ -3060,9 +3061,9 @@ slots: ucum_code: Cel detection_limit: name: detection_limit - definition_uri: https://w3id.org/nfdi4cat/catcore/detection_limit + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/detection_limit description: Detection limit of the analytical method. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - NCIT:C105701 slot_uri: NCIT:C105701 @@ -3073,12 +3074,12 @@ slots: multivalued: true matrix_effect_correction: name: matrix_effect_correction - definition_uri: https://w3id.org/nfdi4cat/catcore/matrix_effect_correction + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/matrix_effect_correction description: Method used to correct for matrix effects in ICP-AES. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:matrix_effect_correction - slot_uri: catcore:matrix_effect_correction + - coremeta4cat:matrix_effect_correction + slot_uri: coremeta4cat:matrix_effect_correction owner: ICPAES domain_of: - ICPAES @@ -3086,12 +3087,12 @@ slots: multivalued: true minimum_wavelength: name: minimum_wavelength - definition_uri: https://w3id.org/nfdi4cat/catcore/minimum_wavelength + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/minimum_wavelength description: Minimum wavelength of the UV-Vis scan range. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:minimum_wavelength - slot_uri: catcore:minimum_wavelength + - coremeta4cat:minimum_wavelength + slot_uri: coremeta4cat:minimum_wavelength owner: UVVisSpectroscopy domain_of: - UVVisSpectroscopy @@ -3101,12 +3102,12 @@ slots: ucum_code: nm maximum_wavelength: name: maximum_wavelength - definition_uri: https://w3id.org/nfdi4cat/catcore/maximum_wavelength + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/maximum_wavelength description: Maximum wavelength of the UV-Vis scan range. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:maximum_wavelength - slot_uri: catcore:maximum_wavelength + - coremeta4cat:maximum_wavelength + slot_uri: coremeta4cat:maximum_wavelength owner: UVVisSpectroscopy domain_of: - UVVisSpectroscopy @@ -3116,9 +3117,9 @@ slots: ucum_code: nm path_length: name: path_length - definition_uri: https://w3id.org/nfdi4cat/catcore/path_length + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/path_length description: Optical path length of the measurement cell. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - AFQ:0000268 slot_uri: AFQ:0000268 @@ -3131,12 +3132,12 @@ slots: ucum_code: cm emission_range: name: emission_range - definition_uri: https://w3id.org/nfdi4cat/catcore/emission_range + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/emission_range description: Wavelength range over which emission is detected. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:emission_range - slot_uri: catcore:emission_range + - coremeta4cat:emission_range + slot_uri: coremeta4cat:emission_range owner: PhotoluminescenceSpectroscopy domain_of: - PhotoluminescenceSpectroscopy @@ -3144,12 +3145,12 @@ slots: multivalued: true slit_width: name: slit_width - definition_uri: https://w3id.org/nfdi4cat/catcore/slit_width + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/slit_width description: Spectrometer entrance or exit slit width. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:slit_width - slot_uri: catcore:slit_width + - coremeta4cat:slit_width + slot_uri: coremeta4cat:slit_width owner: PhotoluminescenceSpectroscopy domain_of: - PhotoluminescenceSpectroscopy @@ -3159,13 +3160,13 @@ slots: ucum_code: nm lifetime_fitting_model: name: lifetime_fitting_model - definition_uri: https://w3id.org/nfdi4cat/catcore/lifetime_fitting_model + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/lifetime_fitting_model description: Mathematical model used for fluorescence lifetime fitting (e.g. mono-exponential, bi-exponential). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:lifetime_fitting_model - slot_uri: catcore:lifetime_fitting_model + - coremeta4cat:lifetime_fitting_model + slot_uri: coremeta4cat:lifetime_fitting_model owner: PhotoluminescenceLifetime domain_of: - PhotoluminescenceLifetime @@ -3173,12 +3174,12 @@ slots: multivalued: true number_of_shots: name: number_of_shots - definition_uri: https://w3id.org/nfdi4cat/catcore/number_of_shots + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/number_of_shots description: Number of laser shots accumulated per measurement point. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:number_of_shots - slot_uri: catcore:number_of_shots + - coremeta4cat:number_of_shots + slot_uri: coremeta4cat:number_of_shots owner: PhotoluminescenceLifetime domain_of: - PhotoluminescenceLifetime @@ -3186,9 +3187,9 @@ slots: multivalued: true scan_rate: name: scan_rate - definition_uri: https://w3id.org/nfdi4cat/catcore/scan_rate + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/scan_rate description: Potential scan rate in cyclic voltammetry. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - VOC4CAT:0007213 slot_uri: VOC4CAT:0007213 @@ -3201,12 +3202,12 @@ slots: ucum_code: mV/s minimum_potential: name: minimum_potential - definition_uri: https://w3id.org/nfdi4cat/catcore/minimum_potential + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/minimum_potential description: Lower potential limit in cyclic voltammetry. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:minimum_potential - slot_uri: catcore:minimum_potential + - coremeta4cat:minimum_potential + slot_uri: coremeta4cat:minimum_potential owner: CyclicVoltammetry domain_of: - CyclicVoltammetry @@ -3216,12 +3217,12 @@ slots: ucum_code: V maximum_potential: name: maximum_potential - definition_uri: https://w3id.org/nfdi4cat/catcore/maximum_potential + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/maximum_potential description: Upper potential limit in cyclic voltammetry. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:maximum_potential - slot_uri: catcore:maximum_potential + - coremeta4cat:maximum_potential + slot_uri: coremeta4cat:maximum_potential owner: CyclicVoltammetry domain_of: - CyclicVoltammetry @@ -3231,9 +3232,9 @@ slots: ucum_code: V step_size_potential: name: step_size_potential - definition_uri: https://w3id.org/nfdi4cat/catcore/step_size_potential + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/step_size_potential description: Potential step size in cyclic voltammetry. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - VOC4CAT:0007218 slot_uri: VOC4CAT:0007218 @@ -3246,13 +3247,13 @@ slots: ucum_code: mV electrode_configuration: name: electrode_configuration - definition_uri: https://w3id.org/nfdi4cat/catcore/electrode_configuration + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/electrode_configuration description: Configuration of electrodes used in conductivity measurement (e.g. 2-probe, 4-probe). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:electrode_configuration - slot_uri: catcore:electrode_configuration + - coremeta4cat:electrode_configuration + slot_uri: coremeta4cat:electrode_configuration owner: ConductivityMeasurement domain_of: - ConductivityMeasurement @@ -3260,9 +3261,9 @@ slots: multivalued: true ac_frequency: name: ac_frequency - definition_uri: https://w3id.org/nfdi4cat/catcore/ac_frequency + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ac_frequency description: Frequency of AC signal applied in impedance or conductivity measurement. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - VOC4CAT:0007239 slot_uri: VOC4CAT:0007239 @@ -3275,12 +3276,12 @@ slots: ucum_code: Hz ac_dc_mode: name: ac_dc_mode - definition_uri: https://w3id.org/nfdi4cat/catcore/ac_dc_mode + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ac_dc_mode description: AC or DC measurement mode used in conductivity measurement. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:ac_dc_mode - slot_uri: catcore:ac_dc_mode + - coremeta4cat:ac_dc_mode + slot_uri: coremeta4cat:ac_dc_mode owner: ConductivityMeasurement domain_of: - ConductivityMeasurement @@ -3288,13 +3289,13 @@ slots: multivalued: true sample_geometry: name: sample_geometry - definition_uri: https://w3id.org/nfdi4cat/catcore/sample_geometry + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/sample_geometry description: Geometry of the sample used in conductivity measurement (e.g. pellet, thin film). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:sample_geometry - slot_uri: catcore:sample_geometry + - coremeta4cat:sample_geometry + slot_uri: coremeta4cat:sample_geometry owner: ConductivityMeasurement domain_of: - ConductivityMeasurement @@ -3302,9 +3303,9 @@ slots: multivalued: true light_wavelength: name: light_wavelength - definition_uri: https://w3id.org/nfdi4cat/catcore/light_wavelength + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/light_wavelength description: Wavelength of the laser used in DLS measurement. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - VOC4CAT:0000176 slot_uri: VOC4CAT:0000176 @@ -3317,12 +3318,12 @@ slots: ucum_code: nm scattering_angle: name: scattering_angle - definition_uri: https://w3id.org/nfdi4cat/catcore/scattering_angle + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/scattering_angle description: Scattering angle at which intensity is detected in DLS. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:scattering_angle - slot_uri: catcore:scattering_angle + - coremeta4cat:scattering_angle + slot_uri: coremeta4cat:scattering_angle owner: DynamicLightScattering domain_of: - DynamicLightScattering @@ -3332,12 +3333,12 @@ slots: ucum_code: deg refractive_index: name: refractive_index - definition_uri: https://w3id.org/nfdi4cat/catcore/refractive_index + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/refractive_index description: Refractive index of the solvent used in DLS measurement. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:refractive_index - slot_uri: catcore:refractive_index + - coremeta4cat:refractive_index + slot_uri: coremeta4cat:refractive_index owner: DynamicLightScattering domain_of: - DynamicLightScattering @@ -3345,12 +3346,12 @@ slots: multivalued: true measurement_duration: name: measurement_duration - definition_uri: https://w3id.org/nfdi4cat/catcore/measurement_duration + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/measurement_duration description: Duration of a single DLS acquisition. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:measurement_duration - slot_uri: catcore:measurement_duration + - coremeta4cat:measurement_duration + slot_uri: coremeta4cat:measurement_duration owner: DynamicLightScattering domain_of: - DynamicLightScattering @@ -3360,55 +3361,55 @@ slots: ucum_code: s spray_voltage: name: spray_voltage - definition_uri: https://w3id.org/nfdi4cat/catcore/spray_voltage + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/spray_voltage description: Spray voltage applied in electrospray ionisation. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - CHMO:0002792 slot_uri: CHMO:0002792 - owner: ESI_MS + owner: ElectroSprayIonizationMassSpectrometry domain_of: - - ESI_MS + - ElectroSprayIonizationMassSpectrometry range: float multivalued: true unit: ucum_code: kV capillary_temperature: name: capillary_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/capillary_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/capillary_temperature description: Capillary or desolvation temperature in ESI source. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:capillary_temperature - slot_uri: catcore:capillary_temperature - owner: ESI_MS + - coremeta4cat:capillary_temperature + slot_uri: coremeta4cat:capillary_temperature + owner: ElectroSprayIonizationMassSpectrometry domain_of: - - ESI_MS + - ElectroSprayIonizationMassSpectrometry range: float multivalued: true unit: ucum_code: Cel solvent_composition: name: solvent_composition - definition_uri: https://w3id.org/nfdi4cat/catcore/solvent_composition + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/solvent_composition description: Solvent composition used for ESI spray solution. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - VOC4CAT:0007246 slot_uri: VOC4CAT:0007246 - owner: ESI_MS + owner: ElectroSprayIonizationMassSpectrometry domain_of: - - ESI_MS + - ElectroSprayIonizationMassSpectrometry range: string multivalued: true carrier_gas_purity: name: carrier_gas_purity - definition_uri: https://w3id.org/nfdi4cat/catcore/carrier_gas_purity + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/carrier_gas_purity description: Purity grade of the carrier gas used in GC. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:carrier_gas_purity - slot_uri: catcore:carrier_gas_purity + - coremeta4cat:carrier_gas_purity + slot_uri: coremeta4cat:carrier_gas_purity owner: GCMS domain_of: - GCMS @@ -3416,12 +3417,12 @@ slots: multivalued: true inlet_temperature: name: inlet_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/inlet_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/inlet_temperature description: GC inlet temperature. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:inlet_temperature - slot_uri: catcore:inlet_temperature + - coremeta4cat:inlet_temperature + slot_uri: coremeta4cat:inlet_temperature owner: GCMS domain_of: - GCMS @@ -3431,12 +3432,12 @@ slots: ucum_code: Cel minimum_oven_temperature: name: minimum_oven_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/minimum_oven_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/minimum_oven_temperature description: Minimum oven temperature in GC temperature programme. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:minimum_oven_temperature - slot_uri: catcore:minimum_oven_temperature + - coremeta4cat:minimum_oven_temperature + slot_uri: coremeta4cat:minimum_oven_temperature owner: GCMS domain_of: - GCMS @@ -3446,12 +3447,12 @@ slots: ucum_code: Cel maximum_oven_temperature: name: maximum_oven_temperature - definition_uri: https://w3id.org/nfdi4cat/catcore/maximum_oven_temperature + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/maximum_oven_temperature description: Maximum oven temperature in GC temperature programme. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:maximum_oven_temperature - slot_uri: catcore:maximum_oven_temperature + - coremeta4cat:maximum_oven_temperature + slot_uri: coremeta4cat:maximum_oven_temperature owner: GCMS domain_of: - GCMS @@ -3461,12 +3462,12 @@ slots: ucum_code: Cel heating_ramp: name: heating_ramp - definition_uri: https://w3id.org/nfdi4cat/catcore/heating_ramp + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/heating_ramp description: Temperature ramp rate in GC oven programme. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:heating_ramp - slot_uri: catcore:heating_ramp + - coremeta4cat:heating_ramp + slot_uri: coremeta4cat:heating_ramp owner: GCMS domain_of: - GCMS @@ -3476,12 +3477,12 @@ slots: ucum_code: Cel/min acquisition_mode: name: acquisition_mode - definition_uri: https://w3id.org/nfdi4cat/catcore/acquisition_mode + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/acquisition_mode description: Mass spectrometer acquisition mode (e.g. full scan, SIM, SRM). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:acquisition_mode - slot_uri: catcore:acquisition_mode + - coremeta4cat:acquisition_mode + slot_uri: coremeta4cat:acquisition_mode owner: GCMS domain_of: - GCMS @@ -3489,12 +3490,12 @@ slots: multivalued: true solvent_delay: name: solvent_delay - definition_uri: https://w3id.org/nfdi4cat/catcore/solvent_delay + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/solvent_delay description: Solvent delay time before MS acquisition begins. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:solvent_delay - slot_uri: catcore:solvent_delay + - coremeta4cat:solvent_delay + slot_uri: coremeta4cat:solvent_delay owner: GCMS domain_of: - GCMS @@ -3504,12 +3505,12 @@ slots: ucum_code: min trace_ion_detection: name: trace_ion_detection - definition_uri: https://w3id.org/nfdi4cat/catcore/trace_ion_detection + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/trace_ion_detection description: Trace ion detection setting or threshold. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:trace_ion_detection - slot_uri: catcore:trace_ion_detection + - coremeta4cat:trace_ion_detection + slot_uri: coremeta4cat:trace_ion_detection owner: GCMS domain_of: - GCMS @@ -3517,12 +3518,12 @@ slots: multivalued: true split_ratio: name: split_ratio - definition_uri: https://w3id.org/nfdi4cat/catcore/split_ratio + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/split_ratio description: Split ratio at the GC injector. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:split_ratio - slot_uri: catcore:split_ratio + - coremeta4cat:split_ratio + slot_uri: coremeta4cat:split_ratio owner: GCMS domain_of: - GCMS @@ -3530,9 +3531,9 @@ slots: multivalued: true eluent: name: eluent - definition_uri: https://w3id.org/nfdi4cat/catcore/eluent + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/eluent description: Eluent or mobile phase used in chromatography. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - AFRL:0000011 slot_uri: AFRL:0000011 @@ -3543,13 +3544,13 @@ slots: multivalued: true calibration_standard: name: calibration_standard - definition_uri: https://w3id.org/nfdi4cat/catcore/calibration_standard + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/calibration_standard description: Calibration standard used for molecular weight or retention time calibration. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:calibration_standard - slot_uri: catcore:calibration_standard + - coremeta4cat:calibration_standard + slot_uri: coremeta4cat:calibration_standard owner: SizeExclusionChromatography domain_of: - SizeExclusionChromatography @@ -3557,38 +3558,38 @@ slots: multivalued: true gradient_program: name: gradient_program - definition_uri: https://w3id.org/nfdi4cat/catcore/gradient_program + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/gradient_program description: Gradient elution programme used in HPLC-MS. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:gradient_program - slot_uri: catcore:gradient_program - owner: HPLC_MS + - coremeta4cat:gradient_program + slot_uri: coremeta4cat:gradient_program + owner: HighPerformanceLiquidChromatographyMassSpectrometry domain_of: - - HPLC_MS + - HighPerformanceLiquidChromatographyMassSpectrometry range: string multivalued: true ionization_mode: name: ionization_mode - definition_uri: https://w3id.org/nfdi4cat/catcore/ionization_mode + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ionization_mode description: Ionisation mode used in HPLC-MS (e.g. positive, negative, APCI, ESI). - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:ionization_mode - slot_uri: catcore:ionization_mode - owner: HPLC_MS + - coremeta4cat:ionization_mode + slot_uri: coremeta4cat:ionization_mode + owner: HighPerformanceLiquidChromatographyMassSpectrometry domain_of: - - HPLC_MS + - HighPerformanceLiquidChromatographyMassSpectrometry range: string multivalued: true catalyst_quantity: name: catalyst_quantity - definition_uri: https://w3id.org/nfdi4cat/catcore/catalyst_quantity + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/catalyst_quantity description: Mass of catalyst loaded into the reactor. - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - - catcore:catalyst_quantity - slot_uri: catcore:catalyst_quantity + - coremeta4cat:catalyst_quantity + slot_uri: coremeta4cat:catalyst_quantity owner: Reaction domain_of: - Reaction @@ -3599,11 +3600,11 @@ slots: ucum_code: g reactant: name: reactant - definition_uri: https://w3id.org/nfdi4cat/catcore/reactant + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/reactant description: 'Reactant(s) used in the reaction. Provide compound name, CAS number, or SMILES. For feeds, include composition and flow rate where known.' - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - VOC4CAT:0000101 slot_uri: VOC4CAT:0000101 @@ -3615,11 +3616,11 @@ slots: multivalued: true catalyst_type: name: catalyst_type - definition_uri: https://w3id.org/nfdi4cat/catcore/catalyst_type + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/catalyst_type description: 'Type of catalyst used (e.g. heterogeneous, homogeneous, biocatalyst). For heterogeneous catalysts, use voc4cat terms where available.' - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - VOC4CAT:0007014 slot_uri: VOC4CAT:0007014 @@ -3631,10 +3632,10 @@ slots: multivalued: true reactor_temperature_range: name: reactor_temperature_range - definition_uri: https://w3id.org/nfdi4cat/catcore/reactor_temperature_range + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/reactor_temperature_range description: "Temperature range used in the reactor during the reaction, expressed\n\ as a string range (e.g. \"200\u2013400 \xB0C\") or a single set-point." - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - VOC4CAT:0007032 slot_uri: VOC4CAT:0007032 @@ -3645,9 +3646,9 @@ slots: multivalued: true experiment_pressure: name: experiment_pressure - definition_uri: https://w3id.org/nfdi4cat/catcore/experiment_pressure + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/experiment_pressure description: Total pressure in the reactor during the experiment. - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - VOC4CAT:0000118 slot_uri: VOC4CAT:0000118 @@ -3660,14 +3661,14 @@ slots: ucum_code: bar feed_composition_range: name: feed_composition_range - definition_uri: https://w3id.org/nfdi4cat/catcore/feed_composition_range + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/feed_composition_range description: "Feed gas or liquid composition range studied (e.g. \"1\u201310 vol%\ \ CO in N2\").\nRecord as a string; for individual component concentrations\ \ use reactant." - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - - catcore:feed_composition_range - slot_uri: catcore:feed_composition_range + - coremeta4cat:feed_composition_range + slot_uri: coremeta4cat:feed_composition_range owner: Reaction domain_of: - Reaction @@ -3675,12 +3676,12 @@ slots: multivalued: true gas_distributor_type: name: gas_distributor_type - definition_uri: https://w3id.org/nfdi4cat/catcore/gas_distributor_type + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/gas_distributor_type description: Type or design of the gas distributor plate in a fluidized bed reactor. - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - - catcore:gas_distributor_type - slot_uri: catcore:gas_distributor_type + - coremeta4cat:gas_distributor_type + slot_uri: coremeta4cat:gas_distributor_type owner: FluidizedBedReactor domain_of: - FluidizedBedReactor @@ -3688,13 +3689,13 @@ slots: multivalued: true bed_expansion_height: name: bed_expansion_height - definition_uri: https://w3id.org/nfdi4cat/catcore/bed_expansion_height + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/bed_expansion_height description: Height of bed expansion above the settled bed height under operating conditions. - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - - catcore:bed_expansion_height - slot_uri: catcore:bed_expansion_height + - coremeta4cat:bed_expansion_height + slot_uri: coremeta4cat:bed_expansion_height owner: FluidizedBedReactor domain_of: - FluidizedBedReactor @@ -3704,28 +3705,28 @@ slots: ucum_code: cm bubble_size_distribution: name: bubble_size_distribution - definition_uri: https://w3id.org/nfdi4cat/catcore/bubble_size_distribution + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/bubble_size_distribution description: Description or characterization of bubble size distribution in the fluidized bed. - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - - catcore:bubble_size_distribution - slot_uri: catcore:bubble_size_distribution + - coremeta4cat:bubble_size_distribution + slot_uri: coremeta4cat:bubble_size_distribution owner: FluidizedBedReactor domain_of: - FluidizedBedReactor range: string software_package: name: software_package - definition_uri: https://w3id.org/nfdi4cat/catcore/software_package + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/software_package description: 'Software package or code used for the simulation (e.g. VASP, Quantum ESPRESSO, LAMMPS, CP2K, ORCA, Zacros). Include version number where possible.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:software_package - slot_uri: catcore:software_package + - coremeta4cat:software_package + slot_uri: coremeta4cat:software_package owner: Simulation domain_of: - Simulation @@ -3734,14 +3735,14 @@ slots: multivalued: true calculated_property: name: calculated_property - definition_uri: https://w3id.org/nfdi4cat/catcore/calculated_property + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/calculated_property description: 'A property computed by this Simulation, provided as a CalculatedProperty instance. Multiple properties may be computed in a single simulation run.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:calculated_property - slot_uri: catcore:calculated_property + - coremeta4cat:calculated_property + slot_uri: coremeta4cat:calculated_property owner: Simulation domain_of: - Simulation @@ -3752,14 +3753,14 @@ slots: inlined_as_list: true exchange_correlation_functional: name: exchange_correlation_functional - definition_uri: https://w3id.org/nfdi4cat/catcore/exchange_correlation_functional + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/exchange_correlation_functional description: 'Exchange-correlation functional used (e.g. PBE, PBEsol, RPBE, B3LYP, HSE06). The choice of functional directly affects accuracy.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:exchange_correlation_functional - slot_uri: catcore:exchange_correlation_functional + - coremeta4cat:exchange_correlation_functional + slot_uri: coremeta4cat:exchange_correlation_functional owner: DFT domain_of: - DFT @@ -3767,12 +3768,12 @@ slots: multivalued: true energy_cutoff: name: energy_cutoff - definition_uri: https://w3id.org/nfdi4cat/catcore/energy_cutoff + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/energy_cutoff description: Plane-wave kinetic energy cutoff for the basis set expansion. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:energy_cutoff - slot_uri: catcore:energy_cutoff + - coremeta4cat:energy_cutoff + slot_uri: coremeta4cat:energy_cutoff owner: DFT domain_of: - DFTSettingsMixin @@ -3783,14 +3784,14 @@ slots: ucum_code: eV convergence_criteria: name: convergence_criteria - definition_uri: https://w3id.org/nfdi4cat/catcore/convergence_criteria + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/convergence_criteria description: "Convergence thresholds applied during self-consistent field (SCF)\ \ and/or\ngeometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/\xC5\ )." - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:convergence_criteria - slot_uri: catcore:convergence_criteria + - coremeta4cat:convergence_criteria + slot_uri: coremeta4cat:convergence_criteria owner: DFT domain_of: - DFTSettingsMixin @@ -3799,15 +3800,15 @@ slots: multivalued: true dft_u_parameters: name: dft_u_parameters - definition_uri: https://w3id.org/nfdi4cat/catcore/dft_u_parameters + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/dft_u_parameters description: 'Hubbard U correction parameters (DFT+U). Specify element, orbital, and U value (e.g. "Fe d: U=4.0 eV, J=0.0 eV").' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:dft_u_parameters - slot_uri: catcore:dft_u_parameters + - coremeta4cat:dft_u_parameters + slot_uri: coremeta4cat:dft_u_parameters owner: DFT domain_of: - DFT @@ -3815,15 +3816,15 @@ slots: multivalued: true spin_polarization: name: spin_polarization - definition_uri: https://w3id.org/nfdi4cat/catcore/spin_polarization + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/spin_polarization description: 'Whether spin polarization (collinear magnetism) is included in the DFT calculation. Set to true for systems containing magnetic elements.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:spin_polarization - slot_uri: catcore:spin_polarization + - coremeta4cat:spin_polarization + slot_uri: coremeta4cat:spin_polarization owner: DFT domain_of: - DFT @@ -3831,13 +3832,13 @@ slots: multivalued: true total_energy_per_atom: name: total_energy_per_atom - definition_uri: https://w3id.org/nfdi4cat/catcore/total_energy_per_atom + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/total_energy_per_atom description: Total DFT ground-state energy divided by number of atoms in the unit cell. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:total_energy_per_atom - slot_uri: catcore:total_energy_per_atom + - coremeta4cat:total_energy_per_atom + slot_uri: coremeta4cat:total_energy_per_atom owner: DFT domain_of: - DFT @@ -3847,15 +3848,15 @@ slots: ucum_code: eV force_field: name: force_field - definition_uri: https://w3id.org/nfdi4cat/catcore/force_field + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/force_field description: 'Force field or interatomic potential used (e.g. ReaxFF, CHARMM, Tersoff, EAM). Include parametrisation source or reference.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:force_field - slot_uri: catcore:force_field + - coremeta4cat:force_field + slot_uri: coremeta4cat:force_field owner: MolecularDynamics domain_of: - MolecularDynamics @@ -3863,9 +3864,9 @@ slots: multivalued: true simulation_timestep: name: simulation_timestep - definition_uri: https://w3id.org/nfdi4cat/catcore/simulation_timestep + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/simulation_timestep description: Integration timestep used in molecular dynamics. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - APOLLO_SV:00000012 slot_uri: APOLLO_SV:00000012 @@ -3878,12 +3879,12 @@ slots: ucum_code: fs simulation_time: name: simulation_time - definition_uri: https://w3id.org/nfdi4cat/catcore/simulation_time + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/simulation_time description: Total simulated physical time of the MD trajectory. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:simulation_time - slot_uri: catcore:simulation_time + - coremeta4cat:simulation_time + slot_uri: coremeta4cat:simulation_time owner: MolecularDynamics domain_of: - MolecularDynamics @@ -3893,15 +3894,15 @@ slots: ucum_code: ps ensemble_type: name: ensemble_type - definition_uri: https://w3id.org/nfdi4cat/catcore/ensemble_type + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ensemble_type description: 'Statistical ensemble used in MD (e.g. NVE, NVT, NPT). Determines which thermodynamic quantities are conserved.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:ensemble_type - slot_uri: catcore:ensemble_type + - coremeta4cat:ensemble_type + slot_uri: coremeta4cat:ensemble_type owner: MolecularDynamics domain_of: - MolecularDynamics @@ -3909,12 +3910,12 @@ slots: multivalued: true number_of_atoms: name: number_of_atoms - definition_uri: https://w3id.org/nfdi4cat/catcore/number_of_atoms + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/number_of_atoms description: Number of atoms in the simulation cell or supercell. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:number_of_atoms - slot_uri: catcore:number_of_atoms + - coremeta4cat:number_of_atoms + slot_uri: coremeta4cat:number_of_atoms owner: MolecularDynamics domain_of: - MolecularDynamics @@ -3922,11 +3923,11 @@ slots: multivalued: true rate_constants: name: rate_constants - definition_uri: https://w3id.org/nfdi4cat/catcore/rate_constants + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/rate_constants description: 'Rate constants or Arrhenius parameters (pre-exponential factor and activation energy) for each elementary step in the reaction network.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - NCIT:C94967 slot_uri: NCIT:C94967 @@ -3937,15 +3938,15 @@ slots: multivalued: true solver_type: name: solver_type - definition_uri: https://w3id.org/nfdi4cat/catcore/solver_type + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/solver_type description: 'Numerical solver used for the microkinetic rate equations (e.g. LSODA, stiff ODE solver, steady-state Newton method).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:solver_type - slot_uri: catcore:solver_type + - coremeta4cat:solver_type + slot_uri: coremeta4cat:solver_type owner: Microkinetics domain_of: - Microkinetics @@ -3953,12 +3954,12 @@ slots: multivalued: true pressure: name: pressure - definition_uri: https://w3id.org/nfdi4cat/catcore/pressure + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/pressure description: Total pressure used in microkinetic or Monte Carlo simulation. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:pressure - slot_uri: catcore:pressure + - coremeta4cat:pressure + slot_uri: coremeta4cat:pressure owner: Microkinetics domain_of: - Microkinetics @@ -3968,12 +3969,12 @@ slots: ucum_code: bar surface_coverage: name: surface_coverage - definition_uri: https://w3id.org/nfdi4cat/catcore/surface_coverage + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/surface_coverage description: Surface coverage of adsorbed species (fraction of surface sites occupied). - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:surface_coverage - slot_uri: catcore:surface_coverage + - coremeta4cat:surface_coverage + slot_uri: coremeta4cat:surface_coverage owner: Microkinetics domain_of: - Microkinetics @@ -3981,12 +3982,12 @@ slots: multivalued: true activation_energy: name: activation_energy - definition_uri: https://w3id.org/nfdi4cat/catcore/activation_energy + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/activation_energy description: Activation energy for each elementary step in the reaction mechanism. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:activation_energy - slot_uri: catcore:activation_energy + - coremeta4cat:activation_energy + slot_uri: coremeta4cat:activation_energy owner: Microkinetics domain_of: - Microkinetics @@ -3996,13 +3997,13 @@ slots: ucum_code: eV interaction_potential: name: interaction_potential - definition_uri: https://w3id.org/nfdi4cat/catcore/interaction_potential + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/interaction_potential description: Interaction potential or Hamiltonian used to compute energies in MC moves. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:interaction_potential - slot_uri: catcore:interaction_potential + - coremeta4cat:interaction_potential + slot_uri: coremeta4cat:interaction_potential owner: MonteCarlo domain_of: - MonteCarlo @@ -4010,12 +4011,12 @@ slots: multivalued: true number_of_steps: name: number_of_steps - definition_uri: https://w3id.org/nfdi4cat/catcore/number_of_steps + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/number_of_steps description: Total number of Monte Carlo moves or trial configurations generated. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:number_of_steps - slot_uri: catcore:number_of_steps + - coremeta4cat:number_of_steps + slot_uri: coremeta4cat:number_of_steps owner: MonteCarlo domain_of: - MonteCarlo @@ -4023,13 +4024,13 @@ slots: multivalued: true lattice_size_type: name: lattice_size_type - definition_uri: https://w3id.org/nfdi4cat/catcore/lattice_size_type + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/lattice_size_type description: "Lattice geometry and dimensions used in lattice-based MC (e.g.\n\ \"100\xD7100 square lattice\", \"hexagonal 50\xD750\")." - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:lattice_size_type - slot_uri: catcore:lattice_size_type + - coremeta4cat:lattice_size_type + slot_uri: coremeta4cat:lattice_size_type owner: MonteCarlo domain_of: - MonteCarlo @@ -4037,14 +4038,14 @@ slots: multivalued: true acceptance_criteria: name: acceptance_criteria - definition_uri: https://w3id.org/nfdi4cat/catcore/acceptance_criteria + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/acceptance_criteria description: 'Criterion for accepting or rejecting MC moves (e.g. Metropolis, Kawasaki, heat-bath algorithm).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:acceptance_criteria - slot_uri: catcore:acceptance_criteria + - coremeta4cat:acceptance_criteria + slot_uri: coremeta4cat:acceptance_criteria owner: MonteCarlo domain_of: - MonteCarlo @@ -4052,13 +4053,13 @@ slots: multivalued: true equilibration_steps: name: equilibration_steps - definition_uri: https://w3id.org/nfdi4cat/catcore/equilibration_steps + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/equilibration_steps description: Number of MC steps used for equilibration before data collection begins. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:equilibration_steps - slot_uri: catcore:equilibration_steps + - coremeta4cat:equilibration_steps + slot_uri: coremeta4cat:equilibration_steps owner: MonteCarlo domain_of: - MonteCarlo @@ -4066,12 +4067,12 @@ slots: multivalued: true sampling_interval: name: sampling_interval - definition_uri: https://w3id.org/nfdi4cat/catcore/sampling_interval + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/sampling_interval description: Interval between successive MC snapshots used for property averaging. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:sampling_interval - slot_uri: catcore:sampling_interval + - coremeta4cat:sampling_interval + slot_uri: coremeta4cat:sampling_interval owner: MonteCarlo domain_of: - MonteCarlo @@ -4079,14 +4080,14 @@ slots: multivalued: true material_composition: name: material_composition - definition_uri: https://w3id.org/nfdi4cat/catcore/material_composition + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/material_composition description: 'Chemical composition of the simulated material (e.g. "Fe2O3", "Pt/CeO2"). Use empirical formula or SMILES for molecular systems.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:material_composition - slot_uri: catcore:material_composition + - coremeta4cat:material_composition + slot_uri: coremeta4cat:material_composition owner: MaterialDescriptorMixin domain_of: - MaterialDescriptorMixin @@ -4094,10 +4095,10 @@ slots: multivalued: true crystal_structure: name: crystal_structure - definition_uri: https://w3id.org/nfdi4cat/catcore/crystal_structure + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/crystal_structure description: "Crystal structure of the simulated material, including space group\ \ and\nlattice parameters (e.g. \"Fm-3m, a=3.92 \xC5 for Pt\")." - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - SIO:001100 slot_uri: SIO:001100 @@ -4108,13 +4109,13 @@ slots: multivalued: true k_point_mesh: name: k_point_mesh - definition_uri: https://w3id.org/nfdi4cat/catcore/k_point_mesh + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/k_point_mesh description: "Monkhorst-Pack k-point mesh used for Brillouin zone sampling\n(e.g.\ \ \"4\xD74\xD71\" for a surface slab, \"8\xD78\xD78\" for a bulk cell)." - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:k_point_mesh - slot_uri: catcore:k_point_mesh + - coremeta4cat:k_point_mesh + slot_uri: coremeta4cat:k_point_mesh owner: DFTSettingsMixin domain_of: - DFTSettingsMixin @@ -4122,12 +4123,12 @@ slots: multivalued: true formation_energy: name: formation_energy - definition_uri: https://w3id.org/nfdi4cat/catcore/formation_energy + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/formation_energy description: Formation energy per atom relative to elemental reference states. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:formation_energy - slot_uri: catcore:formation_energy + - coremeta4cat:formation_energy + slot_uri: coremeta4cat:formation_energy owner: ThermodynamicStability domain_of: - ThermodynamicStability @@ -4137,14 +4138,14 @@ slots: ucum_code: eV reference_energies: name: reference_energies - definition_uri: https://w3id.org/nfdi4cat/catcore/reference_energies + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/reference_energies description: 'Elemental reference energies used to compute formation energies (e.g. DFT total energies of elemental ground-state structures).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:reference_energies - slot_uri: catcore:reference_energies + - coremeta4cat:reference_energies + slot_uri: coremeta4cat:reference_energies owner: ThermodynamicStability domain_of: - ThermodynamicStability @@ -4152,14 +4153,14 @@ slots: multivalued: true energy_above_hull: name: energy_above_hull - definition_uri: https://w3id.org/nfdi4cat/catcore/energy_above_hull + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/energy_above_hull description: 'Distance above the convex hull of stable phases (thermodynamic stability metric). Zero for phases on the hull; positive values indicate metastability.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:energy_above_hull - slot_uri: catcore:energy_above_hull + - coremeta4cat:energy_above_hull + slot_uri: coremeta4cat:energy_above_hull owner: ThermodynamicStability domain_of: - ThermodynamicStability @@ -4169,12 +4170,12 @@ slots: ucum_code: eV phase_diagram_type: name: phase_diagram_type - definition_uri: https://w3id.org/nfdi4cat/catcore/phase_diagram_type + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/phase_diagram_type description: Type of phase diagram constructed (e.g. binary, ternary, quaternary). - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:phase_diagram_type - slot_uri: catcore:phase_diagram_type + - coremeta4cat:phase_diagram_type + slot_uri: coremeta4cat:phase_diagram_type owner: ThermodynamicStability domain_of: - ThermodynamicStability @@ -4182,14 +4183,14 @@ slots: multivalued: true competing_phases: name: competing_phases - definition_uri: https://w3id.org/nfdi4cat/catcore/competing_phases + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/competing_phases description: 'List of stable competing phases used in convex hull construction (e.g. "Fe2O3, Fe3O4, FeO, Fe").' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:competing_phases - slot_uri: catcore:competing_phases + - coremeta4cat:competing_phases + slot_uri: coremeta4cat:competing_phases owner: ThermodynamicStability domain_of: - ThermodynamicStability @@ -4197,13 +4198,13 @@ slots: multivalued: true piezoelectric_tensor: name: piezoelectric_tensor - definition_uri: https://w3id.org/nfdi4cat/catcore/piezoelectric_tensor + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/piezoelectric_tensor description: "Components of the piezoelectric tensor e_ij (C/m\xB2) or d_ij (pC/N),\n\ describing the coupling between stress and electric polarization." - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:piezoelectric_tensor - slot_uri: catcore:piezoelectric_tensor + - coremeta4cat:piezoelectric_tensor + slot_uri: coremeta4cat:piezoelectric_tensor owner: Piezoelectricity domain_of: - Piezoelectricity @@ -4211,12 +4212,12 @@ slots: multivalued: true crystal_symmetry: name: crystal_symmetry - definition_uri: https://w3id.org/nfdi4cat/catcore/crystal_symmetry + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/crystal_symmetry description: Point group or space group symmetry of the crystal structure. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:crystal_symmetry - slot_uri: catcore:crystal_symmetry + - coremeta4cat:crystal_symmetry + slot_uri: coremeta4cat:crystal_symmetry owner: Piezoelectricity domain_of: - Piezoelectricity @@ -4224,12 +4225,12 @@ slots: multivalued: true strain_applied: name: strain_applied - definition_uri: https://w3id.org/nfdi4cat/catcore/strain_applied + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/strain_applied description: Magnitude of applied strain in the piezoelectric calculation. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:strain_applied - slot_uri: catcore:strain_applied + - coremeta4cat:strain_applied + slot_uri: coremeta4cat:strain_applied owner: Piezoelectricity domain_of: - Piezoelectricity @@ -4237,14 +4238,14 @@ slots: multivalued: true ionic_electronic_contributions: name: ionic_electronic_contributions - definition_uri: https://w3id.org/nfdi4cat/catcore/ionic_electronic_contributions + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ionic_electronic_contributions description: 'Decomposition of the piezoelectric or dielectric response into ionic (nuclear) and electronic contributions.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:ionic_electronic_contributions - slot_uri: catcore:ionic_electronic_contributions + - coremeta4cat:ionic_electronic_contributions + slot_uri: coremeta4cat:ionic_electronic_contributions owner: Piezoelectricity domain_of: - Piezoelectricity @@ -4252,14 +4253,14 @@ slots: multivalued: true elastic_tensor: name: elastic_tensor - definition_uri: https://w3id.org/nfdi4cat/catcore/elastic_tensor + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/elastic_tensor description: 'Full Voigt-notation elastic tensor C_ij (GPa) describing the linear elastic response of the material.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:elastic_tensor - slot_uri: catcore:elastic_tensor + - coremeta4cat:elastic_tensor + slot_uri: coremeta4cat:elastic_tensor owner: ElasticConstants domain_of: - ElasticConstants @@ -4267,12 +4268,12 @@ slots: multivalued: true bulk_modulus: name: bulk_modulus - definition_uri: https://w3id.org/nfdi4cat/catcore/bulk_modulus + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/bulk_modulus description: Bulk modulus (resistance to uniform compression). - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:bulk_modulus - slot_uri: catcore:bulk_modulus + - coremeta4cat:bulk_modulus + slot_uri: coremeta4cat:bulk_modulus owner: EquationsOfState domain_of: - ElasticConstants @@ -4283,12 +4284,12 @@ slots: ucum_code: GPa shear_modulus: name: shear_modulus - definition_uri: https://w3id.org/nfdi4cat/catcore/shear_modulus + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/shear_modulus description: Shear modulus (resistance to shear deformation). - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:shear_modulus - slot_uri: catcore:shear_modulus + - coremeta4cat:shear_modulus + slot_uri: coremeta4cat:shear_modulus owner: ElasticConstants domain_of: - ElasticConstants @@ -4298,13 +4299,13 @@ slots: ucum_code: GPa poisson_ratio: name: poisson_ratio - definition_uri: https://w3id.org/nfdi4cat/catcore/poisson_ratio + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/poisson_ratio description: Poisson's ratio (ratio of transverse to axial strain under uniaxial load). - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:poisson_ratio - slot_uri: catcore:poisson_ratio + - coremeta4cat:poisson_ratio + slot_uri: coremeta4cat:poisson_ratio owner: ElasticConstants domain_of: - ElasticConstants @@ -4312,12 +4313,12 @@ slots: multivalued: true young_modulus: name: young_modulus - definition_uri: https://w3id.org/nfdi4cat/catcore/young_modulus + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/young_modulus description: Young's modulus (stiffness under uniaxial tension or compression). - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:young_modulus - slot_uri: catcore:young_modulus + - coremeta4cat:young_modulus + slot_uri: coremeta4cat:young_modulus owner: ElasticConstants domain_of: - ElasticConstants @@ -4327,15 +4328,15 @@ slots: ucum_code: GPa surface_energy: name: surface_energy - definition_uri: https://w3id.org/nfdi4cat/catcore/surface_energy + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/surface_energy description: 'Cleavage energy per unit area required to create the surface from the bulk. A lower value indicates a more stable surface facet.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:surface_energy - slot_uri: catcore:surface_energy + - coremeta4cat:surface_energy + slot_uri: coremeta4cat:surface_energy owner: Surfaces domain_of: - Surfaces @@ -4345,13 +4346,13 @@ slots: ucum_code: J/m2 miller_indices: name: miller_indices - definition_uri: https://w3id.org/nfdi4cat/catcore/miller_indices + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/miller_indices description: Miller indices of the modelled surface facet (e.g. "(111)", "(110)", "(100)"). - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:miller_indices - slot_uri: catcore:miller_indices + - coremeta4cat:miller_indices + slot_uri: coremeta4cat:miller_indices owner: Surfaces domain_of: - Surfaces @@ -4359,12 +4360,12 @@ slots: multivalued: true slab_thickness: name: slab_thickness - definition_uri: https://w3id.org/nfdi4cat/catcore/slab_thickness + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/slab_thickness description: Thickness of the periodic slab model used to represent the surface. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:slab_thickness - slot_uri: catcore:slab_thickness + - coremeta4cat:slab_thickness + slot_uri: coremeta4cat:slab_thickness owner: Surfaces domain_of: - Surfaces @@ -4374,14 +4375,14 @@ slots: ucum_code: Ao vacuum_spacing: name: vacuum_spacing - definition_uri: https://w3id.org/nfdi4cat/catcore/vacuum_spacing + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/vacuum_spacing description: 'Vacuum layer thickness added above the slab to prevent spurious periodic interactions between slab images.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:vacuum_spacing - slot_uri: catcore:vacuum_spacing + - coremeta4cat:vacuum_spacing + slot_uri: coremeta4cat:vacuum_spacing owner: Surfaces domain_of: - Surfaces @@ -4391,14 +4392,14 @@ slots: ucum_code: Ao surface_termination_method: name: surface_termination_method - definition_uri: https://w3id.org/nfdi4cat/catcore/surface_termination_method + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/surface_termination_method description: 'Method used to terminate the slab and handle dangling bonds (e.g. H-passivation, OH-termination, dipole correction).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:surface_termination_method - slot_uri: catcore:surface_termination_method + - coremeta4cat:surface_termination_method + slot_uri: coremeta4cat:surface_termination_method owner: Surfaces domain_of: - Surfaces @@ -4406,15 +4407,15 @@ slots: multivalued: true dielectric_tensor: name: dielectric_tensor - definition_uri: https://w3id.org/nfdi4cat/catcore/dielectric_tensor + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/dielectric_tensor description: 'Components of the static and/or high-frequency dielectric tensor epsilon_ij, computed from DFPT.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:dielectric_tensor - slot_uri: catcore:dielectric_tensor + - coremeta4cat:dielectric_tensor + slot_uri: coremeta4cat:dielectric_tensor owner: DielectricTensors domain_of: - DielectricTensors @@ -4422,14 +4423,14 @@ slots: multivalued: true born_effective_charges: name: born_effective_charges - definition_uri: https://w3id.org/nfdi4cat/catcore/born_effective_charges + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/born_effective_charges description: 'Born effective charge tensors Z*_ij for each atom, describing how the polarization changes with atomic displacements.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:born_effective_charges - slot_uri: catcore:born_effective_charges + - coremeta4cat:born_effective_charges + slot_uri: coremeta4cat:born_effective_charges owner: DielectricTensors domain_of: - DielectricTensors @@ -4437,14 +4438,14 @@ slots: multivalued: true force_constant_method: name: force_constant_method - definition_uri: https://w3id.org/nfdi4cat/catcore/force_constant_method + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/force_constant_method description: 'Method used to compute the interatomic force constants (e.g. finite differences / supercell method, DFPT/linear response).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:force_constant_method - slot_uri: catcore:force_constant_method + - coremeta4cat:force_constant_method + slot_uri: coremeta4cat:force_constant_method owner: PhononDispersion domain_of: - PhononDispersion @@ -4452,13 +4453,13 @@ slots: multivalued: true kq_point_mesh: name: kq_point_mesh - definition_uri: https://w3id.org/nfdi4cat/catcore/kq_point_mesh + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/kq_point_mesh description: "k/q-point mesh for phonon Brillouin zone sampling (e.g. \"8\xD7\ 8\xD78\").\nDistinct from the electronic k-point mesh." - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:kq_point_mesh - slot_uri: catcore:kq_point_mesh + - coremeta4cat:kq_point_mesh + slot_uri: coremeta4cat:kq_point_mesh owner: PhononDispersion domain_of: - PhononDispersion @@ -4466,13 +4467,13 @@ slots: multivalued: true smearing_parameter: name: smearing_parameter - definition_uri: https://w3id.org/nfdi4cat/catcore/smearing_parameter + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/smearing_parameter description: Smearing or broadening parameter applied to the phonon density of states. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:smearing_parameter - slot_uri: catcore:smearing_parameter + - coremeta4cat:smearing_parameter + slot_uri: coremeta4cat:smearing_parameter owner: PhononDispersion domain_of: - PhononDispersion @@ -4482,14 +4483,14 @@ slots: ucum_code: eV imaginary_modes: name: imaginary_modes - definition_uri: https://w3id.org/nfdi4cat/catcore/imaginary_modes + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/imaginary_modes description: 'Whether imaginary (soft) phonon modes are present in the dispersion. Imaginary modes indicate dynamical instability of the structure.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:imaginary_modes - slot_uri: catcore:imaginary_modes + - coremeta4cat:imaginary_modes + slot_uri: coremeta4cat:imaginary_modes owner: PhononDispersion domain_of: - PhononDispersion @@ -4497,14 +4498,14 @@ slots: multivalued: true fit_method: name: fit_method - definition_uri: https://w3id.org/nfdi4cat/catcore/fit_method + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/fit_method description: 'Parametric model used to fit the energy-volume curve (e.g. Birch-Murnaghan 3rd order, Vinet, Murnaghan).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:fit_method - slot_uri: catcore:fit_method + - coremeta4cat:fit_method + slot_uri: coremeta4cat:fit_method owner: EquationsOfState domain_of: - EquationsOfState @@ -4512,12 +4513,12 @@ slots: multivalued: true pressure_derivative: name: pressure_derivative - definition_uri: https://w3id.org/nfdi4cat/catcore/pressure_derivative + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/pressure_derivative description: Pressure derivative of the bulk modulus B' (dimensionless). - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:pressure_derivative - slot_uri: catcore:pressure_derivative + - coremeta4cat:pressure_derivative + slot_uri: coremeta4cat:pressure_derivative owner: EquationsOfState domain_of: - EquationsOfState @@ -4525,12 +4526,12 @@ slots: multivalued: true fit_residuals: name: fit_residuals - definition_uri: https://w3id.org/nfdi4cat/catcore/fit_residuals + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/fit_residuals description: Root-mean-square residuals of the energy-volume fit. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:fit_residuals - slot_uri: catcore:fit_residuals + - coremeta4cat:fit_residuals + slot_uri: coremeta4cat:fit_residuals owner: EquationsOfState domain_of: - EquationsOfState @@ -4538,13 +4539,13 @@ slots: multivalued: true ph_range: name: ph_range - definition_uri: https://w3id.org/nfdi4cat/catcore/ph_range + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ph_range description: "pH range covered in the Pourbaix stability diagram (e.g. \"0\u2013\ 14\")." - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:ph_range - slot_uri: catcore:ph_range + - coremeta4cat:ph_range + slot_uri: coremeta4cat:ph_range owner: AqueousStability domain_of: - AqueousStability @@ -4552,14 +4553,14 @@ slots: multivalued: true potential_range: name: potential_range - definition_uri: https://w3id.org/nfdi4cat/catcore/potential_range + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/potential_range description: 'Electrode potential range covered in the Pourbaix diagram (e.g. "-2 to +2 V vs SHE").' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:potential_range - slot_uri: catcore:potential_range + - coremeta4cat:potential_range + slot_uri: coremeta4cat:potential_range owner: AqueousStability domain_of: - AqueousStability @@ -4567,14 +4568,14 @@ slots: multivalued: true solvation_model: name: solvation_model - definition_uri: https://w3id.org/nfdi4cat/catcore/solvation_model + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/solvation_model description: 'Implicit solvation model used to account for aqueous environment (e.g. VASPsol, SCCS/Environ, COSMO).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:solvation_model - slot_uri: catcore:solvation_model + - coremeta4cat:solvation_model + slot_uri: coremeta4cat:solvation_model owner: AqueousStability domain_of: - AqueousStability @@ -4582,12 +4583,12 @@ slots: multivalued: true ionic_strength: name: ionic_strength - definition_uri: https://w3id.org/nfdi4cat/catcore/ionic_strength + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ionic_strength description: Ionic strength of the electrolyte solution modelled. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:ionic_strength - slot_uri: catcore:ionic_strength + - coremeta4cat:ionic_strength + slot_uri: coremeta4cat:ionic_strength owner: AqueousStability domain_of: - AqueousStability @@ -4597,14 +4598,14 @@ slots: ucum_code: mol/L grain_boundary_plane: name: grain_boundary_plane - definition_uri: https://w3id.org/nfdi4cat/catcore/grain_boundary_plane + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/grain_boundary_plane description: 'Crystallographic plane of the grain boundary, expressed using Miller indices (e.g. "Sigma5 (310)[001]").' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:grain_boundary_plane - slot_uri: catcore:grain_boundary_plane + - coremeta4cat:grain_boundary_plane + slot_uri: coremeta4cat:grain_boundary_plane owner: GrainBoundaries domain_of: - GrainBoundaries @@ -4612,12 +4613,12 @@ slots: multivalued: true misorientation_angle: name: misorientation_angle - definition_uri: https://w3id.org/nfdi4cat/catcore/misorientation_angle + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/misorientation_angle description: Misorientation angle between adjacent grains at the boundary. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:misorientation_angle - slot_uri: catcore:misorientation_angle + - coremeta4cat:misorientation_angle + slot_uri: coremeta4cat:misorientation_angle owner: GrainBoundaries domain_of: - GrainBoundaries @@ -4627,12 +4628,12 @@ slots: ucum_code: deg grain_boundary_energy: name: grain_boundary_energy - definition_uri: https://w3id.org/nfdi4cat/catcore/grain_boundary_energy + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/grain_boundary_energy description: Excess energy per unit area of the grain boundary. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:grain_boundary_energy - slot_uri: catcore:grain_boundary_energy + - coremeta4cat:grain_boundary_energy + slot_uri: coremeta4cat:grain_boundary_energy owner: GrainBoundaries domain_of: - GrainBoundaries @@ -4642,13 +4643,13 @@ slots: ucum_code: J/m2 simulation_cell_size: name: simulation_cell_size - definition_uri: https://w3id.org/nfdi4cat/catcore/simulation_cell_size + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/simulation_cell_size description: "Dimensions of the simulation cell used to model the grain boundary\n\ (e.g. \"10\xD710\xD730 nm\")." - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:simulation_cell_size - slot_uri: catcore:simulation_cell_size + - coremeta4cat:simulation_cell_size + slot_uri: coremeta4cat:simulation_cell_size owner: GrainBoundaries domain_of: - GrainBoundaries @@ -4656,12 +4657,12 @@ slots: multivalued: true gb_excess_volume: name: gb_excess_volume - definition_uri: https://w3id.org/nfdi4cat/catcore/gb_excess_volume + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/gb_excess_volume description: Excess volume per unit area associated with the grain boundary. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:gb_excess_volume - slot_uri: catcore:gb_excess_volume + - coremeta4cat:gb_excess_volume + slot_uri: coremeta4cat:gb_excess_volume owner: GrainBoundaries domain_of: - GrainBoundaries @@ -4669,14 +4670,14 @@ slots: multivalued: true gb_structural_units: name: gb_structural_units - definition_uri: https://w3id.org/nfdi4cat/catcore/gb_structural_units + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/gb_structural_units description: 'Description of the structural units (repeating atomic motifs) that constitute the grain boundary structure.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:gb_structural_units - slot_uri: catcore:gb_structural_units + - coremeta4cat:gb_structural_units + slot_uri: coremeta4cat:gb_structural_units owner: GrainBoundaries domain_of: - GrainBoundaries @@ -4684,14 +4685,14 @@ slots: multivalued: true charge_defect_segregation: name: charge_defect_segregation - definition_uri: https://w3id.org/nfdi4cat/catcore/charge_defect_segregation + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/charge_defect_segregation description: 'Data describing charge carrier or point defect segregation behaviour at the grain boundary (e.g. segregation energy per defect type).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:charge_defect_segregation - slot_uri: catcore:charge_defect_segregation + - coremeta4cat:charge_defect_segregation + slot_uri: coremeta4cat:charge_defect_segregation owner: GrainBoundaries domain_of: - GrainBoundaries @@ -4699,15 +4700,15 @@ slots: multivalued: true smearing_method: name: smearing_method - definition_uri: https://w3id.org/nfdi4cat/catcore/smearing_method + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/smearing_method description: 'Electronic smearing scheme and width used in the SCF calculation (e.g. Methfessel-Paxton order 1 with sigma=0.2 eV, Gaussian with sigma=0.05 eV).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:smearing_method - slot_uri: catcore:smearing_method + - coremeta4cat:smearing_method + slot_uri: coremeta4cat:smearing_method owner: ElectronicStructure domain_of: - ElectronicStructure @@ -4715,14 +4716,14 @@ slots: multivalued: true spin_polarized: name: spin_polarized - definition_uri: https://w3id.org/nfdi4cat/catcore/spin_polarized + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/spin_polarized description: 'Whether the electronic structure calculation is spin-polarized (accounts for spin-up and spin-down electrons separately).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:spin_polarized - slot_uri: catcore:spin_polarized + - coremeta4cat:spin_polarized + slot_uri: coremeta4cat:spin_polarized owner: ElectronicStructure domain_of: - ElectronicStructure @@ -4730,14 +4731,14 @@ slots: multivalued: true band_path: name: band_path - definition_uri: https://w3id.org/nfdi4cat/catcore/band_path + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/band_path description: 'High-symmetry k-path through the Brillouin zone used to plot the band structure (e.g. "Gamma-X-M-Gamma-R" for cubic, following SeeK-path convention).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:band_path - slot_uri: catcore:band_path + - coremeta4cat:band_path + slot_uri: coremeta4cat:band_path owner: ElectronicStructure domain_of: - ElectronicStructure @@ -4745,13 +4746,13 @@ slots: multivalued: true fermi_energy: name: fermi_energy - definition_uri: https://w3id.org/nfdi4cat/catcore/fermi_energy + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/fermi_energy description: Fermi energy (chemical potential of electrons) in the calculated system. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:fermi_energy - slot_uri: catcore:fermi_energy + - coremeta4cat:fermi_energy + slot_uri: coremeta4cat:fermi_energy owner: ElectronicStructure domain_of: - ElectronicStructure @@ -4761,14 +4762,14 @@ slots: ucum_code: eV polarization_direction: name: polarization_direction - definition_uri: https://w3id.org/nfdi4cat/catcore/polarization_direction + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/polarization_direction description: 'Crystallographic direction of the spontaneous electric polarization (e.g. "[001]" for tetragonal BaTiO_3).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:polarization_direction - slot_uri: catcore:polarization_direction + - coremeta4cat:polarization_direction + slot_uri: coremeta4cat:polarization_direction owner: Ferroelectrics domain_of: - Ferroelectrics @@ -4776,12 +4777,12 @@ slots: multivalued: true spontaneous_polarization: name: spontaneous_polarization - definition_uri: https://w3id.org/nfdi4cat/catcore/spontaneous_polarization + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/spontaneous_polarization description: Magnitude of the spontaneous electric polarization. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:spontaneous_polarization - slot_uri: catcore:spontaneous_polarization + - coremeta4cat:spontaneous_polarization + slot_uri: coremeta4cat:spontaneous_polarization owner: Ferroelectrics domain_of: - Ferroelectrics @@ -4791,14 +4792,14 @@ slots: ucum_code: uC/cm2 reference_structure: name: reference_structure - definition_uri: https://w3id.org/nfdi4cat/catcore/reference_structure + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/reference_structure description: 'Reference (paraelectric/centrosymmetric) structure used as the zero- polarization endpoint in the Berry-phase polarization calculation.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:reference_structure - slot_uri: catcore:reference_structure + - coremeta4cat:reference_structure + slot_uri: coremeta4cat:reference_structure owner: Ferroelectrics domain_of: - Ferroelectrics @@ -4806,12 +4807,12 @@ slots: multivalued: true switching_barrier: name: switching_barrier - definition_uri: https://w3id.org/nfdi4cat/catcore/switching_barrier + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/switching_barrier description: Energy barrier for polarization switching between equivalent states. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:switching_barrier - slot_uri: catcore:switching_barrier + - coremeta4cat:switching_barrier + slot_uri: coremeta4cat:switching_barrier owner: Ferroelectrics domain_of: - Ferroelectrics @@ -4821,12 +4822,12 @@ slots: ucum_code: eV coercive_field: name: coercive_field - definition_uri: https://w3id.org/nfdi4cat/catcore/coercive_field + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/coercive_field description: Electric field required to reverse the polarization direction. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:coercive_field - slot_uri: catcore:coercive_field + - coremeta4cat:coercive_field + slot_uri: coremeta4cat:coercive_field owner: Ferroelectrics domain_of: - Ferroelectrics @@ -4836,12 +4837,12 @@ slots: ucum_code: kV/cm temperature_dependence: name: temperature_dependence - definition_uri: https://w3id.org/nfdi4cat/catcore/temperature_dependence + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/temperature_dependence description: Description of how the ferroelectric properties vary with temperature. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:temperature_dependence - slot_uri: catcore:temperature_dependence + - coremeta4cat:temperature_dependence + slot_uri: coremeta4cat:temperature_dependence owner: Ferroelectrics domain_of: - Ferroelectrics @@ -4849,12 +4850,12 @@ slots: multivalued: true material_sample: name: material_sample - definition_uri: https://w3id.org/nfdi4cat/catcore/material_sample + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/material_sample description: 'Reference to the material or MaterialSample being characterised by this calculated band gap.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - VOC4CAT:0005056 slot_uri: VOC4CAT:0005056 @@ -4865,15 +4866,15 @@ slots: multivalued: true structure_model: name: structure_model - definition_uri: https://w3id.org/nfdi4cat/catcore/structure_model + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/structure_model description: 'Model structure used in the band gap calculation (e.g. bulk unit cell, surface slab, defect supercell).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:structure_model - slot_uri: catcore:structure_model + - coremeta4cat:structure_model + slot_uri: coremeta4cat:structure_model owner: BandGap domain_of: - BandGap @@ -4881,12 +4882,12 @@ slots: multivalued: true smearing_broadening: name: smearing_broadening - definition_uri: https://w3id.org/nfdi4cat/catcore/smearing_broadening + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/smearing_broadening description: Gaussian or Lorentzian broadening applied to the simulated spectrum. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:smearing_broadening - slot_uri: catcore:smearing_broadening + - coremeta4cat:smearing_broadening + slot_uri: coremeta4cat:smearing_broadening owner: BandGap domain_of: - BandGap @@ -4896,14 +4897,14 @@ slots: ucum_code: eV direct_indirect: name: direct_indirect - definition_uri: https://w3id.org/nfdi4cat/catcore/direct_indirect + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/direct_indirect description: 'Band gap character: "direct" (VBM and CBM at same k-point) or "indirect" (VBM and CBM at different k-points).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:direct_indirect - slot_uri: catcore:direct_indirect + - coremeta4cat:direct_indirect + slot_uri: coremeta4cat:direct_indirect owner: BandGap domain_of: - BandGap @@ -4911,12 +4912,12 @@ slots: multivalued: true experimental_reference: name: experimental_reference - definition_uri: https://w3id.org/nfdi4cat/catcore/experimental_reference + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/experimental_reference description: Experimental band gap value used for benchmarking the calculation. - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:experimental_reference - slot_uri: catcore:experimental_reference + - coremeta4cat:experimental_reference + slot_uri: coremeta4cat:experimental_reference owner: BandGap domain_of: - BandGap @@ -4926,14 +4927,14 @@ slots: ucum_code: eV gw_hybrid_correction: name: gw_hybrid_correction - definition_uri: https://w3id.org/nfdi4cat/catcore/gw_hybrid_correction + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/gw_hybrid_correction description: 'Whether a many-body GW correction or hybrid functional (e.g. HSE06) was applied to correct the DFT band gap underestimation.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:gw_hybrid_correction - slot_uri: catcore:gw_hybrid_correction + - coremeta4cat:gw_hybrid_correction + slot_uri: coremeta4cat:gw_hybrid_correction owner: BandGap domain_of: - BandGap @@ -4941,14 +4942,14 @@ slots: multivalued: true excitonic_correction: name: excitonic_correction - definition_uri: https://w3id.org/nfdi4cat/catcore/excitonic_correction + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/excitonic_correction description: 'Excitonic correction (from Bethe-Salpeter equation) applied to the optical band gap.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:excitonic_correction - slot_uri: catcore:excitonic_correction + - coremeta4cat:excitonic_correction + slot_uri: coremeta4cat:excitonic_correction owner: BandGap domain_of: - BandGap @@ -5657,7 +5658,7 @@ slots: in_subset: - domain_agnostic_core from_schema: https://w3id.org/nfdi-de/dcat-ap-plus/ - slot_uri: dcatap_plus:id + slot_uri: dcatapplus:id identifier: true owner: Resource domain_of: @@ -6981,11 +6982,11 @@ slots: Should reference a CharacterizationTechnique instance (e.g. a GCMS or - HPLC_MS object from catcore_characterization_ap). The abstract stub + HPLC_MS object from coremeta4cat_characterization_ap). The abstract stub ProductIdentificationMethod is retained for backward compatibility.' - from_schema: https://w3id.org/nfdi4cat/catcore - slot_uri: catcore:product_identification_method + from_schema: https://w3id.org/nfdi4cat/coremeta4cat + slot_uri: coremeta4cat:product_identification_method range: ProductIdentificationMethod required: true multivalued: true @@ -7103,15 +7104,15 @@ slots: inlined_as_list: true Synthesis_nominal_composition: name: Synthesis_nominal_composition - definition_uri: https://w3id.org/nfdi4cat/catcore/nominal_composition + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/nominal_composition description: Nominal elemental or chemical composition of the catalyst (e.g. 5wt% Pt/Al2O3). - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:nominal_composition + - coremeta4cat:nominal_composition is_a: nominal_composition domain: Synthesis - slot_uri: catcore:nominal_composition + slot_uri: coremeta4cat:nominal_composition alias: nominal_composition owner: Synthesis domain_of: @@ -7123,16 +7124,16 @@ slots: multivalued: true Synthesis_catalyst_measured_properties: name: Synthesis_catalyst_measured_properties - definition_uri: https://w3id.org/nfdi4cat/catcore/catalyst_measured_properties + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/catalyst_measured_properties description: 'Key measured properties of the resulting catalyst (e.g. BET surface area, sieve fraction, molar ratio).' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:catalyst_measured_properties + - coremeta4cat:catalyst_measured_properties is_a: catalyst_measured_properties domain: Synthesis - slot_uri: catcore:catalyst_measured_properties + slot_uri: coremeta4cat:catalyst_measured_properties alias: catalyst_measured_properties owner: Synthesis domain_of: @@ -7213,15 +7214,15 @@ slots: inlined_as_list: true Synthesis_storage_conditions: name: Synthesis_storage_conditions - definition_uri: https://w3id.org/nfdi4cat/catcore/storage_conditions + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/storage_conditions description: "Conditions under which the catalyst is stored (e.g. inert atmosphere,\ \ 4\xB0C)." - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:storage_conditions + - coremeta4cat:storage_conditions is_a: storage_conditions domain: Synthesis - slot_uri: catcore:storage_conditions + slot_uri: coremeta4cat:storage_conditions alias: storage_conditions owner: Synthesis domain_of: @@ -7233,14 +7234,14 @@ slots: multivalued: true Precursor_precursor_quantity: name: Precursor_precursor_quantity - definition_uri: https://w3id.org/nfdi4cat/catcore/precursor_quantity + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/precursor_quantity description: Quantity of precursor used in synthesis. - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:precursor_quantity + - coremeta4cat:precursor_quantity is_a: precursor_quantity domain: Precursor - slot_uri: catcore:precursor_quantity + slot_uri: coremeta4cat:precursor_quantity alias: precursor_quantity owner: Precursor domain_of: @@ -7280,9 +7281,9 @@ slots: inlined_as_list: false Characterization_equipment: name: Characterization_equipment - definition_uri: https://w3id.org/nfdi4cat/catcore/equipment + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/equipment description: Instrument or equipment used for characterization. - from_schema: https://w3id.org/nfdi4cat/catcore/common/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/common/ mappings: - VOC4CAT:0000187 is_a: equipment @@ -7446,13 +7447,13 @@ slots: Should reference a CharacterizationTechnique instance (e.g. a GCMS or - HPLC_MS object from catcore_characterization_ap). The abstract stub + HPLC_MS object from coremeta4cat_characterization_ap). The abstract stub ProductIdentificationMethod is retained for backward compatibility.' - from_schema: https://w3id.org/nfdi4cat/catcore + from_schema: https://w3id.org/nfdi4cat/coremeta4cat is_a: product_identification_method domain: Reaction - slot_uri: catcore:product_identification_method + slot_uri: coremeta4cat:product_identification_method alias: product_identification_method owner: Reaction domain_of: @@ -7467,9 +7468,9 @@ slots: Simulation_rdf_type: name: Simulation_rdf_type definition_uri: https://w3id.org/nfdi-de/dcat-ap-plus/rdf_type - description: 'The type of simulation method as an ontology term (e.g. catcore:DFT, + description: 'The type of simulation method as an ontology term (e.g. coremeta4cat:DFT, - NCIT:C18097 for MD, catcore:Microkinetics). This is the primary + NCIT:C18097 for MD, coremeta4cat:Microkinetics). This is the primary machine-actionable classification of the simulation type.' in_subset: @@ -11231,16 +11232,16 @@ slots: classes: CatalysisDataset: name: CatalysisDataset - definition_uri: https://w3id.org/nfdi4cat/catcore/CatalysisDataset + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/CatalysisDataset description: "A dcat:Dataset that contains research data in the field of catalysis.\n\ \nThe catalysis research field is expressed via rdf_type using a voc4cat\nterm\ \ from CatalysisResearchFieldEnum (following DCAT-AP-PLUS Pattern 3).\nFor example,\ \ a dataset from heterogeneous catalysis research would carry:\n rdf_type:\n\ \ id: VOC4CAT:0007001\n title: \"heterogeneous catalysis\"\n\nThe four\ - \ CatCore minimum information pillars are linked via the slots\nbelow, each\ - \ pointing to the corresponding DataGeneratingActivity or\nEvaluatedActivity\ - \ subclass defined in the CatCore subprofile modules." - from_schema: https://w3id.org/nfdi4cat/catcore + \ CoreMeta4Cat minimum information pillars are linked via the slots\nbelow,\ + \ each pointing to the corresponding DataGeneratingActivity or\nEvaluatedActivity\ + \ subclass defined in the CoreMeta4Cat subprofile modules." + from_schema: https://w3id.org/nfdi4cat/coremeta4cat mappings: - dcat:Dataset is_a: Dataset @@ -11333,7 +11334,7 @@ classes: class_uri: dcat:Dataset DryingMixin: name: DryingMixin - definition_uri: https://w3id.org/nfdi4cat/catcore/DryingMixin + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/DryingMixin description: 'Mixin providing drying step parameters. Used by preparation methods that @@ -11342,17 +11343,17 @@ classes: (Impregnation, CoPrecipitation, DepositionPrecipitation, SonochemicalSynthesis, MolecularSynthesis).' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mixin: true slots: - drying_device - drying_temperature - drying_time - drying_atmosphere - class_uri: catcore:DryingMixin + class_uri: coremeta4cat:DryingMixin CalcinationMixin: name: CalcinationMixin - definition_uri: https://w3id.org/nfdi4cat/catcore/CalcinationMixin + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/CalcinationMixin description: 'Mixin providing calcination step parameters. Used by preparation methods @@ -11361,7 +11362,7 @@ classes: (Impregnation, CoPrecipitation, DepositionPrecipitation, SonochemicalSynthesis, ExsolutionSynthesis).' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mixin: true slots: - calcination_initial_temperature @@ -11371,17 +11372,17 @@ classes: - calcination_gaseous_environment - calcination_heating_rate - calcination_gas_flow_rate - class_uri: catcore:CalcinationMixin + class_uri: coremeta4cat:CalcinationMixin PrecipitationMixin: name: PrecipitationMixin - definition_uri: https://w3id.org/nfdi4cat/catcore/PrecipitationMixin + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/PrecipitationMixin description: 'Mixin providing precipitation and wet-chemistry step parameters. Used by preparation methods based on precipitation from solution (CoPrecipitation, DepositionPrecipitation).' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mixin: true slots: - precipitating_agent @@ -11395,10 +11396,10 @@ classes: - purification - aging_temperature - aging_time - class_uri: catcore:PrecipitationMixin + class_uri: coremeta4cat:PrecipitationMixin ThermalSynthesisMixin: name: ThermalSynthesisMixin - definition_uri: https://w3id.org/nfdi4cat/catcore/ThermalSynthesisMixin + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ThermalSynthesisMixin description: 'Mixin providing thermal process parameters common to synthesis methods carried out at elevated temperature in a closed vessel or reactor @@ -11406,7 +11407,7 @@ classes: (Solvothermal, PlasmaAssisted, CombustionSynthesis, MicrowaveAssisted, MechanochemicalSynthesis, Sublimation).' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mixin: true slots: - synthesis_temperature @@ -11414,10 +11415,10 @@ classes: - equipment - vessel_type - atmosphere - class_uri: catcore:ThermalSynthesisMixin + class_uri: coremeta4cat:ThermalSynthesisMixin Synthesis: name: Synthesis - definition_uri: https://w3id.org/nfdi4cat/catcore/Synthesis + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/Synthesis description: 'A DataGeneratingActivity in which a catalyst is prepared. @@ -11435,7 +11436,7 @@ classes: term (e.g. a voc4cat preparation method term), following DCAT-AP-PLUS Pattern 3.' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - OBI:0000070 is_a: DataGeneratingActivity @@ -11496,11 +11497,11 @@ classes: class_uri: OBI:0000070 Precursor: name: Precursor - definition_uri: https://w3id.org/nfdi4cat/catcore/Precursor + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/Precursor description: 'A MaterialSample that serves as input material in a catalyst Synthesis. Precursors are consumed or transformed during the preparation process.' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - CHEBI:52717 is_a: MaterialSample @@ -11532,13 +11533,13 @@ classes: class_uri: CHEBI:52717 CatalystSample: name: CatalystSample - definition_uri: https://w3id.org/nfdi4cat/catcore/CatalystSample + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/CatalystSample description: 'A MaterialSample that is the product of a catalyst Synthesis. The specific type of catalyst (e.g. heterogeneous, supported metal) is expressed via rdf_type using a voc4cat term.' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - OBI:0000747 is_a: MaterialSample @@ -11572,13 +11573,13 @@ classes: class_uri: OBI:0000747 PreparationMethod: name: PreparationMethod - definition_uri: https://w3id.org/nfdi4cat/catcore/PreparationMethod + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/PreparationMethod description: "An abstract Plan describing the protocol used to prepare a catalyst.\n\ Concrete subclasses (Impregnation, CoPrecipitation, \u2026) specify the\nmethod-specific\ \ parameters. Linked from Synthesis via realized_plan.\n\nThe specific preparation\ \ method type should additionally be expressed\nvia rdf_type on the Synthesis\ \ activity using a voc4cat term\n(e.g. VOC4CAT:0007016 for preparation method)." - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - OBI:0000272 is_a: Plan @@ -11591,13 +11592,13 @@ classes: class_uri: OBI:0000272 Impregnation: name: Impregnation - definition_uri: https://w3id.org/nfdi4cat/catcore/Impregnation + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/Impregnation description: 'Catalyst preparation by impregnation: a solution of the active phase precursor is brought into contact with the support material.' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:Impregnation + - coremeta4cat:Impregnation is_a: PreparationMethod mixins: - DryingMixin @@ -11621,16 +11622,16 @@ classes: - calcination_gaseous_environment - calcination_heating_rate - calcination_gas_flow_rate - class_uri: catcore:Impregnation + class_uri: coremeta4cat:Impregnation CoPrecipitation: name: CoPrecipitation - definition_uri: https://w3id.org/nfdi4cat/catcore/CoPrecipitation + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/CoPrecipitation description: 'Catalyst preparation by co-precipitation: precursor salts are simultaneously precipitated from solution by a precipitating agent.' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:CoPrecipitation + - coremeta4cat:CoPrecipitation is_a: PreparationMethod mixins: - PrecipitationMixin @@ -11663,16 +11664,16 @@ classes: - calcination_gaseous_environment - calcination_heating_rate - calcination_gas_flow_rate - class_uri: catcore:CoPrecipitation + class_uri: coremeta4cat:CoPrecipitation SolGel: name: SolGel - definition_uri: https://w3id.org/nfdi4cat/catcore/SolGel + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/SolGel description: 'Catalyst preparation by the sol-gel process: hydrolysis and condensation of precursor molecules to form a colloidal network (gel).' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:SolGel + - coremeta4cat:SolGel is_a: PreparationMethod mixins: - DryingMixin @@ -11689,17 +11690,17 @@ classes: - drying_temperature - drying_time - drying_atmosphere - class_uri: catcore:SolGel + class_uri: coremeta4cat:SolGel Solvothermal: name: Solvothermal - definition_uri: https://w3id.org/nfdi4cat/catcore/Solvothermal + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/Solvothermal description: 'Catalyst preparation under elevated temperature and pressure in a sealed vessel using a non-aqueous solvent.' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:Solvothermal + - coremeta4cat:Solvothermal is_a: PreparationMethod mixins: - ThermalSynthesisMixin @@ -11716,16 +11717,16 @@ classes: - equipment - vessel_type - atmosphere - class_uri: catcore:Solvothermal + class_uri: coremeta4cat:Solvothermal PlasmaAssisted: name: PlasmaAssisted - definition_uri: https://w3id.org/nfdi4cat/catcore/PlasmaAssisted + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/PlasmaAssisted description: 'Catalyst preparation using plasma treatment to modify surface properties or deposit active components.' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:PlasmaAssisted + - coremeta4cat:PlasmaAssisted is_a: PreparationMethod mixins: - ThermalSynthesisMixin @@ -11743,16 +11744,16 @@ classes: - equipment - vessel_type - atmosphere - class_uri: catcore:PlasmaAssisted + class_uri: coremeta4cat:PlasmaAssisted CombustionSynthesis: name: CombustionSynthesis - definition_uri: https://w3id.org/nfdi4cat/catcore/CombustionSynthesis + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/CombustionSynthesis description: 'Catalyst preparation by combustion of a fuel/oxidizer mixture, producing metal oxide catalysts in a single rapid step.' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:CombustionSynthesis + - coremeta4cat:CombustionSynthesis is_a: PreparationMethod mixins: - ThermalSynthesisMixin @@ -11771,18 +11772,18 @@ classes: - equipment - vessel_type - atmosphere - class_uri: catcore:CombustionSynthesis + class_uri: coremeta4cat:CombustionSynthesis AtomicLayerDeposition: name: AtomicLayerDeposition - definition_uri: https://w3id.org/nfdi4cat/catcore/AtomicLayerDeposition + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/AtomicLayerDeposition description: 'Catalyst preparation by atomic layer deposition (ALD): sequential self-limiting surface reactions deposit a conformal thin film of active phase onto a substrate.' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:AtomicLayerDeposition + - coremeta4cat:AtomicLayerDeposition is_a: PreparationMethod slots: - title @@ -11795,16 +11796,16 @@ classes: - number_of_cycles - deposition_temperature - carrier_gas - class_uri: catcore:AtomicLayerDeposition + class_uri: coremeta4cat:AtomicLayerDeposition DepositionPrecipitation: name: DepositionPrecipitation - definition_uri: https://w3id.org/nfdi4cat/catcore/DepositionPrecipitation + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/DepositionPrecipitation description: 'Catalyst preparation by deposition-precipitation: the active phase is precipitated directly onto the support surface.' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:DepositionPrecipitation + - coremeta4cat:DepositionPrecipitation is_a: PreparationMethod mixins: - PrecipitationMixin @@ -11839,16 +11840,16 @@ classes: - calcination_gaseous_environment - calcination_heating_rate - calcination_gas_flow_rate - class_uri: catcore:DepositionPrecipitation + class_uri: coremeta4cat:DepositionPrecipitation MicrowaveAssisted: name: MicrowaveAssisted - definition_uri: https://w3id.org/nfdi4cat/catcore/MicrowaveAssisted + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/MicrowaveAssisted description: 'Catalyst preparation using microwave irradiation to rapidly and uniformly heat the reaction mixture.' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:MicrowaveAssisted + - coremeta4cat:MicrowaveAssisted is_a: PreparationMethod mixins: - ThermalSynthesisMixin @@ -11864,16 +11865,16 @@ classes: - equipment - vessel_type - atmosphere - class_uri: catcore:MicrowaveAssisted + class_uri: coremeta4cat:MicrowaveAssisted SonochemicalSynthesis: name: SonochemicalSynthesis - definition_uri: https://w3id.org/nfdi4cat/catcore/SonochemicalSynthesis + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/SonochemicalSynthesis description: 'Catalyst preparation using ultrasonic irradiation to drive chemical reactions via acoustic cavitation.' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:SonochemicalSynthesis + - coremeta4cat:SonochemicalSynthesis is_a: PreparationMethod mixins: - DryingMixin @@ -11897,14 +11898,14 @@ classes: - calcination_gaseous_environment - calcination_heating_rate - calcination_gas_flow_rate - class_uri: catcore:SonochemicalSynthesis + class_uri: coremeta4cat:SonochemicalSynthesis FlameSprayPyrolysis: name: FlameSprayPyrolysis - definition_uri: https://w3id.org/nfdi4cat/catcore/FlameSprayPyrolysis + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/FlameSprayPyrolysis description: 'Catalyst preparation by flame spray pyrolysis (FSP): a liquid precursor solution is atomised and combusted in a flame to produce nanoparticles.' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - VOC4CAT:0007031 is_a: PreparationMethod @@ -11925,13 +11926,13 @@ classes: class_uri: VOC4CAT:0007031 MechanochemicalSynthesis: name: MechanochemicalSynthesis - definition_uri: https://w3id.org/nfdi4cat/catcore/MechanochemicalSynthesis + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/MechanochemicalSynthesis description: 'Catalyst preparation by mechanical milling or grinding, optionally combined with thermal treatment.' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:MechanochemicalSynthesis + - coremeta4cat:MechanochemicalSynthesis is_a: PreparationMethod mixins: - ThermalSynthesisMixin @@ -11952,16 +11953,16 @@ classes: - equipment - vessel_type - atmosphere - class_uri: catcore:MechanochemicalSynthesis + class_uri: coremeta4cat:MechanochemicalSynthesis Sublimation: name: Sublimation - definition_uri: https://w3id.org/nfdi4cat/catcore/Sublimation + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/Sublimation description: 'Catalyst preparation by sublimation: a solid precursor is vaporised and deposited onto a substrate without passing through a liquid phase.' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:Sublimation + - coremeta4cat:Sublimation is_a: PreparationMethod mixins: - ThermalSynthesisMixin @@ -11976,16 +11977,16 @@ classes: - equipment - vessel_type - atmosphere - class_uri: catcore:Sublimation + class_uri: coremeta4cat:Sublimation MolecularSynthesis: name: MolecularSynthesis - definition_uri: https://w3id.org/nfdi4cat/catcore/MolecularSynthesis + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/MolecularSynthesis description: 'Catalyst preparation by molecular (organometallic or coordination) chemistry routes, including crystallisation and purification steps.' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:MolecularSynthesis + - coremeta4cat:MolecularSynthesis is_a: PreparationMethod mixins: - DryingMixin @@ -12012,17 +12013,17 @@ classes: - drying_temperature - drying_time - drying_atmosphere - class_uri: catcore:MolecularSynthesis + class_uri: coremeta4cat:MolecularSynthesis ExsolutionSynthesis: name: ExsolutionSynthesis - definition_uri: https://w3id.org/nfdi4cat/catcore/ExsolutionSynthesis + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ExsolutionSynthesis description: 'Catalyst preparation by exsolution: metal nanoparticles are grown on a perovskite oxide surface by reduction/oxidation cycling.' - from_schema: https://w3id.org/nfdi4cat/catcore/synthesis/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ mappings: - - catcore:ExsolutionSynthesis + - coremeta4cat:ExsolutionSynthesis is_a: PreparationMethod mixins: - CalcinationMixin @@ -12038,72 +12039,72 @@ classes: - calcination_gaseous_environment - calcination_heating_rate - calcination_gas_flow_rate - class_uri: catcore:ExsolutionSynthesis + class_uri: coremeta4cat:ExsolutionSynthesis XRaySourceMixin: name: XRaySourceMixin - definition_uri: https://w3id.org/nfdi4cat/catcore/XRaySourceMixin + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/XRaySourceMixin description: 'Mixin providing X-ray source and monochromator slots, shared by all X-ray based techniques (PowderXRD, XRayAbsorptionSpectroscopy, XPS, SingleCrystalXRD).' - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mixin: true slots: - xray_source - monochromator - class_uri: catcore:XRaySourceMixin + class_uri: coremeta4cat:XRaySourceMixin EnergyRangeMixin: name: EnergyRangeMixin - definition_uri: https://w3id.org/nfdi4cat/catcore/EnergyRangeMixin + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/EnergyRangeMixin description: 'Mixin providing energy scan range slots, shared by X-ray spectroscopy techniques that scan over an energy range (XRayAbsorptionSpectroscopy, XPS).' - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mixin: true slots: - minimum_energy - maximum_energy - class_uri: catcore:EnergyRangeMixin + class_uri: coremeta4cat:EnergyRangeMixin ElectronMicroscopyMixin: name: ElectronMicroscopyMixin - definition_uri: https://w3id.org/nfdi4cat/catcore/ElectronMicroscopyMixin + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ElectronMicroscopyMixin description: 'Mixin providing electron gun and image parameters shared by electron microscopy techniques (TransmissionElectronMicroscopy, ScanningElectronMicroscopy).' - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mixin: true slots: - gun_type - acceleration_voltage - magnification_setting - class_uri: catcore:ElectronMicroscopyMixin + class_uri: coremeta4cat:ElectronMicroscopyMixin TemperatureProgramMixin: name: TemperatureProgramMixin - definition_uri: https://w3id.org/nfdi4cat/catcore/TemperatureProgramMixin + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/TemperatureProgramMixin description: 'Mixin providing temperature-programme parameters shared by thermal analysis and temperature-programmed reaction techniques (Thermogravimetry, TPO, TPR).' - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mixin: true slots: - minimum_temperature - maximum_temperature - heating_rate - heating_procedure - class_uri: catcore:TemperatureProgramMixin + class_uri: coremeta4cat:TemperatureProgramMixin ChromatographyMixin: name: ChromatographyMixin - definition_uri: https://w3id.org/nfdi4cat/catcore/ChromatographyMixin + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ChromatographyMixin description: 'Mixin providing chromatographic separation parameters shared by separation techniques (GCMS, SizeExclusionChromatography, HPLC_MS).' - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mixin: true slots: - column_type @@ -12112,44 +12113,44 @@ classes: - injection_volume - external_standard - internal_standard - class_uri: catcore:ChromatographyMixin + class_uri: coremeta4cat:ChromatographyMixin MassRangeMixin: name: MassRangeMixin - definition_uri: https://w3id.org/nfdi4cat/catcore/MassRangeMixin + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/MassRangeMixin description: 'Mixin providing mass-to-charge scan range slots shared by mass spectrometry techniques (GCMS, ESI_MS).' - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mixin: true slots: - mz_minimum - mz_maximum - class_uri: catcore:MassRangeMixin + class_uri: coremeta4cat:MassRangeMixin PhotoluminescenceMixin: name: PhotoluminescenceMixin - definition_uri: https://w3id.org/nfdi4cat/catcore/PhotoluminescenceMixin + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/PhotoluminescenceMixin description: 'Mixin providing optical excitation/emission parameters shared by photoluminescence techniques (PhotoluminescenceSpectroscopy, PhotoluminescenceLifetime).' - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mixin: true slots: - excitation_wavelength - emission_wavelength - optical_filter - temperature - class_uri: catcore:PhotoluminescenceMixin + class_uri: coremeta4cat:PhotoluminescenceMixin ElectrochemistryMixin: name: ElectrochemistryMixin - definition_uri: https://w3id.org/nfdi4cat/catcore/ElectrochemistryMixin + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ElectrochemistryMixin description: 'Mixin providing electrochemical cell parameters shared by electrochemical characterization techniques (CyclicVoltammetry, ConductivityMeasurement).' - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mixin: true slots: - reference_electrode @@ -12159,10 +12160,10 @@ classes: - electrolyte_concentration - atmosphere - temperature - class_uri: catcore:ElectrochemistryMixin + class_uri: coremeta4cat:ElectrochemistryMixin Characterization: name: Characterization - definition_uri: https://w3id.org/nfdi4cat/catcore/Characterization + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/Characterization description: "A DataGeneratingActivity in which a catalyst sample or catalytic\ \ material\nis characterized using an analytical technique.\n\nThe catalyst\ \ sample being characterized is linked via evaluated_entity.\nThe analytical\ @@ -12171,7 +12172,7 @@ classes: \ technique type is expressed via rdf_type using an ontology\nterm (e.g. CHMO:0000158\ \ for powder XRD, CHMO:0000404 for XPS),\nfollowing DCAT-AP-PLUS Pattern 3 \u2014\ \ exactly as NMRSpectroscopy uses\nrdf_type: CHMO:0000613." - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - OBI:0000070 is_a: DataGeneratingActivity @@ -12227,13 +12228,13 @@ classes: class_uri: OBI:0000070 CharacterizationTechnique: name: CharacterizationTechnique - definition_uri: https://w3id.org/nfdi4cat/catcore/CharacterizationTechnique + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/CharacterizationTechnique description: 'An abstract Plan describing the analytical protocol used to characterize a catalyst. Concrete subclasses specify technique-specific parameters. Linked from Characterization via realized_plan.' - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - OBI:0000272 is_a: Plan @@ -12246,10 +12247,10 @@ classes: class_uri: OBI:0000272 PowderXRD: name: PowderXRD - definition_uri: https://w3id.org/nfdi4cat/catcore/PowderXRD + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/PowderXRD description: Powder X-ray diffraction for phase identification and structural analysis. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - CHMO:0000158 is_a: CharacterizationTechnique @@ -12273,9 +12274,9 @@ classes: class_uri: CHMO:0000158 SingleCrystalXRD: name: SingleCrystalXRD - definition_uri: https://w3id.org/nfdi4cat/catcore/SingleCrystalXRD + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/SingleCrystalXRD description: Single crystal X-ray diffraction for structure determination. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - CHMO:0000852 is_a: CharacterizationTechnique @@ -12292,10 +12293,10 @@ classes: class_uri: CHMO:0000852 XRayAbsorptionSpectroscopy: name: XRayAbsorptionSpectroscopy - definition_uri: https://w3id.org/nfdi4cat/catcore/XRayAbsorptionSpectroscopy + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/XRayAbsorptionSpectroscopy description: X-ray absorption spectroscopy (XAS/XANES/EXAFS) for electronic and local structure analysis. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - VOC4CAT:0000286 is_a: CharacterizationTechnique @@ -12322,10 +12323,10 @@ classes: class_uri: VOC4CAT:0000286 XPS: name: XPS - definition_uri: https://w3id.org/nfdi4cat/catcore/XPS + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/XPS description: X-ray photoelectron spectroscopy for surface elemental and chemical state analysis. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - CHMO:0000404 is_a: CharacterizationTechnique @@ -12352,9 +12353,9 @@ classes: class_uri: CHMO:0000404 EDX: name: EDX - definition_uri: https://w3id.org/nfdi4cat/catcore/EDX + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/EDX description: Energy-dispersive X-ray spectroscopy for elemental mapping and quantification. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - CHMO:0000309 is_a: CharacterizationTechnique @@ -12370,12 +12371,12 @@ classes: class_uri: CHMO:0000309 InfraredSpectroscopy: name: InfraredSpectroscopy - definition_uri: https://w3id.org/nfdi4cat/catcore/InfraredSpectroscopy + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/InfraredSpectroscopy description: Infrared spectroscopy (FTIR/ATR) for functional group and surface species identification. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:InfraredSpectroscopy + - coremeta4cat:InfraredSpectroscopy is_a: CharacterizationTechnique slots: - title @@ -12390,15 +12391,15 @@ classes: - background_correction - number_of_scans - atmosphere - class_uri: catcore:InfraredSpectroscopy + class_uri: coremeta4cat:InfraredSpectroscopy DRIFTS: name: DRIFTS - definition_uri: https://w3id.org/nfdi4cat/catcore/DRIFTS + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/DRIFTS description: 'Diffuse reflectance infrared Fourier transform spectroscopy for in-situ surface species identification under reactive gas conditions.' - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - CHMO:0000645 is_a: CharacterizationTechnique @@ -12420,9 +12421,9 @@ classes: class_uri: CHMO:0000645 RamanSpectroscopy: name: RamanSpectroscopy - definition_uri: https://w3id.org/nfdi4cat/catcore/RamanSpectroscopy + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/RamanSpectroscopy description: Raman spectroscopy for vibrational and structural characterization. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - VOC4CAT:0000069 is_a: CharacterizationTechnique @@ -12442,7 +12443,7 @@ classes: class_uri: VOC4CAT:0000069 NMRSpectroscopy: name: NMRSpectroscopy - definition_uri: https://w3id.org/nfdi4cat/catcore/NMRSpectroscopy + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/NMRSpectroscopy description: 'Nuclear magnetic resonance spectroscopy for structure elucidation. Note: for detailed liquid-state NMR minimum information, the dedicated @@ -12450,7 +12451,7 @@ classes: nmr_dcat_ap profile (MARGARITAS) should be used in combination with this subprofile.' - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - VOC4CAT:0000073 is_a: CharacterizationTechnique @@ -12470,9 +12471,9 @@ classes: class_uri: VOC4CAT:0000073 TransmissionElectronMicroscopy: name: TransmissionElectronMicroscopy - definition_uri: https://w3id.org/nfdi4cat/catcore/TransmissionElectronMicroscopy + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/TransmissionElectronMicroscopy description: TEM for atomic-resolution imaging and diffraction of catalyst particles. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - VOC4CAT:0000078 is_a: CharacterizationTechnique @@ -12490,9 +12491,9 @@ classes: class_uri: VOC4CAT:0000078 ScanningElectronMicroscopy: name: ScanningElectronMicroscopy - definition_uri: https://w3id.org/nfdi4cat/catcore/ScanningElectronMicroscopy + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ScanningElectronMicroscopy description: SEM for surface morphology and particle size/shape imaging. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - VOC4CAT:0000075 is_a: CharacterizationTechnique @@ -12511,10 +12512,10 @@ classes: class_uri: VOC4CAT:0000075 Thermogravimetry: name: Thermogravimetry - definition_uri: https://w3id.org/nfdi4cat/catcore/Thermogravimetry + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/Thermogravimetry description: Thermogravimetric analysis (TGA/DTG) for mass loss, decomposition, and oxidation state characterization. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - CHMO:0000690 is_a: CharacterizationTechnique @@ -12537,10 +12538,10 @@ classes: class_uri: CHMO:0000690 TPR: name: TPR - definition_uri: https://w3id.org/nfdi4cat/catcore/TPR + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/TPR description: Temperature-programmed reduction for reducibility and metal-support interaction characterization. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - CHMO:0002908 is_a: CharacterizationTechnique @@ -12559,10 +12560,10 @@ classes: class_uri: CHMO:0002908 TPO: name: TPO - definition_uri: https://w3id.org/nfdi4cat/catcore/TPO + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/TPO description: Temperature-programmed oxidation for coke quantification and reoxidation characterization. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - CHMO:0002907 is_a: CharacterizationTechnique @@ -12581,12 +12582,12 @@ classes: class_uri: CHMO:0002907 BET: name: BET - definition_uri: https://w3id.org/nfdi4cat/catcore/BET + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/BET description: Brunauer-Emmett-Teller analysis for specific surface area and pore size distribution. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:BET + - coremeta4cat:BET is_a: CharacterizationTechnique slots: - title @@ -12598,13 +12599,13 @@ classes: - measurement_temperature - pore_size_distribution_method - sample_mass - class_uri: catcore:BET + class_uri: coremeta4cat:BET ICPAES: name: ICPAES - definition_uri: https://w3id.org/nfdi4cat/catcore/ICPAES + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ICPAES description: Inductively coupled plasma atomic emission spectroscopy for bulk elemental composition. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - CHMO:0000267 is_a: CharacterizationTechnique @@ -12620,10 +12621,10 @@ classes: class_uri: CHMO:0000267 ElementalAnalysis: name: ElementalAnalysis - definition_uri: https://w3id.org/nfdi4cat/catcore/ElementalAnalysis + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ElementalAnalysis description: Combustion elemental analysis (CHNS/O) for carbon, hydrogen, nitrogen, sulfur content. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - CHMO:0001075 is_a: CharacterizationTechnique @@ -12638,10 +12639,10 @@ classes: class_uri: CHMO:0001075 UVVisSpectroscopy: name: UVVisSpectroscopy - definition_uri: https://w3id.org/nfdi4cat/catcore/UVVisSpectroscopy + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/UVVisSpectroscopy description: UV-Vis spectroscopy for electronic transitions, band gap, and concentration determination. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - VOC4CAT:0000079 is_a: CharacterizationTechnique @@ -12658,11 +12659,11 @@ classes: class_uri: VOC4CAT:0000079 PhotoluminescenceSpectroscopy: name: PhotoluminescenceSpectroscopy - definition_uri: https://w3id.org/nfdi4cat/catcore/PhotoluminescenceSpectroscopy + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/PhotoluminescenceSpectroscopy description: Photoluminescence spectroscopy for defect and charge carrier characterization. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:PhotoluminescenceSpectroscopy + - coremeta4cat:PhotoluminescenceSpectroscopy is_a: CharacterizationTechnique mixins: - PhotoluminescenceMixin @@ -12679,15 +12680,15 @@ classes: - emission_wavelength - optical_filter - temperature - class_uri: catcore:PhotoluminescenceSpectroscopy + class_uri: coremeta4cat:PhotoluminescenceSpectroscopy PhotoluminescenceLifetime: name: PhotoluminescenceLifetime - definition_uri: https://w3id.org/nfdi4cat/catcore/PhotoluminescenceLifetime + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/PhotoluminescenceLifetime description: Time-resolved photoluminescence for charge carrier lifetime and recombination dynamics. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:PhotoluminescenceLifetime + - coremeta4cat:PhotoluminescenceLifetime is_a: CharacterizationTechnique mixins: - PhotoluminescenceMixin @@ -12702,13 +12703,13 @@ classes: - emission_wavelength - optical_filter - temperature - class_uri: catcore:PhotoluminescenceLifetime + class_uri: coremeta4cat:PhotoluminescenceLifetime CyclicVoltammetry: name: CyclicVoltammetry - definition_uri: https://w3id.org/nfdi4cat/catcore/CyclicVoltammetry + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/CyclicVoltammetry description: Cyclic voltammetry for electrochemical activity, redox potential, and capacitance characterization. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - CHMO:0000025 is_a: CharacterizationTechnique @@ -12734,12 +12735,12 @@ classes: class_uri: CHMO:0000025 ConductivityMeasurement: name: ConductivityMeasurement - definition_uri: https://w3id.org/nfdi4cat/catcore/ConductivityMeasurement + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ConductivityMeasurement description: Electrical conductivity measurement for ionic and electronic transport characterization. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - - catcore:ConductivityMeasurement + - coremeta4cat:ConductivityMeasurement is_a: CharacterizationTechnique mixins: - ElectrochemistryMixin @@ -12759,13 +12760,13 @@ classes: - electrolyte_concentration - atmosphere - temperature - class_uri: catcore:ConductivityMeasurement + class_uri: coremeta4cat:ConductivityMeasurement DynamicLightScattering: name: DynamicLightScattering - definition_uri: https://w3id.org/nfdi4cat/catcore/DynamicLightScattering + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/DynamicLightScattering description: Dynamic light scattering for hydrodynamic particle size distribution in suspension. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - CHMO:0000167 is_a: CharacterizationTechnique @@ -12783,12 +12784,12 @@ classes: - dispersant - measurement_duration class_uri: CHMO:0000167 - ESI_MS: - name: ESI_MS - definition_uri: https://w3id.org/nfdi4cat/catcore/ESIMS + ElectroSprayIonizationMassSpectrometry: + name: ElectroSprayIonizationMassSpectrometry + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ElectroSprayIonizationMassSpectrometry description: Electrospray ionisation mass spectrometry for molecular mass and identity determination. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - CHMO:0000482 is_a: CharacterizationTechnique @@ -12811,10 +12812,10 @@ classes: class_uri: CHMO:0000482 GCMS: name: GCMS - definition_uri: https://w3id.org/nfdi4cat/catcore/GCMS + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/GCMS description: Gas chromatography-mass spectrometry for volatile compound identification and quantification. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - CHMO:0000497 is_a: CharacterizationTechnique @@ -12848,9 +12849,9 @@ classes: class_uri: CHMO:0000497 SizeExclusionChromatography: name: SizeExclusionChromatography - definition_uri: https://w3id.org/nfdi4cat/catcore/SizeExclusionChromatography + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/SizeExclusionChromatography description: Size exclusion chromatography for molecular weight distribution determination. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - AFP:0000843 is_a: CharacterizationTechnique @@ -12870,12 +12871,12 @@ classes: - external_standard - internal_standard class_uri: AFP:0000843 - HPLC_MS: - name: HPLC_MS - definition_uri: https://w3id.org/nfdi4cat/catcore/HPLCMS + HighPerformanceLiquidChromatographyMassSpectrometry: + name: HighPerformanceLiquidChromatographyMassSpectrometry + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/HighPerformanceLiquidChromatographyMassSpectrometry description: High-performance liquid chromatography-mass spectrometry for compound identification and quantification. - from_schema: https://w3id.org/nfdi4cat/catcore/characterization/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ mappings: - CHMO:0000796 is_a: CharacterizationTechnique @@ -12898,7 +12899,7 @@ classes: class_uri: CHMO:0000796 Reaction: name: Reaction - definition_uri: https://w3id.org/nfdi4cat/catcore/Reaction + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/Reaction description: "An EvaluatedActivity representing the catalytic reaction being studied.\n\ \nReaction is NOT a DataGeneratingActivity \u2014 it is the catalytic process\n\ being observed, not the process that generates the dataset. A CatalysisDataset\n\ @@ -12910,7 +12911,7 @@ classes: \ linked via had_input_entity. The type of catalytic reaction\n(e.g. ammonia\ \ synthesis, CO oxidation) is expressed via rdf_type using a\nvoc4cat or ChemO\ \ term." - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - SIO:010345 is_a: EvaluatedActivity @@ -12968,11 +12969,11 @@ classes: Should reference a CharacterizationTechnique instance (e.g. a GCMS or - HPLC_MS object from catcore_characterization_ap). The abstract stub + HPLC_MS object from coremeta4cat_characterization_ap). The abstract stub ProductIdentificationMethod is retained for backward compatibility.' - from_schema: https://w3id.org/nfdi4cat/catcore - slot_uri: catcore:product_identification_method + from_schema: https://w3id.org/nfdi4cat/coremeta4cat + slot_uri: coremeta4cat:product_identification_method range: ProductIdentificationMethod required: true multivalued: true @@ -12981,21 +12982,22 @@ classes: class_uri: SIO:010345 ProductIdentificationMethod: name: ProductIdentificationMethod - definition_uri: https://w3id.org/nfdi4cat/catcore/ProductIdentificationMethod + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ProductIdentificationMethod description: 'Abstract Plan representing the method used to identify and quantify reaction products. In practice, users should reference a concrete CharacterizationTechnique - subclass from catcore_characterization_ap (e.g. GCMS, HPLC_MS, NMRSpectroscopy). + subclass from coremeta4cat_characterization_ap (e.g. GCMS, HPLC_MS, NMRSpectroscopy). This abstract class is retained for backward compatibility with the original - CatCore monolith. It is a subclass of Plan (prov:Plan / OBI:0000272) so that + CoreMeta4Cat monolith. It is a subclass of Plan (prov:Plan / OBI:0000272) so + that it can participate in the realized_plan slot if needed.' - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - OBI:0000272 is_a: Plan @@ -13008,14 +13010,14 @@ classes: class_uri: OBI:0000272 ReactorDesignType: name: ReactorDesignType - definition_uri: https://w3id.org/nfdi4cat/catcore/ReactorDesignType + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ReactorDesignType description: 'Abstract Device representing the type of reactor used in a catalytic experiment. Concrete subclasses specify the reactor geometry and operating mode. Linked from Reaction via carried_out_by.' - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - VOC4CAT:0007018 is_a: Device @@ -13034,11 +13036,11 @@ classes: class_uri: VOC4CAT:0007018 ElectrochemicalReactor: name: ElectrochemicalReactor - definition_uri: https://w3id.org/nfdi4cat/catcore/ElectrochemicalReactor + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ElectrochemicalReactor description: 'Electrochemical reactor used in electrocatalytic experiments, including H-cells, flow cells, and membrane electrode assemblies.' - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - VOC4CAT:0000193 is_a: ReactorDesignType @@ -13056,10 +13058,10 @@ classes: class_uri: VOC4CAT:0000193 CSTR: name: CSTR - definition_uri: https://w3id.org/nfdi4cat/catcore/CSTR + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/CSTR description: "Continuous stirred tank reactor (CSTR) \u2014 a well-mixed, continuous-flow\n\ reactor operating at steady state." - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - VOC4CAT:0007019 is_a: ReactorDesignType @@ -13077,10 +13079,10 @@ classes: class_uri: VOC4CAT:0007019 PlugFlowReactor: name: PlugFlowReactor - definition_uri: https://w3id.org/nfdi4cat/catcore/PlugFlowReactor + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/PlugFlowReactor description: "Plug flow reactor (PFR) \u2014 a tubular reactor in which reactant\ \ composition\nvaries along the axis with no axial mixing." - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - VOC4CAT:0007102 is_a: ReactorDesignType @@ -13098,10 +13100,10 @@ classes: class_uri: VOC4CAT:0007102 Autoclave: name: Autoclave - definition_uri: https://w3id.org/nfdi4cat/catcore/Autoclave + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/Autoclave description: "Autoclave reactor \u2014 a sealed pressure vessel for batch reactions\ \ at\nelevated temperature and/or pressure." - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - NCIT:C93052 is_a: ReactorDesignType @@ -13119,12 +13121,12 @@ classes: class_uri: NCIT:C93052 SlurryReactor: name: SlurryReactor - definition_uri: https://w3id.org/nfdi4cat/catcore/SlurryReactor + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/SlurryReactor description: "Slurry reactor \u2014 a three-phase reactor in which catalyst particles\ \ are\nsuspended in a liquid phase through which gas is bubbled." - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - - catcore:SlurryReactor + - coremeta4cat:SlurryReactor is_a: ReactorDesignType slots: - id @@ -13137,14 +13139,14 @@ classes: - rdf_type - Device_has_part - Device_other_identifier - class_uri: catcore:SlurryReactor + class_uri: coremeta4cat:SlurryReactor Microreactor: name: Microreactor - definition_uri: https://w3id.org/nfdi4cat/catcore/Microreactor + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/Microreactor description: "Microreactor \u2014 a miniaturised flow reactor with characteristic\ \ dimensions\nin the sub-millimetre range, enabling precise thermal control\ \ and rapid\nscreening." - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - VOC4CAT:0000234 is_a: ReactorDesignType @@ -13162,12 +13164,12 @@ classes: class_uri: VOC4CAT:0000234 FixedBedReactor: name: FixedBedReactor - definition_uri: https://w3id.org/nfdi4cat/catcore/FixedBedReactor + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/FixedBedReactor description: "Fixed bed reactor \u2014 a tubular reactor packed with a stationary\ \ catalyst bed.\nThe most common reactor type in heterogeneous catalysis testing." - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - - catcore:FixedBedReactor + - coremeta4cat:FixedBedReactor is_a: ReactorDesignType slots: - id @@ -13180,15 +13182,15 @@ classes: - rdf_type - Device_has_part - Device_other_identifier - class_uri: catcore:FixedBedReactor + class_uri: coremeta4cat:FixedBedReactor FluidizedBedReactor: name: FluidizedBedReactor - definition_uri: https://w3id.org/nfdi4cat/catcore/FluidizedBedReactor + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/FluidizedBedReactor description: "Fluidized bed reactor \u2014 a reactor in which the catalyst particles\ \ are\nsuspended in an upward-flowing gas or liquid stream." - from_schema: https://w3id.org/nfdi4cat/catcore/reaction/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ mappings: - - catcore:FluidizedBedReactor + - coremeta4cat:FluidizedBedReactor is_a: ReactorDesignType slots: - id @@ -13204,10 +13206,10 @@ classes: - gas_distributor_type - bed_expansion_height - bubble_size_distribution - class_uri: catcore:FluidizedBedReactor + class_uri: coremeta4cat:FluidizedBedReactor MaterialDescriptorMixin: name: MaterialDescriptorMixin - definition_uri: https://w3id.org/nfdi4cat/catcore/MaterialDescriptorMixin + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/MaterialDescriptorMixin description: 'Mixin providing material identity slots shared by CalculatedProperty subclasses that target a specific material composition and crystal @@ -13217,30 +13219,30 @@ classes: AqueousStability, GrainBoundaries, ElectronicStructure, Ferroelectrics, BandGap).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mixin: true slots: - material_composition - crystal_structure - class_uri: catcore:MaterialDescriptorMixin + class_uri: coremeta4cat:MaterialDescriptorMixin DFTSettingsMixin: name: DFTSettingsMixin - definition_uri: https://w3id.org/nfdi4cat/catcore/DFTSettingsMixin + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/DFTSettingsMixin description: 'Mixin providing plane-wave DFT numerical settings shared by CalculatedProperty subclasses that are computed with periodic DFT (DielectricTensors, EquationsOfState, ElectronicStructure, BandGap).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mixin: true slots: - energy_cutoff - convergence_criteria - k_point_mesh - class_uri: catcore:DFTSettingsMixin + class_uri: coremeta4cat:DFTSettingsMixin Simulation: name: Simulation - definition_uri: https://w3id.org/nfdi4cat/catcore/Simulation + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/Simulation description: 'A DataGeneratingActivity in which a catalyst, catalytic material, or @@ -13256,10 +13258,10 @@ classes: is linked via evaluated_entity or evaluated_activity. - The specific simulation type is expressed via rdf_type (e.g. catcore:DFT, + The specific simulation type is expressed via rdf_type (e.g. coremeta4cat:DFT, NCIT:C18097 for molecular dynamics), following DCAT-AP-PLUS Pattern 3.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - NCIT:C48936 is_a: DataGeneratingActivity @@ -13287,9 +13289,9 @@ classes: slot_usage: rdf_type: name: rdf_type - description: 'The type of simulation method as an ontology term (e.g. catcore:DFT, + description: 'The type of simulation method as an ontology term (e.g. coremeta4cat:DFT, - NCIT:C18097 for MD, catcore:Microkinetics). This is the primary + NCIT:C18097 for MD, coremeta4cat:Microkinetics). This is the primary machine-actionable classification of the simulation type.' recommended: true @@ -13317,14 +13319,14 @@ classes: class_uri: NCIT:C48936 SimulationMethod: name: SimulationMethod - definition_uri: https://w3id.org/nfdi4cat/catcore/SimulationMethod + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/SimulationMethod description: 'Abstract Plan describing the computational method (protocol) used in a Simulation. Concrete subclasses carry method-specific parameter slots. Linked from Simulation via realized_plan.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - OBI:0000272 is_a: Plan @@ -13337,13 +13339,13 @@ classes: class_uri: OBI:0000272 DFT: name: DFT - definition_uri: https://w3id.org/nfdi4cat/catcore/DFT + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/DFT description: "Density functional theory \u2014 a quantum mechanical method for\ \ calculating\nthe electronic structure of atoms, molecules, and periodic solids.\n\ The most widely used ab initio method in computational catalysis." - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:DFT + - coremeta4cat:DFT is_a: SimulationMethod slots: - title @@ -13356,14 +13358,14 @@ classes: - dft_u_parameters - spin_polarization - total_energy_per_atom - class_uri: catcore:DFT + class_uri: coremeta4cat:DFT MolecularDynamics: name: MolecularDynamics - definition_uri: https://w3id.org/nfdi4cat/catcore/MolecularDynamics + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/MolecularDynamics description: "Molecular dynamics simulation \u2014 a method for computing the\ \ time evolution\nof a system of interacting particles by integrating the equations\ \ of motion.\nUsed to study diffusion, reaction kinetics, and thermal properties." - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - NCIT:C18097 is_a: SimulationMethod @@ -13380,13 +13382,13 @@ classes: class_uri: NCIT:C18097 Microkinetics: name: Microkinetics - definition_uri: https://w3id.org/nfdi4cat/catcore/Microkinetics + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/Microkinetics description: "Microkinetic modelling \u2014 a mean-field kinetic approach that\ \ integrates\nelementary reaction steps and their rate constants to predict\ \ catalytic\nactivity and selectivity under reaction conditions." - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:Microkinetics + - coremeta4cat:Microkinetics is_a: SimulationMethod slots: - title @@ -13399,17 +13401,17 @@ classes: - pressure - surface_coverage - activation_energy - class_uri: catcore:Microkinetics + class_uri: coremeta4cat:Microkinetics MonteCarlo: name: MonteCarlo - definition_uri: https://w3id.org/nfdi4cat/catcore/MonteCarlo + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/MonteCarlo description: "Monte Carlo simulation \u2014 a stochastic method that samples configuration\n\ space using random moves accepted or rejected according to a statistical\ncriterion\ \ (e.g. Metropolis). Used for adsorption isotherms, phase diagrams,\nand lattice-based\ \ kinetics." - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:MonteCarlo + - coremeta4cat:MonteCarlo is_a: SimulationMethod slots: - title @@ -13423,10 +13425,10 @@ classes: - acceptance_criteria - equilibration_steps - sampling_interval - class_uri: catcore:MonteCarlo + class_uri: coremeta4cat:MonteCarlo CalculatedProperty: name: CalculatedProperty - definition_uri: https://w3id.org/nfdi4cat/catcore/CalculatedProperty + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/CalculatedProperty description: 'Abstract QualitativeAttribute representing a property computed by a @@ -13435,9 +13437,9 @@ classes: values and the computational settings used to produce them. Linked from Simulation via the calculated_property slot.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:CalculatedProperty + - coremeta4cat:CalculatedProperty is_a: QualitativeAttribute abstract: true slots: @@ -13446,19 +13448,19 @@ classes: - QualitativeAttribute_value - ClassifierMixin_type - rdf_type - class_uri: catcore:CalculatedProperty + class_uri: coremeta4cat:CalculatedProperty ThermodynamicStability: name: ThermodynamicStability - definition_uri: https://w3id.org/nfdi4cat/catcore/ThermodynamicStability + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ThermodynamicStability description: 'Thermodynamic stability of a material or phase, characterised by formation energy, convex hull distance, and competing phases. Used to screen catalyst stability and predict synthesis feasibility.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:ThermodynamicStability + - coremeta4cat:ThermodynamicStability is_a: CalculatedProperty slots: - title @@ -13471,17 +13473,17 @@ classes: - energy_above_hull - phase_diagram_type - competing_phases - class_uri: catcore:ThermodynamicStability + class_uri: coremeta4cat:ThermodynamicStability Piezoelectricity: name: Piezoelectricity - definition_uri: https://w3id.org/nfdi4cat/catcore/Piezoelectricity + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/Piezoelectricity description: 'Piezoelectric response of a non-centrosymmetric material, described by the piezoelectric tensor. Relevant for piezocatalysis applications.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:Piezoelectricity + - coremeta4cat:Piezoelectricity is_a: CalculatedProperty slots: - title @@ -13493,17 +13495,17 @@ classes: - crystal_symmetry - strain_applied - ionic_electronic_contributions - class_uri: catcore:Piezoelectricity + class_uri: coremeta4cat:Piezoelectricity ElasticConstants: name: ElasticConstants - definition_uri: https://w3id.org/nfdi4cat/catcore/ElasticConstants + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ElasticConstants description: 'Elastic mechanical properties of a material derived from the elastic tensor, including bulk modulus, shear modulus, and Young''s modulus.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:ElasticConstants + - coremeta4cat:ElasticConstants is_a: CalculatedProperty slots: - title @@ -13516,18 +13518,18 @@ classes: - shear_modulus - poisson_ratio - young_modulus - class_uri: catcore:ElasticConstants + class_uri: coremeta4cat:ElasticConstants Surfaces: name: Surfaces - definition_uri: https://w3id.org/nfdi4cat/catcore/Surfaces + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/Surfaces description: 'Surface properties of a catalyst computed from a periodic slab model, including surface energy, Miller index, slab thickness, and vacuum spacing. Central to heterogeneous catalysis modelling.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:Surfaces + - coremeta4cat:Surfaces is_a: CalculatedProperty slots: - title @@ -13540,17 +13542,17 @@ classes: - slab_thickness - vacuum_spacing - surface_termination_method - class_uri: catcore:Surfaces + class_uri: coremeta4cat:Surfaces DielectricTensors: name: DielectricTensors - definition_uri: https://w3id.org/nfdi4cat/catcore/DielectricTensors + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/DielectricTensors description: 'Dielectric tensor computed from density functional perturbation theory (DFPT). Characterises the optical and static dielectric response of a material.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:DielectricTensors + - coremeta4cat:DielectricTensors is_a: CalculatedProperty mixins: - MaterialDescriptorMixin @@ -13568,18 +13570,18 @@ classes: - energy_cutoff - convergence_criteria - k_point_mesh - class_uri: catcore:DielectricTensors + class_uri: coremeta4cat:DielectricTensors PhononDispersion: name: PhononDispersion - definition_uri: https://w3id.org/nfdi4cat/catcore/PhononDispersion + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/PhononDispersion description: 'Phonon dispersion relations computed from interatomic force constants, providing access to vibrational frequencies, thermodynamic quantities, and dynamical stability (imaginary modes).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:PhononDispersion + - coremeta4cat:PhononDispersion is_a: CalculatedProperty mixins: - MaterialDescriptorMixin @@ -13595,19 +13597,19 @@ classes: - imaginary_modes - material_composition - crystal_structure - class_uri: catcore:PhononDispersion + class_uri: coremeta4cat:PhononDispersion EquationsOfState: name: EquationsOfState - definition_uri: https://w3id.org/nfdi4cat/catcore/EquationsOfState + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/EquationsOfState description: 'Equation of state relating energy (or enthalpy) to volume, fitted to a parametric model (e.g. Birch-Murnaghan). Used to extract equilibrium volume, bulk modulus, and its pressure derivative.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:EquationsOfState + - coremeta4cat:EquationsOfState is_a: CalculatedProperty mixins: - MaterialDescriptorMixin @@ -13627,19 +13629,19 @@ classes: - energy_cutoff - convergence_criteria - k_point_mesh - class_uri: catcore:EquationsOfState + class_uri: coremeta4cat:EquationsOfState AqueousStability: name: AqueousStability - definition_uri: https://w3id.org/nfdi4cat/catcore/AqueousStability + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/AqueousStability description: 'Electrochemical (Pourbaix) stability of a catalyst in aqueous solution as a function of pH and electrode potential. Critical for electrocatalyst stability screening.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:AqueousStability + - coremeta4cat:AqueousStability is_a: CalculatedProperty mixins: - MaterialDescriptorMixin @@ -13656,18 +13658,18 @@ classes: - temperature - material_composition - crystal_structure - class_uri: catcore:AqueousStability + class_uri: coremeta4cat:AqueousStability GrainBoundaries: name: GrainBoundaries - definition_uri: https://w3id.org/nfdi4cat/catcore/GrainBoundaries + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/GrainBoundaries description: 'Grain boundary structure and energetics from atomistic simulation. Relevant for understanding polycrystalline catalyst behaviour, sintering, and charge/defect segregation.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:GrainBoundaries + - coremeta4cat:GrainBoundaries is_a: CalculatedProperty mixins: - MaterialDescriptorMixin @@ -13686,19 +13688,19 @@ classes: - charge_defect_segregation - material_composition - crystal_structure - class_uri: catcore:GrainBoundaries + class_uri: coremeta4cat:GrainBoundaries ElectronicStructure: name: ElectronicStructure - definition_uri: https://w3id.org/nfdi4cat/catcore/ElectronicStructure + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/ElectronicStructure description: 'Electronic band structure and density of states, characterising the electronic properties of a catalyst relevant to activity descriptors (d-band centre, band gap, Fermi energy).' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:ElectronicStructure + - coremeta4cat:ElectronicStructure is_a: CalculatedProperty mixins: - MaterialDescriptorMixin @@ -13718,18 +13720,18 @@ classes: - energy_cutoff - convergence_criteria - k_point_mesh - class_uri: catcore:ElectronicStructure + class_uri: coremeta4cat:ElectronicStructure Ferroelectrics: name: Ferroelectrics - definition_uri: https://w3id.org/nfdi4cat/catcore/Ferroelectrics + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/Ferroelectrics description: 'Ferroelectric properties computed from DFT, including spontaneous polarization, switching barrier, and coercive field. Relevant for ferroelectric-photocatalyst design.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:Ferroelectrics + - coremeta4cat:Ferroelectrics is_a: CalculatedProperty mixins: - MaterialDescriptorMixin @@ -13747,18 +13749,18 @@ classes: - temperature_dependence - material_composition - crystal_structure - class_uri: catcore:Ferroelectrics + class_uri: coremeta4cat:Ferroelectrics BandGap: name: BandGap - definition_uri: https://w3id.org/nfdi4cat/catcore/BandGap + definition_uri: https://w3id.org/nfdi4cat/coremeta4cat/BandGap description: 'Electronic band gap and its character (direct/indirect), with optional many-body (GW) or excitonic corrections. Critical for photocatalyst and semiconductor catalyst screening.' - from_schema: https://w3id.org/nfdi4cat/catcore/simulation/ + from_schema: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ mappings: - - catcore:BandGap + - coremeta4cat:BandGap is_a: CalculatedProperty mixins: - MaterialDescriptorMixin @@ -13781,7 +13783,7 @@ classes: - energy_cutoff - convergence_criteria - k_point_mesh - class_uri: catcore:BandGap + class_uri: coremeta4cat:BandGap SubstanceSample: name: SubstanceSample definition_uri: https://nfdi-de.github.io/chem-dcat-ap/dcat_4c_ap.yaml#SubstanceSample @@ -14518,7 +14520,7 @@ classes: name: type range: DefinedTerm inlined: true - class_uri: dcatap_plus:ClassifierMixin + class_uri: dcatapplus:ClassifierMixin Concept: name: Concept definition_uri: https://w3id.org/nfdi-de/dcat-ap-plus/Concept @@ -16193,7 +16195,7 @@ classes: slots: - title - description - class_uri: dcatap_plus:SupportiveEntity + class_uri: dcatapplus:SupportiveEntity Surrounding: name: Surrounding definition_uri: https://w3id.org/nfdi-de/dcat-ap-plus/Surrounding @@ -17073,8 +17075,8 @@ classes: - rdf_type class_uri: qudt:Quantity metamodel_version: 1.7.0 -source_file: catcore.yaml -source_file_date: '2026-03-04T09:02:39' -source_file_size: 6616 -generation_date: '2026-03-04T09:46:48' +source_file: coremeta4cat.yaml +source_file_date: '2026-03-09T16:14:14' +source_file_size: 6730 +generation_date: '2026-03-09T17:32:19' diff --git a/docs/simulation.md b/docs/simulation.md index 52e85d107..7758327e0 100644 --- a/docs/simulation.md +++ b/docs/simulation.md @@ -33,38 +33,38 @@ Computational approaches are organized under the parent field simulation method, ## Slots
-software package (Required, Multivalued) +software package (Mandatory, Multivalued) **Description:** Software package or code used for the simulation (e.g. VASP, Quantum ESPRESSO, LAMMPS, CP2K, ORCA, Zacros). Include version number where possible. **Data Type:** string -**Cardinality:** Required, Multivalued +**Cardinality:** Mandatory, Multivalued -**CURIE:** [`catcore:software_package`](https://w3id.org/nfdi4cat/catcore/software_package) +**CURIE:** [`coremeta4cat:software_package`](https://w3id.org/nfdi4cat/coremeta4cat/software_package) -**Schema Reference:** [software_package](./elements/software_package.md) +**Schema Reference:** [software_package](./elements/slots/software_package.md)

- + 💡 Submit Term Feedback

-calculated property (Required, Multivalued) +calculated property (Mandatory, Multivalued) **Description:** A property computed by this Simulation, provided as a CalculatedProperty instance. Multiple properties may be computed in a single simulation run. **Data Type:** CalculatedProperty -**Cardinality:** Required, Multivalued +**Cardinality:** Mandatory, Multivalued -**CURIE:** [`catcore:calculated_property`](https://w3id.org/nfdi4cat/catcore/calculated_property) +**CURIE:** [`coremeta4cat:calculated_property`](https://w3id.org/nfdi4cat/coremeta4cat/calculated_property) -**Schema Reference:** [calculated_property](./elements/calculated_property.md) +**Schema Reference:** [calculated_property](./elements/slots/calculated_property.md) **Data Type Class Details:** @@ -78,12 +78,12 @@ Simulation. Concrete subclasses carry the property-specific output values and the computational settings used to produce them. Linked from Simulation via the calculated_property slot. -**CURIE:** [`catcore:CalculatedProperty`](https://w3id.org/nfdi4cat/catcore/CalculatedProperty) +**CURIE:** [`coremeta4cat:CalculatedProperty`](https://w3id.org/nfdi4cat/coremeta4cat/CalculatedProperty) -**Schema Reference:** [CalculatedProperty](./elements/CalculatedProperty.md) +**Schema Reference:** [CalculatedProperty](./elements/classes/CalculatedProperty.md)

- + 💡 Submit Term Feedback

@@ -97,9 +97,9 @@ Linked from Simulation via the calculated_property slot. energy, convex hull distance, and competing phases. Used to screen catalyst stability and predict synthesis feasibility. -**CURIE:** [`catcore:ThermodynamicStability`](https://w3id.org/nfdi4cat/catcore/ThermodynamicStability) +**CURIE:** [`coremeta4cat:ThermodynamicStability`](https://w3id.org/nfdi4cat/coremeta4cat/ThermodynamicStability) -**Schema Reference:** [ThermodynamicStability](./elements/ThermodynamicStability.md) +**Schema Reference:** [ThermodynamicStability](./elements/classes/ThermodynamicStability.md) **Slots** @@ -112,14 +112,14 @@ stability and predict synthesis feasibility. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:formation_energy`](https://w3id.org/nfdi4cat/catcore/formation_energy) +**CURIE:** [`coremeta4cat:formation_energy`](https://w3id.org/nfdi4cat/coremeta4cat/formation_energy) -**Schema Reference:** [formation_energy](./elements/formation_energy.md) +**Schema Reference:** [formation_energy](./elements/slots/formation_energy.md) **Unit:** eV

- + 💡 Submit Term Feedback

@@ -134,12 +134,12 @@ stability and predict synthesis feasibility. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:reference_energies`](https://w3id.org/nfdi4cat/catcore/reference_energies) +**CURIE:** [`coremeta4cat:reference_energies`](https://w3id.org/nfdi4cat/coremeta4cat/reference_energies) -**Schema Reference:** [reference_energies](./elements/reference_energies.md) +**Schema Reference:** [reference_energies](./elements/slots/reference_energies.md)

- + 💡 Submit Term Feedback

@@ -154,14 +154,14 @@ metric). Zero for phases on the hull; positive values indicate metastability. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:energy_above_hull`](https://w3id.org/nfdi4cat/catcore/energy_above_hull) +**CURIE:** [`coremeta4cat:energy_above_hull`](https://w3id.org/nfdi4cat/coremeta4cat/energy_above_hull) -**Schema Reference:** [energy_above_hull](./elements/energy_above_hull.md) +**Schema Reference:** [energy_above_hull](./elements/slots/energy_above_hull.md) **Unit:** eV

- + 💡 Submit Term Feedback

@@ -175,12 +175,12 @@ metric). Zero for phases on the hull; positive values indicate metastability. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:phase_diagram_type`](https://w3id.org/nfdi4cat/catcore/phase_diagram_type) +**CURIE:** [`coremeta4cat:phase_diagram_type`](https://w3id.org/nfdi4cat/coremeta4cat/phase_diagram_type) -**Schema Reference:** [phase_diagram_type](./elements/phase_diagram_type.md) +**Schema Reference:** [phase_diagram_type](./elements/slots/phase_diagram_type.md)

- + 💡 Submit Term Feedback

@@ -195,18 +195,18 @@ metric). Zero for phases on the hull; positive values indicate metastability. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:competing_phases`](https://w3id.org/nfdi4cat/catcore/competing_phases) +**CURIE:** [`coremeta4cat:competing_phases`](https://w3id.org/nfdi4cat/coremeta4cat/competing_phases) -**Schema Reference:** [competing_phases](./elements/competing_phases.md) +**Schema Reference:** [competing_phases](./elements/slots/competing_phases.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -217,9 +217,9 @@ metric). Zero for phases on the hull; positive values indicate metastability. **Description:** Piezoelectric response of a non-centrosymmetric material, described by the piezoelectric tensor. Relevant for piezocatalysis applications. -**CURIE:** [`catcore:Piezoelectricity`](https://w3id.org/nfdi4cat/catcore/Piezoelectricity) +**CURIE:** [`coremeta4cat:Piezoelectricity`](https://w3id.org/nfdi4cat/coremeta4cat/Piezoelectricity) -**Schema Reference:** [Piezoelectricity](./elements/Piezoelectricity.md) +**Schema Reference:** [Piezoelectricity](./elements/classes/Piezoelectricity.md) **Slots** @@ -233,12 +233,12 @@ describing the coupling between stress and electric polarization. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:piezoelectric_tensor`](https://w3id.org/nfdi4cat/catcore/piezoelectric_tensor) +**CURIE:** [`coremeta4cat:piezoelectric_tensor`](https://w3id.org/nfdi4cat/coremeta4cat/piezoelectric_tensor) -**Schema Reference:** [piezoelectric_tensor](./elements/piezoelectric_tensor.md) +**Schema Reference:** [piezoelectric_tensor](./elements/slots/piezoelectric_tensor.md)

- + 💡 Submit Term Feedback

@@ -252,12 +252,12 @@ describing the coupling between stress and electric polarization. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:crystal_symmetry`](https://w3id.org/nfdi4cat/catcore/crystal_symmetry) +**CURIE:** [`coremeta4cat:crystal_symmetry`](https://w3id.org/nfdi4cat/coremeta4cat/crystal_symmetry) -**Schema Reference:** [crystal_symmetry](./elements/crystal_symmetry.md) +**Schema Reference:** [crystal_symmetry](./elements/slots/crystal_symmetry.md)

- + 💡 Submit Term Feedback

@@ -271,12 +271,12 @@ describing the coupling between stress and electric polarization. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:strain_applied`](https://w3id.org/nfdi4cat/catcore/strain_applied) +**CURIE:** [`coremeta4cat:strain_applied`](https://w3id.org/nfdi4cat/coremeta4cat/strain_applied) -**Schema Reference:** [strain_applied](./elements/strain_applied.md) +**Schema Reference:** [strain_applied](./elements/slots/strain_applied.md)

- + 💡 Submit Term Feedback

@@ -291,18 +291,18 @@ describing the coupling between stress and electric polarization. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:ionic_electronic_contributions`](https://w3id.org/nfdi4cat/catcore/ionic_electronic_contributions) +**CURIE:** [`coremeta4cat:ionic_electronic_contributions`](https://w3id.org/nfdi4cat/coremeta4cat/ionic_electronic_contributions) -**Schema Reference:** [ionic_electronic_contributions](./elements/ionic_electronic_contributions.md) +**Schema Reference:** [ionic_electronic_contributions](./elements/slots/ionic_electronic_contributions.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -313,9 +313,9 @@ describing the coupling between stress and electric polarization. **Description:** Elastic mechanical properties of a material derived from the elastic tensor, including bulk modulus, shear modulus, and Young's modulus. -**CURIE:** [`catcore:ElasticConstants`](https://w3id.org/nfdi4cat/catcore/ElasticConstants) +**CURIE:** [`coremeta4cat:ElasticConstants`](https://w3id.org/nfdi4cat/coremeta4cat/ElasticConstants) -**Schema Reference:** [ElasticConstants](./elements/ElasticConstants.md) +**Schema Reference:** [ElasticConstants](./elements/classes/ElasticConstants.md) **Slots** @@ -329,12 +329,12 @@ elastic response of the material. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:elastic_tensor`](https://w3id.org/nfdi4cat/catcore/elastic_tensor) +**CURIE:** [`coremeta4cat:elastic_tensor`](https://w3id.org/nfdi4cat/coremeta4cat/elastic_tensor) -**Schema Reference:** [elastic_tensor](./elements/elastic_tensor.md) +**Schema Reference:** [elastic_tensor](./elements/slots/elastic_tensor.md)

- + 💡 Submit Term Feedback

@@ -348,14 +348,14 @@ elastic response of the material. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:bulk_modulus`](https://w3id.org/nfdi4cat/catcore/bulk_modulus) +**CURIE:** [`coremeta4cat:bulk_modulus`](https://w3id.org/nfdi4cat/coremeta4cat/bulk_modulus) -**Schema Reference:** [bulk_modulus](./elements/bulk_modulus.md) +**Schema Reference:** [bulk_modulus](./elements/slots/bulk_modulus.md) **Unit:** GPa

- + 💡 Submit Term Feedback

@@ -369,14 +369,14 @@ elastic response of the material. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:shear_modulus`](https://w3id.org/nfdi4cat/catcore/shear_modulus) +**CURIE:** [`coremeta4cat:shear_modulus`](https://w3id.org/nfdi4cat/coremeta4cat/shear_modulus) -**Schema Reference:** [shear_modulus](./elements/shear_modulus.md) +**Schema Reference:** [shear_modulus](./elements/slots/shear_modulus.md) **Unit:** GPa

- + 💡 Submit Term Feedback

@@ -390,12 +390,12 @@ elastic response of the material. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:poisson_ratio`](https://w3id.org/nfdi4cat/catcore/poisson_ratio) +**CURIE:** [`coremeta4cat:poisson_ratio`](https://w3id.org/nfdi4cat/coremeta4cat/poisson_ratio) -**Schema Reference:** [poisson_ratio](./elements/poisson_ratio.md) +**Schema Reference:** [poisson_ratio](./elements/slots/poisson_ratio.md)

- + 💡 Submit Term Feedback

@@ -409,20 +409,20 @@ elastic response of the material. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:young_modulus`](https://w3id.org/nfdi4cat/catcore/young_modulus) +**CURIE:** [`coremeta4cat:young_modulus`](https://w3id.org/nfdi4cat/coremeta4cat/young_modulus) -**Schema Reference:** [young_modulus](./elements/young_modulus.md) +**Schema Reference:** [young_modulus](./elements/slots/young_modulus.md) **Unit:** GPa

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -434,9 +434,9 @@ elastic response of the material. including surface energy, Miller index, slab thickness, and vacuum spacing. Central to heterogeneous catalysis modelling. -**CURIE:** [`catcore:Surfaces`](https://w3id.org/nfdi4cat/catcore/Surfaces) +**CURIE:** [`coremeta4cat:Surfaces`](https://w3id.org/nfdi4cat/coremeta4cat/Surfaces) -**Schema Reference:** [Surfaces](./elements/Surfaces.md) +**Schema Reference:** [Surfaces](./elements/classes/Surfaces.md) **Slots** @@ -450,14 +450,14 @@ A lower value indicates a more stable surface facet. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:surface_energy`](https://w3id.org/nfdi4cat/catcore/surface_energy) +**CURIE:** [`coremeta4cat:surface_energy`](https://w3id.org/nfdi4cat/coremeta4cat/surface_energy) -**Schema Reference:** [surface_energy](./elements/surface_energy.md) +**Schema Reference:** [surface_energy](./elements/slots/surface_energy.md) **Unit:** J/m2

- + 💡 Submit Term Feedback

@@ -471,12 +471,12 @@ A lower value indicates a more stable surface facet. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:miller_indices`](https://w3id.org/nfdi4cat/catcore/miller_indices) +**CURIE:** [`coremeta4cat:miller_indices`](https://w3id.org/nfdi4cat/coremeta4cat/miller_indices) -**Schema Reference:** [miller_indices](./elements/miller_indices.md) +**Schema Reference:** [miller_indices](./elements/slots/miller_indices.md)

- + 💡 Submit Term Feedback

@@ -490,14 +490,14 @@ A lower value indicates a more stable surface facet. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:slab_thickness`](https://w3id.org/nfdi4cat/catcore/slab_thickness) +**CURIE:** [`coremeta4cat:slab_thickness`](https://w3id.org/nfdi4cat/coremeta4cat/slab_thickness) -**Schema Reference:** [slab_thickness](./elements/slab_thickness.md) +**Schema Reference:** [slab_thickness](./elements/slots/slab_thickness.md) **Unit:** Ao

- + 💡 Submit Term Feedback

@@ -512,14 +512,14 @@ periodic interactions between slab images. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:vacuum_spacing`](https://w3id.org/nfdi4cat/catcore/vacuum_spacing) +**CURIE:** [`coremeta4cat:vacuum_spacing`](https://w3id.org/nfdi4cat/coremeta4cat/vacuum_spacing) -**Schema Reference:** [vacuum_spacing](./elements/vacuum_spacing.md) +**Schema Reference:** [vacuum_spacing](./elements/slots/vacuum_spacing.md) **Unit:** Ao

- + 💡 Submit Term Feedback

@@ -534,18 +534,18 @@ periodic interactions between slab images. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:surface_termination_method`](https://w3id.org/nfdi4cat/catcore/surface_termination_method) +**CURIE:** [`coremeta4cat:surface_termination_method`](https://w3id.org/nfdi4cat/coremeta4cat/surface_termination_method) -**Schema Reference:** [surface_termination_method](./elements/surface_termination_method.md) +**Schema Reference:** [surface_termination_method](./elements/slots/surface_termination_method.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -556,28 +556,28 @@ periodic interactions between slab images. **Description:** Dielectric tensor computed from density functional perturbation theory (DFPT). Characterises the optical and static dielectric response of a material. -**CURIE:** [`catcore:DielectricTensors`](https://w3id.org/nfdi4cat/catcore/DielectricTensors) +**CURIE:** [`coremeta4cat:DielectricTensors`](https://w3id.org/nfdi4cat/coremeta4cat/DielectricTensors) -**Schema Reference:** [DielectricTensors](./elements/DielectricTensors.md) +**Schema Reference:** [DielectricTensors](./elements/classes/DielectricTensors.md) **Slots**
dielectric tensor (Optional, Multivalued) -**Description:** Components of the static and/or high-frequency dielectric tensor ε_ij, +**Description:** Components of the static and/or high-frequency dielectric tensor epsilon_ij, computed from DFPT. **Data Type:** string **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:dielectric_tensor`](https://w3id.org/nfdi4cat/catcore/dielectric_tensor) +**CURIE:** [`coremeta4cat:dielectric_tensor`](https://w3id.org/nfdi4cat/coremeta4cat/dielectric_tensor) -**Schema Reference:** [dielectric_tensor](./elements/dielectric_tensor.md) +**Schema Reference:** [dielectric_tensor](./elements/slots/dielectric_tensor.md)

- + 💡 Submit Term Feedback

@@ -592,12 +592,12 @@ the polarization changes with atomic displacements. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:born_effective_charges`](https://w3id.org/nfdi4cat/catcore/born_effective_charges) +**CURIE:** [`coremeta4cat:born_effective_charges`](https://w3id.org/nfdi4cat/coremeta4cat/born_effective_charges) -**Schema Reference:** [born_effective_charges](./elements/born_effective_charges.md) +**Schema Reference:** [born_effective_charges](./elements/slots/born_effective_charges.md)

- + 💡 Submit Term Feedback

@@ -612,12 +612,12 @@ Use empirical formula or SMILES for molecular systems. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:material_composition`](https://w3id.org/nfdi4cat/catcore/material_composition) +**CURIE:** [`coremeta4cat:material_composition`](https://w3id.org/nfdi4cat/coremeta4cat/material_composition) -**Schema Reference:** [material_composition](./elements/material_composition.md) +**Schema Reference:** [material_composition](./elements/slots/material_composition.md)

- + 💡 Submit Term Feedback

@@ -634,10 +634,10 @@ lattice parameters (e.g. "Fm-3m, a=3.92 Å for Pt"). **CURIE:** [`SIO:001100`](http://semanticscience.org/resource/SIO_001100) -**Schema Reference:** [crystal_structure](./elements/crystal_structure.md) +**Schema Reference:** [crystal_structure](./elements/slots/crystal_structure.md)

- + 💡 Submit Term Feedback

@@ -651,14 +651,14 @@ lattice parameters (e.g. "Fm-3m, a=3.92 Å for Pt"). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:energy_cutoff`](https://w3id.org/nfdi4cat/catcore/energy_cutoff) +**CURIE:** [`coremeta4cat:energy_cutoff`](https://w3id.org/nfdi4cat/coremeta4cat/energy_cutoff) -**Schema Reference:** [energy_cutoff](./elements/energy_cutoff.md) +**Schema Reference:** [energy_cutoff](./elements/slots/energy_cutoff.md) **Unit:** eV

- + 💡 Submit Term Feedback

@@ -673,12 +673,12 @@ geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/Å). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:convergence_criteria`](https://w3id.org/nfdi4cat/catcore/convergence_criteria) +**CURIE:** [`coremeta4cat:convergence_criteria`](https://w3id.org/nfdi4cat/coremeta4cat/convergence_criteria) -**Schema Reference:** [convergence_criteria](./elements/convergence_criteria.md) +**Schema Reference:** [convergence_criteria](./elements/slots/convergence_criteria.md)

- + 💡 Submit Term Feedback

@@ -693,18 +693,18 @@ geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/Å). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:k_point_mesh`](https://w3id.org/nfdi4cat/catcore/k_point_mesh) +**CURIE:** [`coremeta4cat:k_point_mesh`](https://w3id.org/nfdi4cat/coremeta4cat/k_point_mesh) -**Schema Reference:** [k_point_mesh](./elements/k_point_mesh.md) +**Schema Reference:** [k_point_mesh](./elements/slots/k_point_mesh.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -716,9 +716,9 @@ geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/Å). providing access to vibrational frequencies, thermodynamic quantities, and dynamical stability (imaginary modes). -**CURIE:** [`catcore:PhononDispersion`](https://w3id.org/nfdi4cat/catcore/PhononDispersion) +**CURIE:** [`coremeta4cat:PhononDispersion`](https://w3id.org/nfdi4cat/coremeta4cat/PhononDispersion) -**Schema Reference:** [PhononDispersion](./elements/PhononDispersion.md) +**Schema Reference:** [PhononDispersion](./elements/classes/PhononDispersion.md) **Slots** @@ -732,12 +732,12 @@ differences / supercell method, DFPT/linear response). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:force_constant_method`](https://w3id.org/nfdi4cat/catcore/force_constant_method) +**CURIE:** [`coremeta4cat:force_constant_method`](https://w3id.org/nfdi4cat/coremeta4cat/force_constant_method) -**Schema Reference:** [force_constant_method](./elements/force_constant_method.md) +**Schema Reference:** [force_constant_method](./elements/slots/force_constant_method.md)

- + 💡 Submit Term Feedback

@@ -752,12 +752,12 @@ Distinct from the electronic k-point mesh. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:kq_point_mesh`](https://w3id.org/nfdi4cat/catcore/kq_point_mesh) +**CURIE:** [`coremeta4cat:kq_point_mesh`](https://w3id.org/nfdi4cat/coremeta4cat/kq_point_mesh) -**Schema Reference:** [kq_point_mesh](./elements/kq_point_mesh.md) +**Schema Reference:** [kq_point_mesh](./elements/slots/kq_point_mesh.md)

- + 💡 Submit Term Feedback

@@ -771,14 +771,14 @@ Distinct from the electronic k-point mesh. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:smearing_parameter`](https://w3id.org/nfdi4cat/catcore/smearing_parameter) +**CURIE:** [`coremeta4cat:smearing_parameter`](https://w3id.org/nfdi4cat/coremeta4cat/smearing_parameter) -**Schema Reference:** [smearing_parameter](./elements/smearing_parameter.md) +**Schema Reference:** [smearing_parameter](./elements/slots/smearing_parameter.md) **Unit:** eV

- + 💡 Submit Term Feedback

@@ -793,12 +793,12 @@ Imaginary modes indicate dynamical instability of the structure. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:imaginary_modes`](https://w3id.org/nfdi4cat/catcore/imaginary_modes) +**CURIE:** [`coremeta4cat:imaginary_modes`](https://w3id.org/nfdi4cat/coremeta4cat/imaginary_modes) -**Schema Reference:** [imaginary_modes](./elements/imaginary_modes.md) +**Schema Reference:** [imaginary_modes](./elements/slots/imaginary_modes.md)

- + 💡 Submit Term Feedback

@@ -813,12 +813,12 @@ Use empirical formula or SMILES for molecular systems. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:material_composition`](https://w3id.org/nfdi4cat/catcore/material_composition) +**CURIE:** [`coremeta4cat:material_composition`](https://w3id.org/nfdi4cat/coremeta4cat/material_composition) -**Schema Reference:** [material_composition](./elements/material_composition.md) +**Schema Reference:** [material_composition](./elements/slots/material_composition.md)

- + 💡 Submit Term Feedback

@@ -835,16 +835,16 @@ lattice parameters (e.g. "Fm-3m, a=3.92 Å for Pt"). **CURIE:** [`SIO:001100`](http://semanticscience.org/resource/SIO_001100) -**Schema Reference:** [crystal_structure](./elements/crystal_structure.md) +**Schema Reference:** [crystal_structure](./elements/slots/crystal_structure.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -856,9 +856,9 @@ lattice parameters (e.g. "Fm-3m, a=3.92 Å for Pt"). parametric model (e.g. Birch-Murnaghan). Used to extract equilibrium volume, bulk modulus, and its pressure derivative. -**CURIE:** [`catcore:EquationsOfState`](https://w3id.org/nfdi4cat/catcore/EquationsOfState) +**CURIE:** [`coremeta4cat:EquationsOfState`](https://w3id.org/nfdi4cat/coremeta4cat/EquationsOfState) -**Schema Reference:** [EquationsOfState](./elements/EquationsOfState.md) +**Schema Reference:** [EquationsOfState](./elements/classes/EquationsOfState.md) **Slots** @@ -872,12 +872,12 @@ volume, bulk modulus, and its pressure derivative. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:fit_method`](https://w3id.org/nfdi4cat/catcore/fit_method) +**CURIE:** [`coremeta4cat:fit_method`](https://w3id.org/nfdi4cat/coremeta4cat/fit_method) -**Schema Reference:** [fit_method](./elements/fit_method.md) +**Schema Reference:** [fit_method](./elements/slots/fit_method.md)

- + 💡 Submit Term Feedback

@@ -891,14 +891,14 @@ volume, bulk modulus, and its pressure derivative. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:bulk_modulus`](https://w3id.org/nfdi4cat/catcore/bulk_modulus) +**CURIE:** [`coremeta4cat:bulk_modulus`](https://w3id.org/nfdi4cat/coremeta4cat/bulk_modulus) -**Schema Reference:** [bulk_modulus](./elements/bulk_modulus.md) +**Schema Reference:** [bulk_modulus](./elements/slots/bulk_modulus.md) **Unit:** GPa

- + 💡 Submit Term Feedback

@@ -912,12 +912,12 @@ volume, bulk modulus, and its pressure derivative. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:pressure_derivative`](https://w3id.org/nfdi4cat/catcore/pressure_derivative) +**CURIE:** [`coremeta4cat:pressure_derivative`](https://w3id.org/nfdi4cat/coremeta4cat/pressure_derivative) -**Schema Reference:** [pressure_derivative](./elements/pressure_derivative.md) +**Schema Reference:** [pressure_derivative](./elements/slots/pressure_derivative.md)

- + 💡 Submit Term Feedback

@@ -931,12 +931,12 @@ volume, bulk modulus, and its pressure derivative. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:fit_residuals`](https://w3id.org/nfdi4cat/catcore/fit_residuals) +**CURIE:** [`coremeta4cat:fit_residuals`](https://w3id.org/nfdi4cat/coremeta4cat/fit_residuals) -**Schema Reference:** [fit_residuals](./elements/fit_residuals.md) +**Schema Reference:** [fit_residuals](./elements/slots/fit_residuals.md)

- + 💡 Submit Term Feedback

@@ -951,12 +951,12 @@ Use empirical formula or SMILES for molecular systems. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:material_composition`](https://w3id.org/nfdi4cat/catcore/material_composition) +**CURIE:** [`coremeta4cat:material_composition`](https://w3id.org/nfdi4cat/coremeta4cat/material_composition) -**Schema Reference:** [material_composition](./elements/material_composition.md) +**Schema Reference:** [material_composition](./elements/slots/material_composition.md)

- + 💡 Submit Term Feedback

@@ -973,10 +973,10 @@ lattice parameters (e.g. "Fm-3m, a=3.92 Å for Pt"). **CURIE:** [`SIO:001100`](http://semanticscience.org/resource/SIO_001100) -**Schema Reference:** [crystal_structure](./elements/crystal_structure.md) +**Schema Reference:** [crystal_structure](./elements/slots/crystal_structure.md)

- + 💡 Submit Term Feedback

@@ -990,14 +990,14 @@ lattice parameters (e.g. "Fm-3m, a=3.92 Å for Pt"). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:energy_cutoff`](https://w3id.org/nfdi4cat/catcore/energy_cutoff) +**CURIE:** [`coremeta4cat:energy_cutoff`](https://w3id.org/nfdi4cat/coremeta4cat/energy_cutoff) -**Schema Reference:** [energy_cutoff](./elements/energy_cutoff.md) +**Schema Reference:** [energy_cutoff](./elements/slots/energy_cutoff.md) **Unit:** eV

- + 💡 Submit Term Feedback

@@ -1012,12 +1012,12 @@ geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/Å). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:convergence_criteria`](https://w3id.org/nfdi4cat/catcore/convergence_criteria) +**CURIE:** [`coremeta4cat:convergence_criteria`](https://w3id.org/nfdi4cat/coremeta4cat/convergence_criteria) -**Schema Reference:** [convergence_criteria](./elements/convergence_criteria.md) +**Schema Reference:** [convergence_criteria](./elements/slots/convergence_criteria.md)

- + 💡 Submit Term Feedback

@@ -1032,18 +1032,18 @@ geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/Å). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:k_point_mesh`](https://w3id.org/nfdi4cat/catcore/k_point_mesh) +**CURIE:** [`coremeta4cat:k_point_mesh`](https://w3id.org/nfdi4cat/coremeta4cat/k_point_mesh) -**Schema Reference:** [k_point_mesh](./elements/k_point_mesh.md) +**Schema Reference:** [k_point_mesh](./elements/slots/k_point_mesh.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -1055,9 +1055,9 @@ geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/Å). a function of pH and electrode potential. Critical for electrocatalyst stability screening. -**CURIE:** [`catcore:AqueousStability`](https://w3id.org/nfdi4cat/catcore/AqueousStability) +**CURIE:** [`coremeta4cat:AqueousStability`](https://w3id.org/nfdi4cat/coremeta4cat/AqueousStability) -**Schema Reference:** [AqueousStability](./elements/AqueousStability.md) +**Schema Reference:** [AqueousStability](./elements/classes/AqueousStability.md) **Slots** @@ -1070,12 +1070,12 @@ stability screening. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:ph_range`](https://w3id.org/nfdi4cat/catcore/ph_range) +**CURIE:** [`coremeta4cat:ph_range`](https://w3id.org/nfdi4cat/coremeta4cat/ph_range) -**Schema Reference:** [ph_range](./elements/ph_range.md) +**Schema Reference:** [ph_range](./elements/slots/ph_range.md)

- + 💡 Submit Term Feedback

@@ -1090,12 +1090,12 @@ stability screening. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:potential_range`](https://w3id.org/nfdi4cat/catcore/potential_range) +**CURIE:** [`coremeta4cat:potential_range`](https://w3id.org/nfdi4cat/coremeta4cat/potential_range) -**Schema Reference:** [potential_range](./elements/potential_range.md) +**Schema Reference:** [potential_range](./elements/slots/potential_range.md)

- + 💡 Submit Term Feedback

@@ -1110,12 +1110,12 @@ stability screening. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:solvation_model`](https://w3id.org/nfdi4cat/catcore/solvation_model) +**CURIE:** [`coremeta4cat:solvation_model`](https://w3id.org/nfdi4cat/coremeta4cat/solvation_model) -**Schema Reference:** [solvation_model](./elements/solvation_model.md) +**Schema Reference:** [solvation_model](./elements/slots/solvation_model.md)

- + 💡 Submit Term Feedback

@@ -1129,14 +1129,14 @@ stability screening. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:ionic_strength`](https://w3id.org/nfdi4cat/catcore/ionic_strength) +**CURIE:** [`coremeta4cat:ionic_strength`](https://w3id.org/nfdi4cat/coremeta4cat/ionic_strength) -**Schema Reference:** [ionic_strength](./elements/ionic_strength.md) +**Schema Reference:** [ionic_strength](./elements/slots/ionic_strength.md) **Unit:** mol/L

- + 💡 Submit Term Feedback

@@ -1152,12 +1152,12 @@ stability screening. **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -1172,12 +1172,12 @@ Use empirical formula or SMILES for molecular systems. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:material_composition`](https://w3id.org/nfdi4cat/catcore/material_composition) +**CURIE:** [`coremeta4cat:material_composition`](https://w3id.org/nfdi4cat/coremeta4cat/material_composition) -**Schema Reference:** [material_composition](./elements/material_composition.md) +**Schema Reference:** [material_composition](./elements/slots/material_composition.md)

- + 💡 Submit Term Feedback

@@ -1194,16 +1194,16 @@ lattice parameters (e.g. "Fm-3m, a=3.92 Å for Pt"). **CURIE:** [`SIO:001100`](http://semanticscience.org/resource/SIO_001100) -**Schema Reference:** [crystal_structure](./elements/crystal_structure.md) +**Schema Reference:** [crystal_structure](./elements/slots/crystal_structure.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -1215,9 +1215,9 @@ lattice parameters (e.g. "Fm-3m, a=3.92 Å for Pt"). Relevant for understanding polycrystalline catalyst behaviour, sintering, and charge/defect segregation. -**CURIE:** [`catcore:GrainBoundaries`](https://w3id.org/nfdi4cat/catcore/GrainBoundaries) +**CURIE:** [`coremeta4cat:GrainBoundaries`](https://w3id.org/nfdi4cat/coremeta4cat/GrainBoundaries) -**Schema Reference:** [GrainBoundaries](./elements/GrainBoundaries.md) +**Schema Reference:** [GrainBoundaries](./elements/classes/GrainBoundaries.md) **Slots** @@ -1225,18 +1225,18 @@ sintering, and charge/defect segregation. grain boundary plane (Optional, Multivalued) **Description:** Crystallographic plane of the grain boundary, expressed using -Miller indices (e.g. "Σ5 (310)[001]"). +Miller indices (e.g. "Sigma5 (310)[001]"). **Data Type:** string **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:grain_boundary_plane`](https://w3id.org/nfdi4cat/catcore/grain_boundary_plane) +**CURIE:** [`coremeta4cat:grain_boundary_plane`](https://w3id.org/nfdi4cat/coremeta4cat/grain_boundary_plane) -**Schema Reference:** [grain_boundary_plane](./elements/grain_boundary_plane.md) +**Schema Reference:** [grain_boundary_plane](./elements/slots/grain_boundary_plane.md)

- + 💡 Submit Term Feedback

@@ -1250,14 +1250,14 @@ Miller indices (e.g. "Σ5 (310)[001]"). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:misorientation_angle`](https://w3id.org/nfdi4cat/catcore/misorientation_angle) +**CURIE:** [`coremeta4cat:misorientation_angle`](https://w3id.org/nfdi4cat/coremeta4cat/misorientation_angle) -**Schema Reference:** [misorientation_angle](./elements/misorientation_angle.md) +**Schema Reference:** [misorientation_angle](./elements/slots/misorientation_angle.md) **Unit:** deg

- + 💡 Submit Term Feedback

@@ -1271,14 +1271,14 @@ Miller indices (e.g. "Σ5 (310)[001]"). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:grain_boundary_energy`](https://w3id.org/nfdi4cat/catcore/grain_boundary_energy) +**CURIE:** [`coremeta4cat:grain_boundary_energy`](https://w3id.org/nfdi4cat/coremeta4cat/grain_boundary_energy) -**Schema Reference:** [grain_boundary_energy](./elements/grain_boundary_energy.md) +**Schema Reference:** [grain_boundary_energy](./elements/slots/grain_boundary_energy.md) **Unit:** J/m2

- + 💡 Submit Term Feedback

@@ -1293,12 +1293,12 @@ Miller indices (e.g. "Σ5 (310)[001]"). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:simulation_cell_size`](https://w3id.org/nfdi4cat/catcore/simulation_cell_size) +**CURIE:** [`coremeta4cat:simulation_cell_size`](https://w3id.org/nfdi4cat/coremeta4cat/simulation_cell_size) -**Schema Reference:** [simulation_cell_size](./elements/simulation_cell_size.md) +**Schema Reference:** [simulation_cell_size](./elements/slots/simulation_cell_size.md)

- + 💡 Submit Term Feedback

@@ -1312,12 +1312,12 @@ Miller indices (e.g. "Σ5 (310)[001]"). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:gb_excess_volume`](https://w3id.org/nfdi4cat/catcore/gb_excess_volume) +**CURIE:** [`coremeta4cat:gb_excess_volume`](https://w3id.org/nfdi4cat/coremeta4cat/gb_excess_volume) -**Schema Reference:** [gb_excess_volume](./elements/gb_excess_volume.md) +**Schema Reference:** [gb_excess_volume](./elements/slots/gb_excess_volume.md)

- + 💡 Submit Term Feedback

@@ -1332,12 +1332,12 @@ constitute the grain boundary structure. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:gb_structural_units`](https://w3id.org/nfdi4cat/catcore/gb_structural_units) +**CURIE:** [`coremeta4cat:gb_structural_units`](https://w3id.org/nfdi4cat/coremeta4cat/gb_structural_units) -**Schema Reference:** [gb_structural_units](./elements/gb_structural_units.md) +**Schema Reference:** [gb_structural_units](./elements/slots/gb_structural_units.md)

- + 💡 Submit Term Feedback

@@ -1352,12 +1352,12 @@ at the grain boundary (e.g. segregation energy per defect type). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:charge_defect_segregation`](https://w3id.org/nfdi4cat/catcore/charge_defect_segregation) +**CURIE:** [`coremeta4cat:charge_defect_segregation`](https://w3id.org/nfdi4cat/coremeta4cat/charge_defect_segregation) -**Schema Reference:** [charge_defect_segregation](./elements/charge_defect_segregation.md) +**Schema Reference:** [charge_defect_segregation](./elements/slots/charge_defect_segregation.md)

- + 💡 Submit Term Feedback

@@ -1372,12 +1372,12 @@ Use empirical formula or SMILES for molecular systems. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:material_composition`](https://w3id.org/nfdi4cat/catcore/material_composition) +**CURIE:** [`coremeta4cat:material_composition`](https://w3id.org/nfdi4cat/coremeta4cat/material_composition) -**Schema Reference:** [material_composition](./elements/material_composition.md) +**Schema Reference:** [material_composition](./elements/slots/material_composition.md)

- + 💡 Submit Term Feedback

@@ -1394,16 +1394,16 @@ lattice parameters (e.g. "Fm-3m, a=3.92 Å for Pt"). **CURIE:** [`SIO:001100`](http://semanticscience.org/resource/SIO_001100) -**Schema Reference:** [crystal_structure](./elements/crystal_structure.md) +**Schema Reference:** [crystal_structure](./elements/slots/crystal_structure.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -1415,9 +1415,9 @@ lattice parameters (e.g. "Fm-3m, a=3.92 Å for Pt"). electronic properties of a catalyst relevant to activity descriptors (d-band centre, band gap, Fermi energy). -**CURIE:** [`catcore:ElectronicStructure`](https://w3id.org/nfdi4cat/catcore/ElectronicStructure) +**CURIE:** [`coremeta4cat:ElectronicStructure`](https://w3id.org/nfdi4cat/coremeta4cat/ElectronicStructure) -**Schema Reference:** [ElectronicStructure](./elements/ElectronicStructure.md) +**Schema Reference:** [ElectronicStructure](./elements/classes/ElectronicStructure.md) **Slots** @@ -1425,18 +1425,18 @@ electronic properties of a catalyst relevant to activity descriptors smearing method (Optional, Multivalued) **Description:** Electronic smearing scheme and width used in the SCF calculation -(e.g. Methfessel-Paxton order 1 with σ=0.2 eV, Gaussian with σ=0.05 eV). +(e.g. Methfessel-Paxton order 1 with sigma=0.2 eV, Gaussian with sigma=0.05 eV). **Data Type:** string **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:smearing_method`](https://w3id.org/nfdi4cat/catcore/smearing_method) +**CURIE:** [`coremeta4cat:smearing_method`](https://w3id.org/nfdi4cat/coremeta4cat/smearing_method) -**Schema Reference:** [smearing_method](./elements/smearing_method.md) +**Schema Reference:** [smearing_method](./elements/slots/smearing_method.md)

- + 💡 Submit Term Feedback

@@ -1451,12 +1451,12 @@ electronic properties of a catalyst relevant to activity descriptors **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:spin_polarized`](https://w3id.org/nfdi4cat/catcore/spin_polarized) +**CURIE:** [`coremeta4cat:spin_polarized`](https://w3id.org/nfdi4cat/coremeta4cat/spin_polarized) -**Schema Reference:** [spin_polarized](./elements/spin_polarized.md) +**Schema Reference:** [spin_polarized](./elements/slots/spin_polarized.md)

- + 💡 Submit Term Feedback

@@ -1465,18 +1465,18 @@ electronic properties of a catalyst relevant to activity descriptors band path (Optional, Multivalued) **Description:** High-symmetry k-path through the Brillouin zone used to plot the -band structure (e.g. "Γ-X-M-Γ-R" for cubic, following SeeK-path convention). +band structure (e.g. "Gamma-X-M-Gamma-R" for cubic, following SeeK-path convention). **Data Type:** string **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:band_path`](https://w3id.org/nfdi4cat/catcore/band_path) +**CURIE:** [`coremeta4cat:band_path`](https://w3id.org/nfdi4cat/coremeta4cat/band_path) -**Schema Reference:** [band_path](./elements/band_path.md) +**Schema Reference:** [band_path](./elements/slots/band_path.md)

- + 💡 Submit Term Feedback

@@ -1490,14 +1490,14 @@ band structure (e.g. "Γ-X-M-Γ-R" for cubic, following SeeK-path convention). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:fermi_energy`](https://w3id.org/nfdi4cat/catcore/fermi_energy) +**CURIE:** [`coremeta4cat:fermi_energy`](https://w3id.org/nfdi4cat/coremeta4cat/fermi_energy) -**Schema Reference:** [fermi_energy](./elements/fermi_energy.md) +**Schema Reference:** [fermi_energy](./elements/slots/fermi_energy.md) **Unit:** eV

- + 💡 Submit Term Feedback

@@ -1512,12 +1512,12 @@ Use empirical formula or SMILES for molecular systems. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:material_composition`](https://w3id.org/nfdi4cat/catcore/material_composition) +**CURIE:** [`coremeta4cat:material_composition`](https://w3id.org/nfdi4cat/coremeta4cat/material_composition) -**Schema Reference:** [material_composition](./elements/material_composition.md) +**Schema Reference:** [material_composition](./elements/slots/material_composition.md)

- + 💡 Submit Term Feedback

@@ -1534,10 +1534,10 @@ lattice parameters (e.g. "Fm-3m, a=3.92 Å for Pt"). **CURIE:** [`SIO:001100`](http://semanticscience.org/resource/SIO_001100) -**Schema Reference:** [crystal_structure](./elements/crystal_structure.md) +**Schema Reference:** [crystal_structure](./elements/slots/crystal_structure.md)

- + 💡 Submit Term Feedback

@@ -1551,14 +1551,14 @@ lattice parameters (e.g. "Fm-3m, a=3.92 Å for Pt"). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:energy_cutoff`](https://w3id.org/nfdi4cat/catcore/energy_cutoff) +**CURIE:** [`coremeta4cat:energy_cutoff`](https://w3id.org/nfdi4cat/coremeta4cat/energy_cutoff) -**Schema Reference:** [energy_cutoff](./elements/energy_cutoff.md) +**Schema Reference:** [energy_cutoff](./elements/slots/energy_cutoff.md) **Unit:** eV

- + 💡 Submit Term Feedback

@@ -1573,12 +1573,12 @@ geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/Å). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:convergence_criteria`](https://w3id.org/nfdi4cat/catcore/convergence_criteria) +**CURIE:** [`coremeta4cat:convergence_criteria`](https://w3id.org/nfdi4cat/coremeta4cat/convergence_criteria) -**Schema Reference:** [convergence_criteria](./elements/convergence_criteria.md) +**Schema Reference:** [convergence_criteria](./elements/slots/convergence_criteria.md)

- + 💡 Submit Term Feedback

@@ -1593,18 +1593,18 @@ geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/Å). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:k_point_mesh`](https://w3id.org/nfdi4cat/catcore/k_point_mesh) +**CURIE:** [`coremeta4cat:k_point_mesh`](https://w3id.org/nfdi4cat/coremeta4cat/k_point_mesh) -**Schema Reference:** [k_point_mesh](./elements/k_point_mesh.md) +**Schema Reference:** [k_point_mesh](./elements/slots/k_point_mesh.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -1616,9 +1616,9 @@ geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/Å). polarization, switching barrier, and coercive field. Relevant for ferroelectric-photocatalyst design. -**CURIE:** [`catcore:Ferroelectrics`](https://w3id.org/nfdi4cat/catcore/Ferroelectrics) +**CURIE:** [`coremeta4cat:Ferroelectrics`](https://w3id.org/nfdi4cat/coremeta4cat/Ferroelectrics) -**Schema Reference:** [Ferroelectrics](./elements/Ferroelectrics.md) +**Schema Reference:** [Ferroelectrics](./elements/classes/Ferroelectrics.md) **Slots** @@ -1626,18 +1626,18 @@ ferroelectric-photocatalyst design. polarization direction (Optional, Multivalued) **Description:** Crystallographic direction of the spontaneous electric polarization -(e.g. "[001]" for tetragonal BaTiO₃). +(e.g. "[001]" for tetragonal BaTiO_3). **Data Type:** string **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:polarization_direction`](https://w3id.org/nfdi4cat/catcore/polarization_direction) +**CURIE:** [`coremeta4cat:polarization_direction`](https://w3id.org/nfdi4cat/coremeta4cat/polarization_direction) -**Schema Reference:** [polarization_direction](./elements/polarization_direction.md) +**Schema Reference:** [polarization_direction](./elements/slots/polarization_direction.md)

- + 💡 Submit Term Feedback

@@ -1651,14 +1651,14 @@ ferroelectric-photocatalyst design. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:spontaneous_polarization`](https://w3id.org/nfdi4cat/catcore/spontaneous_polarization) +**CURIE:** [`coremeta4cat:spontaneous_polarization`](https://w3id.org/nfdi4cat/coremeta4cat/spontaneous_polarization) -**Schema Reference:** [spontaneous_polarization](./elements/spontaneous_polarization.md) +**Schema Reference:** [spontaneous_polarization](./elements/slots/spontaneous_polarization.md) **Unit:** uC/cm2

- + 💡 Submit Term Feedback

@@ -1673,12 +1673,12 @@ polarization endpoint in the Berry-phase polarization calculation. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:reference_structure`](https://w3id.org/nfdi4cat/catcore/reference_structure) +**CURIE:** [`coremeta4cat:reference_structure`](https://w3id.org/nfdi4cat/coremeta4cat/reference_structure) -**Schema Reference:** [reference_structure](./elements/reference_structure.md) +**Schema Reference:** [reference_structure](./elements/slots/reference_structure.md)

- + 💡 Submit Term Feedback

@@ -1692,14 +1692,14 @@ polarization endpoint in the Berry-phase polarization calculation. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:switching_barrier`](https://w3id.org/nfdi4cat/catcore/switching_barrier) +**CURIE:** [`coremeta4cat:switching_barrier`](https://w3id.org/nfdi4cat/coremeta4cat/switching_barrier) -**Schema Reference:** [switching_barrier](./elements/switching_barrier.md) +**Schema Reference:** [switching_barrier](./elements/slots/switching_barrier.md) **Unit:** eV

- + 💡 Submit Term Feedback

@@ -1713,14 +1713,14 @@ polarization endpoint in the Berry-phase polarization calculation. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:coercive_field`](https://w3id.org/nfdi4cat/catcore/coercive_field) +**CURIE:** [`coremeta4cat:coercive_field`](https://w3id.org/nfdi4cat/coremeta4cat/coercive_field) -**Schema Reference:** [coercive_field](./elements/coercive_field.md) +**Schema Reference:** [coercive_field](./elements/slots/coercive_field.md) **Unit:** kV/cm

- + 💡 Submit Term Feedback

@@ -1734,12 +1734,12 @@ polarization endpoint in the Berry-phase polarization calculation. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:temperature_dependence`](https://w3id.org/nfdi4cat/catcore/temperature_dependence) +**CURIE:** [`coremeta4cat:temperature_dependence`](https://w3id.org/nfdi4cat/coremeta4cat/temperature_dependence) -**Schema Reference:** [temperature_dependence](./elements/temperature_dependence.md) +**Schema Reference:** [temperature_dependence](./elements/slots/temperature_dependence.md)

- + 💡 Submit Term Feedback

@@ -1754,12 +1754,12 @@ Use empirical formula or SMILES for molecular systems. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:material_composition`](https://w3id.org/nfdi4cat/catcore/material_composition) +**CURIE:** [`coremeta4cat:material_composition`](https://w3id.org/nfdi4cat/coremeta4cat/material_composition) -**Schema Reference:** [material_composition](./elements/material_composition.md) +**Schema Reference:** [material_composition](./elements/slots/material_composition.md)

- + 💡 Submit Term Feedback

@@ -1776,16 +1776,16 @@ lattice parameters (e.g. "Fm-3m, a=3.92 Å for Pt"). **CURIE:** [`SIO:001100`](http://semanticscience.org/resource/SIO_001100) -**Schema Reference:** [crystal_structure](./elements/crystal_structure.md) +**Schema Reference:** [crystal_structure](./elements/slots/crystal_structure.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -1797,9 +1797,9 @@ lattice parameters (e.g. "Fm-3m, a=3.92 Å for Pt"). many-body (GW) or excitonic corrections. Critical for photocatalyst and semiconductor catalyst screening. -**CURIE:** [`catcore:BandGap`](https://w3id.org/nfdi4cat/catcore/BandGap) +**CURIE:** [`coremeta4cat:BandGap`](https://w3id.org/nfdi4cat/coremeta4cat/BandGap) -**Schema Reference:** [BandGap](./elements/BandGap.md) +**Schema Reference:** [BandGap](./elements/classes/BandGap.md) **Slots** @@ -1813,12 +1813,12 @@ calculated band gap. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0005056`](https://w3id.org/nfdi4cat/voc4cat_0005056) +**CURIE:** [`VOC4CAT:0005056`](https://w3id.org/nfdi4cat/voc4cat_0005056) -**Schema Reference:** [material_sample](./elements/material_sample.md) +**Schema Reference:** [material_sample](./elements/slots/material_sample.md)

- + 💡 Submit Term Feedback

@@ -1833,12 +1833,12 @@ surface slab, defect supercell). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:structure_model`](https://w3id.org/nfdi4cat/catcore/structure_model) +**CURIE:** [`coremeta4cat:structure_model`](https://w3id.org/nfdi4cat/coremeta4cat/structure_model) -**Schema Reference:** [structure_model](./elements/structure_model.md) +**Schema Reference:** [structure_model](./elements/slots/structure_model.md)

- + 💡 Submit Term Feedback

@@ -1852,14 +1852,14 @@ surface slab, defect supercell). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:smearing_broadening`](https://w3id.org/nfdi4cat/catcore/smearing_broadening) +**CURIE:** [`coremeta4cat:smearing_broadening`](https://w3id.org/nfdi4cat/coremeta4cat/smearing_broadening) -**Schema Reference:** [smearing_broadening](./elements/smearing_broadening.md) +**Schema Reference:** [smearing_broadening](./elements/slots/smearing_broadening.md) **Unit:** eV

- + 💡 Submit Term Feedback

@@ -1874,12 +1874,12 @@ surface slab, defect supercell). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:direct_indirect`](https://w3id.org/nfdi4cat/catcore/direct_indirect) +**CURIE:** [`coremeta4cat:direct_indirect`](https://w3id.org/nfdi4cat/coremeta4cat/direct_indirect) -**Schema Reference:** [direct_indirect](./elements/direct_indirect.md) +**Schema Reference:** [direct_indirect](./elements/slots/direct_indirect.md)

- + 💡 Submit Term Feedback

@@ -1893,14 +1893,14 @@ surface slab, defect supercell). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:experimental_reference`](https://w3id.org/nfdi4cat/catcore/experimental_reference) +**CURIE:** [`coremeta4cat:experimental_reference`](https://w3id.org/nfdi4cat/coremeta4cat/experimental_reference) -**Schema Reference:** [experimental_reference](./elements/experimental_reference.md) +**Schema Reference:** [experimental_reference](./elements/slots/experimental_reference.md) **Unit:** eV

- + 💡 Submit Term Feedback

@@ -1915,12 +1915,12 @@ was applied to correct the DFT band gap underestimation. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:gw_hybrid_correction`](https://w3id.org/nfdi4cat/catcore/gw_hybrid_correction) +**CURIE:** [`coremeta4cat:gw_hybrid_correction`](https://w3id.org/nfdi4cat/coremeta4cat/gw_hybrid_correction) -**Schema Reference:** [gw_hybrid_correction](./elements/gw_hybrid_correction.md) +**Schema Reference:** [gw_hybrid_correction](./elements/slots/gw_hybrid_correction.md)

- + 💡 Submit Term Feedback

@@ -1935,14 +1935,14 @@ optical band gap. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:excitonic_correction`](https://w3id.org/nfdi4cat/catcore/excitonic_correction) +**CURIE:** [`coremeta4cat:excitonic_correction`](https://w3id.org/nfdi4cat/coremeta4cat/excitonic_correction) -**Schema Reference:** [excitonic_correction](./elements/excitonic_correction.md) +**Schema Reference:** [excitonic_correction](./elements/slots/excitonic_correction.md) **Unit:** eV

- + 💡 Submit Term Feedback

@@ -1957,12 +1957,12 @@ Use empirical formula or SMILES for molecular systems. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:material_composition`](https://w3id.org/nfdi4cat/catcore/material_composition) +**CURIE:** [`coremeta4cat:material_composition`](https://w3id.org/nfdi4cat/coremeta4cat/material_composition) -**Schema Reference:** [material_composition](./elements/material_composition.md) +**Schema Reference:** [material_composition](./elements/slots/material_composition.md)

- + 💡 Submit Term Feedback

@@ -1979,10 +1979,10 @@ lattice parameters (e.g. "Fm-3m, a=3.92 Å for Pt"). **CURIE:** [`SIO:001100`](http://semanticscience.org/resource/SIO_001100) -**Schema Reference:** [crystal_structure](./elements/crystal_structure.md) +**Schema Reference:** [crystal_structure](./elements/slots/crystal_structure.md)

- + 💡 Submit Term Feedback

@@ -1996,14 +1996,14 @@ lattice parameters (e.g. "Fm-3m, a=3.92 Å for Pt"). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:energy_cutoff`](https://w3id.org/nfdi4cat/catcore/energy_cutoff) +**CURIE:** [`coremeta4cat:energy_cutoff`](https://w3id.org/nfdi4cat/coremeta4cat/energy_cutoff) -**Schema Reference:** [energy_cutoff](./elements/energy_cutoff.md) +**Schema Reference:** [energy_cutoff](./elements/slots/energy_cutoff.md) **Unit:** eV

- + 💡 Submit Term Feedback

@@ -2018,12 +2018,12 @@ geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/Å). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:convergence_criteria`](https://w3id.org/nfdi4cat/catcore/convergence_criteria) +**CURIE:** [`coremeta4cat:convergence_criteria`](https://w3id.org/nfdi4cat/coremeta4cat/convergence_criteria) -**Schema Reference:** [convergence_criteria](./elements/convergence_criteria.md) +**Schema Reference:** [convergence_criteria](./elements/slots/convergence_criteria.md)

- + 💡 Submit Term Feedback

@@ -2038,38 +2038,38 @@ geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/Å). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:k_point_mesh`](https://w3id.org/nfdi4cat/catcore/k_point_mesh) +**CURIE:** [`coremeta4cat:k_point_mesh`](https://w3id.org/nfdi4cat/coremeta4cat/k_point_mesh) -**Schema Reference:** [k_point_mesh](./elements/k_point_mesh.md) +**Schema Reference:** [k_point_mesh](./elements/slots/k_point_mesh.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

-realized plan (Required, Multivalued) +realized plan (Mandatory, Multivalued) **Description:** The SimulationMethod (protocol) realized in this Simulation. **Data Type:** SimulationMethod -**Cardinality:** Required, Multivalued +**Cardinality:** Mandatory, Multivalued -**Schema Reference:** [realized_plan](./elements/realized_plan.md) +**Schema Reference:** [realized_plan](./elements/slots/realized_plan.md) **Data Type Class Details:** @@ -2084,10 +2084,10 @@ Linked from Simulation via realized_plan. **CURIE:** [`OBI:0000272`](http://purl.obolibrary.org/obo/OBI_0000272) -**Schema Reference:** [SimulationMethod](./elements/SimulationMethod.md) +**Schema Reference:** [SimulationMethod](./elements/classes/SimulationMethod.md)

- + 💡 Submit Term Feedback

@@ -2101,9 +2101,9 @@ Linked from Simulation via realized_plan. the electronic structure of atoms, molecules, and periodic solids. The most widely used ab initio method in computational catalysis. -**CURIE:** [`catcore:DFT`](https://w3id.org/nfdi4cat/catcore/DFT) +**CURIE:** [`coremeta4cat:DFT`](https://w3id.org/nfdi4cat/coremeta4cat/DFT) -**Schema Reference:** [DFT](./elements/DFT.md) +**Schema Reference:** [DFT](./elements/classes/DFT.md) **Slots** @@ -2117,12 +2117,12 @@ HSE06). The choice of functional directly affects accuracy. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:exchange_correlation_functional`](https://w3id.org/nfdi4cat/catcore/exchange_correlation_functional) +**CURIE:** [`coremeta4cat:exchange_correlation_functional`](https://w3id.org/nfdi4cat/coremeta4cat/exchange_correlation_functional) -**Schema Reference:** [exchange_correlation_functional](./elements/exchange_correlation_functional.md) +**Schema Reference:** [exchange_correlation_functional](./elements/slots/exchange_correlation_functional.md)

- + 💡 Submit Term Feedback

@@ -2136,14 +2136,14 @@ HSE06). The choice of functional directly affects accuracy. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:energy_cutoff`](https://w3id.org/nfdi4cat/catcore/energy_cutoff) +**CURIE:** [`coremeta4cat:energy_cutoff`](https://w3id.org/nfdi4cat/coremeta4cat/energy_cutoff) -**Schema Reference:** [energy_cutoff](./elements/energy_cutoff.md) +**Schema Reference:** [energy_cutoff](./elements/slots/energy_cutoff.md) **Unit:** eV

- + 💡 Submit Term Feedback

@@ -2158,12 +2158,12 @@ geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/Å). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:convergence_criteria`](https://w3id.org/nfdi4cat/catcore/convergence_criteria) +**CURIE:** [`coremeta4cat:convergence_criteria`](https://w3id.org/nfdi4cat/coremeta4cat/convergence_criteria) -**Schema Reference:** [convergence_criteria](./elements/convergence_criteria.md) +**Schema Reference:** [convergence_criteria](./elements/slots/convergence_criteria.md)

- + 💡 Submit Term Feedback

@@ -2178,12 +2178,12 @@ U value (e.g. "Fe d: U=4.0 eV, J=0.0 eV"). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:dft_u_parameters`](https://w3id.org/nfdi4cat/catcore/dft_u_parameters) +**CURIE:** [`coremeta4cat:dft_u_parameters`](https://w3id.org/nfdi4cat/coremeta4cat/dft_u_parameters) -**Schema Reference:** [dft_u_parameters](./elements/dft_u_parameters.md) +**Schema Reference:** [dft_u_parameters](./elements/slots/dft_u_parameters.md)

- + 💡 Submit Term Feedback

@@ -2198,12 +2198,12 @@ calculation. Set to true for systems containing magnetic elements. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:spin_polarization`](https://w3id.org/nfdi4cat/catcore/spin_polarization) +**CURIE:** [`coremeta4cat:spin_polarization`](https://w3id.org/nfdi4cat/coremeta4cat/spin_polarization) -**Schema Reference:** [spin_polarization](./elements/spin_polarization.md) +**Schema Reference:** [spin_polarization](./elements/slots/spin_polarization.md)

- + 💡 Submit Term Feedback

@@ -2217,20 +2217,20 @@ calculation. Set to true for systems containing magnetic elements. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:total_energy_per_atom`](https://w3id.org/nfdi4cat/catcore/total_energy_per_atom) +**CURIE:** [`coremeta4cat:total_energy_per_atom`](https://w3id.org/nfdi4cat/coremeta4cat/total_energy_per_atom) -**Schema Reference:** [total_energy_per_atom](./elements/total_energy_per_atom.md) +**Schema Reference:** [total_energy_per_atom](./elements/slots/total_energy_per_atom.md) **Unit:** eV

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -2244,7 +2244,7 @@ Used to study diffusion, reaction kinetics, and thermal properties. **CURIE:** [`NCIT:C18097`](http://purl.obolibrary.org/obo/NCIT_C18097) -**Schema Reference:** [MolecularDynamics](./elements/MolecularDynamics.md) +**Schema Reference:** [MolecularDynamics](./elements/classes/MolecularDynamics.md) **Slots** @@ -2258,12 +2258,12 @@ EAM). Include parametrisation source or reference. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:force_field`](https://w3id.org/nfdi4cat/catcore/force_field) +**CURIE:** [`coremeta4cat:force_field`](https://w3id.org/nfdi4cat/coremeta4cat/force_field) -**Schema Reference:** [force_field](./elements/force_field.md) +**Schema Reference:** [force_field](./elements/slots/force_field.md)

- + 💡 Submit Term Feedback

@@ -2279,12 +2279,12 @@ EAM). Include parametrisation source or reference. **CURIE:** [`APOLLO_SV:00000012`](http://purl.obolibrary.org/obo/APOLLO_SV_00000012) -**Schema Reference:** [simulation_timestep](./elements/simulation_timestep.md) +**Schema Reference:** [simulation_timestep](./elements/slots/simulation_timestep.md) **Unit:** fs

- + 💡 Submit Term Feedback

@@ -2298,14 +2298,14 @@ EAM). Include parametrisation source or reference. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:simulation_time`](https://w3id.org/nfdi4cat/catcore/simulation_time) +**CURIE:** [`coremeta4cat:simulation_time`](https://w3id.org/nfdi4cat/coremeta4cat/simulation_time) -**Schema Reference:** [simulation_time](./elements/simulation_time.md) +**Schema Reference:** [simulation_time](./elements/slots/simulation_time.md) **Unit:** ps

- + 💡 Submit Term Feedback

@@ -2320,12 +2320,12 @@ thermodynamic quantities are conserved. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:ensemble_type`](https://w3id.org/nfdi4cat/catcore/ensemble_type) +**CURIE:** [`coremeta4cat:ensemble_type`](https://w3id.org/nfdi4cat/coremeta4cat/ensemble_type) -**Schema Reference:** [ensemble_type](./elements/ensemble_type.md) +**Schema Reference:** [ensemble_type](./elements/slots/ensemble_type.md)

- + 💡 Submit Term Feedback

@@ -2339,18 +2339,18 @@ thermodynamic quantities are conserved. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:number_of_atoms`](https://w3id.org/nfdi4cat/catcore/number_of_atoms) +**CURIE:** [`coremeta4cat:number_of_atoms`](https://w3id.org/nfdi4cat/coremeta4cat/number_of_atoms) -**Schema Reference:** [number_of_atoms](./elements/number_of_atoms.md) +**Schema Reference:** [number_of_atoms](./elements/slots/number_of_atoms.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -2362,9 +2362,9 @@ thermodynamic quantities are conserved. elementary reaction steps and their rate constants to predict catalytic activity and selectivity under reaction conditions. -**CURIE:** [`catcore:Microkinetics`](https://w3id.org/nfdi4cat/catcore/Microkinetics) +**CURIE:** [`coremeta4cat:Microkinetics`](https://w3id.org/nfdi4cat/coremeta4cat/Microkinetics) -**Schema Reference:** [Microkinetics](./elements/Microkinetics.md) +**Schema Reference:** [Microkinetics](./elements/classes/Microkinetics.md) **Slots** @@ -2380,10 +2380,10 @@ activation energy) for each elementary step in the reaction network. **CURIE:** [`NCIT:C94967`](http://purl.obolibrary.org/obo/NCIT_C94967) -**Schema Reference:** [rate_constants](./elements/rate_constants.md) +**Schema Reference:** [rate_constants](./elements/slots/rate_constants.md)

- + 💡 Submit Term Feedback

@@ -2398,12 +2398,12 @@ stiff ODE solver, steady-state Newton method). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:solver_type`](https://w3id.org/nfdi4cat/catcore/solver_type) +**CURIE:** [`coremeta4cat:solver_type`](https://w3id.org/nfdi4cat/coremeta4cat/solver_type) -**Schema Reference:** [solver_type](./elements/solver_type.md) +**Schema Reference:** [solver_type](./elements/slots/solver_type.md)

- + 💡 Submit Term Feedback

@@ -2419,12 +2419,12 @@ stiff ODE solver, steady-state Newton method). **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2438,14 +2438,14 @@ stiff ODE solver, steady-state Newton method). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:pressure`](https://w3id.org/nfdi4cat/catcore/pressure) +**CURIE:** [`coremeta4cat:pressure`](https://w3id.org/nfdi4cat/coremeta4cat/pressure) -**Schema Reference:** [pressure](./elements/pressure.md) +**Schema Reference:** [pressure](./elements/slots/pressure.md) **Unit:** bar

- + 💡 Submit Term Feedback

@@ -2459,12 +2459,12 @@ stiff ODE solver, steady-state Newton method). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:surface_coverage`](https://w3id.org/nfdi4cat/catcore/surface_coverage) +**CURIE:** [`coremeta4cat:surface_coverage`](https://w3id.org/nfdi4cat/coremeta4cat/surface_coverage) -**Schema Reference:** [surface_coverage](./elements/surface_coverage.md) +**Schema Reference:** [surface_coverage](./elements/slots/surface_coverage.md)

- + 💡 Submit Term Feedback

@@ -2478,20 +2478,20 @@ stiff ODE solver, steady-state Newton method). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:activation_energy`](https://w3id.org/nfdi4cat/catcore/activation_energy) +**CURIE:** [`coremeta4cat:activation_energy`](https://w3id.org/nfdi4cat/coremeta4cat/activation_energy) -**Schema Reference:** [activation_energy](./elements/activation_energy.md) +**Schema Reference:** [activation_energy](./elements/slots/activation_energy.md) **Unit:** eV

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -2504,9 +2504,9 @@ space using random moves accepted or rejected according to a statistical criterion (e.g. Metropolis). Used for adsorption isotherms, phase diagrams, and lattice-based kinetics. -**CURIE:** [`catcore:MonteCarlo`](https://w3id.org/nfdi4cat/catcore/MonteCarlo) +**CURIE:** [`coremeta4cat:MonteCarlo`](https://w3id.org/nfdi4cat/coremeta4cat/MonteCarlo) -**Schema Reference:** [MonteCarlo](./elements/MonteCarlo.md) +**Schema Reference:** [MonteCarlo](./elements/classes/MonteCarlo.md) **Slots** @@ -2519,12 +2519,12 @@ and lattice-based kinetics. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:interaction_potential`](https://w3id.org/nfdi4cat/catcore/interaction_potential) +**CURIE:** [`coremeta4cat:interaction_potential`](https://w3id.org/nfdi4cat/coremeta4cat/interaction_potential) -**Schema Reference:** [interaction_potential](./elements/interaction_potential.md) +**Schema Reference:** [interaction_potential](./elements/slots/interaction_potential.md)

- + 💡 Submit Term Feedback

@@ -2538,12 +2538,12 @@ and lattice-based kinetics. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:number_of_steps`](https://w3id.org/nfdi4cat/catcore/number_of_steps) +**CURIE:** [`coremeta4cat:number_of_steps`](https://w3id.org/nfdi4cat/coremeta4cat/number_of_steps) -**Schema Reference:** [number_of_steps](./elements/number_of_steps.md) +**Schema Reference:** [number_of_steps](./elements/slots/number_of_steps.md)

- + 💡 Submit Term Feedback

@@ -2559,12 +2559,12 @@ and lattice-based kinetics. **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2579,12 +2579,12 @@ and lattice-based kinetics. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:lattice_size_type`](https://w3id.org/nfdi4cat/catcore/lattice_size_type) +**CURIE:** [`coremeta4cat:lattice_size_type`](https://w3id.org/nfdi4cat/coremeta4cat/lattice_size_type) -**Schema Reference:** [lattice_size_type](./elements/lattice_size_type.md) +**Schema Reference:** [lattice_size_type](./elements/slots/lattice_size_type.md)

- + 💡 Submit Term Feedback

@@ -2599,12 +2599,12 @@ Kawasaki, heat-bath algorithm). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:acceptance_criteria`](https://w3id.org/nfdi4cat/catcore/acceptance_criteria) +**CURIE:** [`coremeta4cat:acceptance_criteria`](https://w3id.org/nfdi4cat/coremeta4cat/acceptance_criteria) -**Schema Reference:** [acceptance_criteria](./elements/acceptance_criteria.md) +**Schema Reference:** [acceptance_criteria](./elements/slots/acceptance_criteria.md)

- + 💡 Submit Term Feedback

@@ -2618,12 +2618,12 @@ Kawasaki, heat-bath algorithm). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:equilibration_steps`](https://w3id.org/nfdi4cat/catcore/equilibration_steps) +**CURIE:** [`coremeta4cat:equilibration_steps`](https://w3id.org/nfdi4cat/coremeta4cat/equilibration_steps) -**Schema Reference:** [equilibration_steps](./elements/equilibration_steps.md) +**Schema Reference:** [equilibration_steps](./elements/slots/equilibration_steps.md)

- + 💡 Submit Term Feedback

@@ -2637,24 +2637,24 @@ Kawasaki, heat-bath algorithm). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:sampling_interval`](https://w3id.org/nfdi4cat/catcore/sampling_interval) +**CURIE:** [`coremeta4cat:sampling_interval`](https://w3id.org/nfdi4cat/coremeta4cat/sampling_interval) -**Schema Reference:** [sampling_interval](./elements/sampling_interval.md) +**Schema Reference:** [sampling_interval](./elements/slots/sampling_interval.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

diff --git a/docs/synthesis.md b/docs/synthesis.md index dfbf4821a..9abc0c9b2 100644 --- a/docs/synthesis.md +++ b/docs/synthesis.md @@ -34,40 +34,40 @@ Metadata are organized hierarchically based on the selected synthesis method. Me ## Slots
-nominal composition (Required, Multivalued) +nominal composition (Mandatory, Multivalued) **Description:** Nominal elemental or chemical composition of the catalyst (e.g. 5wt% Pt/Al2O3). **Data Type:** string -**Cardinality:** Required, Multivalued +**Cardinality:** Mandatory, Multivalued -**CURIE:** [`catcore:nominal_composition`](https://w3id.org/nfdi4cat/catcore/nominal_composition) +**CURIE:** [`coremeta4cat:nominal_composition`](https://w3id.org/nfdi4cat/coremeta4cat/nominal_composition) -**Schema Reference:** [nominal_composition](./elements/nominal_composition.md) +**Schema Reference:** [nominal_composition](./elements/slots/nominal_composition.md)

- + 💡 Submit Term Feedback

-catalyst measured properties (Required, Multivalued) +catalyst measured properties (Mandatory, Multivalued) **Description:** Key measured properties of the resulting catalyst (e.g. BET surface area, sieve fraction, molar ratio). **Data Type:** string -**Cardinality:** Required, Multivalued +**Cardinality:** Mandatory, Multivalued -**CURIE:** [`catcore:catalyst_measured_properties`](https://w3id.org/nfdi4cat/catcore/catalyst_measured_properties) +**CURIE:** [`coremeta4cat:catalyst_measured_properties`](https://w3id.org/nfdi4cat/coremeta4cat/catalyst_measured_properties) -**Schema Reference:** [catalyst_measured_properties](./elements/catalyst_measured_properties.md) +**Schema Reference:** [catalyst_measured_properties](./elements/slots/catalyst_measured_properties.md)

- + 💡 Submit Term Feedback

@@ -81,12 +81,12 @@ Metadata are organized hierarchically based on the selected synthesis method. Me **Cardinality:** Recommended, Multivalued -**CURIE:** [`catcore:storage_conditions`](https://w3id.org/nfdi4cat/catcore/storage_conditions) +**CURIE:** [`coremeta4cat:storage_conditions`](https://w3id.org/nfdi4cat/coremeta4cat/storage_conditions) -**Schema Reference:** [storage_conditions](./elements/storage_conditions.md) +**Schema Reference:** [storage_conditions](./elements/slots/storage_conditions.md)

- + 💡 Submit Term Feedback

@@ -100,12 +100,12 @@ Metadata are organized hierarchically based on the selected synthesis method. Me **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:support`](https://w3id.org/nfdi4cat/catcore/support) +**CURIE:** [`coremeta4cat:support`](https://w3id.org/nfdi4cat/coremeta4cat/support) -**Schema Reference:** [support](./elements/support.md) +**Schema Reference:** [support](./elements/slots/support.md)

- + 💡 Submit Term Feedback

@@ -119,12 +119,12 @@ Metadata are organized hierarchically based on the selected synthesis method. Me **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0007246`](https://w3id.org/nfdi4cat/voc4cat_0007246) +**CURIE:** [`VOC4CAT:0007246`](https://w3id.org/nfdi4cat/voc4cat_0007246) -**Schema Reference:** [solvent](./elements/solvent.md) +**Schema Reference:** [solvent](./elements/slots/solvent.md)

- + 💡 Submit Term Feedback

@@ -138,26 +138,120 @@ Metadata are organized hierarchically based on the selected synthesis method. Me **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000122`](https://w3id.org/nfdi4cat/voc4cat_0000122) +**CURIE:** [`VOC4CAT:0000122`](https://w3id.org/nfdi4cat/voc4cat_0000122) -**Schema Reference:** [sample_pretreatment](./elements/sample_pretreatment.md) +**Schema Reference:** [sample_pretreatment](./elements/slots/sample_pretreatment.md)

- + 💡 Submit Term Feedback

-realized plan (Required) +had input entity (Mandatory, Multivalued) + +**Description:** The Precursor(s) consumed during this Synthesis. + +**Data Type:** Precursor + +**Cardinality:** Mandatory, Multivalued + +**Schema Reference:** [had_input_entity](./elements/slots/had_input_entity.md) + +**Data Type Class Details:** + +
+Precursor + +**Description:** A MaterialSample that serves as input material in a catalyst Synthesis. +Precursors are consumed or transformed during the preparation process. + +**CURIE:** [`CHEBI:52717`](http://purl.obolibrary.org/obo/CHEBI_52717) + +**Schema Reference:** [Precursor](./elements/classes/Precursor.md) + +**Slots** + +
+precursor quantity (Mandatory, Multivalued) + +**Description:** Quantity of precursor used in synthesis. + +**Data Type:** float + +**Cardinality:** Mandatory, Multivalued + +**CURIE:** [`coremeta4cat:precursor_quantity`](https://w3id.org/nfdi4cat/coremeta4cat/precursor_quantity) + +**Schema Reference:** [precursor_quantity](./elements/slots/precursor_quantity.md) + +**Unit:** g + +

+ + 💡 Submit Term Feedback + +

+ +

+ + 💡 Submit Term Feedback + +

+ +

+ + 💡 Submit Term Feedback + +

+ +
+had output entity (Recommended, Multivalued) + +**Description:** The CatalystSample produced by this Synthesis. + +**Data Type:** CatalystSample + +**Cardinality:** Recommended, Multivalued + +**Schema Reference:** [had_output_entity](./elements/slots/had_output_entity.md) + +**Data Type Class Details:** + +
+CatalystSample + +**Description:** A MaterialSample that is the product of a catalyst Synthesis. +The specific type of catalyst (e.g. heterogeneous, supported metal) +is expressed via rdf_type using a voc4cat term. + +**CURIE:** [`OBI:0000747`](http://purl.obolibrary.org/obo/OBI_0000747) + +**Schema Reference:** [CatalystSample](./elements/classes/CatalystSample.md) + +

+ + 💡 Submit Term Feedback + +

+ +

+ + 💡 Submit Term Feedback + +

+ +
+realized plan (Mandatory) **Description:** The PreparationMethod (protocol) realized in this Synthesis. **Data Type:** PreparationMethod -**Cardinality:** Required +**Cardinality:** Mandatory -**Schema Reference:** [realized_plan](./elements/realized_plan.md) +**Schema Reference:** [realized_plan](./elements/slots/realized_plan.md) **Data Type Class Details:** @@ -172,14 +266,14 @@ method-specific parameters. Linked from Synthesis via realized_plan. The specific preparation method type should additionally be expressed via rdf_type on the Synthesis activity using a voc4cat term -(e.g. voc4cat:0007016 for preparation method). +(e.g. VOC4CAT:0007016 for preparation method). **CURIE:** [`OBI:0000272`](http://purl.obolibrary.org/obo/OBI_0000272) -**Schema Reference:** [PreparationMethod](./elements/PreparationMethod.md) +**Schema Reference:** [PreparationMethod](./elements/classes/PreparationMethod.md)

- + 💡 Submit Term Feedback

@@ -192,9 +286,9 @@ via rdf_type on the Synthesis activity using a voc4cat term **Description:** Catalyst preparation by impregnation: a solution of the active phase precursor is brought into contact with the support material. -**CURIE:** [`catcore:Impregnation`](https://w3id.org/nfdi4cat/catcore/Impregnation) +**CURIE:** [`coremeta4cat:Impregnation`](https://w3id.org/nfdi4cat/coremeta4cat/Impregnation) -**Schema Reference:** [Impregnation](./elements/Impregnation.md) +**Schema Reference:** [Impregnation](./elements/classes/Impregnation.md) **Slots** @@ -207,12 +301,12 @@ precursor is brought into contact with the support material. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:impregnation_type`](https://w3id.org/nfdi4cat/catcore/impregnation_type) +**CURIE:** [`coremeta4cat:impregnation_type`](https://w3id.org/nfdi4cat/coremeta4cat/impregnation_type) -**Schema Reference:** [impregnation_type](./elements/impregnation_type.md) +**Schema Reference:** [impregnation_type](./elements/slots/impregnation_type.md)

- + 💡 Submit Term Feedback

@@ -226,14 +320,14 @@ precursor is brought into contact with the support material. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:impregnation_duration`](https://w3id.org/nfdi4cat/catcore/impregnation_duration) +**CURIE:** [`coremeta4cat:impregnation_duration`](https://w3id.org/nfdi4cat/coremeta4cat/impregnation_duration) -**Schema Reference:** [impregnation_duration](./elements/impregnation_duration.md) +**Schema Reference:** [impregnation_duration](./elements/slots/impregnation_duration.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -247,14 +341,14 @@ precursor is brought into contact with the support material. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:impregnation_temperature`](https://w3id.org/nfdi4cat/catcore/impregnation_temperature) +**CURIE:** [`coremeta4cat:impregnation_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/impregnation_temperature) -**Schema Reference:** [impregnation_temperature](./elements/impregnation_temperature.md) +**Schema Reference:** [impregnation_temperature](./elements/slots/impregnation_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -268,12 +362,12 @@ precursor is brought into contact with the support material. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_device`](https://w3id.org/nfdi4cat/catcore/drying_device) +**CURIE:** [`coremeta4cat:drying_device`](https://w3id.org/nfdi4cat/coremeta4cat/drying_device) -**Schema Reference:** [drying_device](./elements/drying_device.md) +**Schema Reference:** [drying_device](./elements/slots/drying_device.md)

- + 💡 Submit Term Feedback

@@ -287,14 +381,14 @@ precursor is brought into contact with the support material. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_temperature`](https://w3id.org/nfdi4cat/catcore/drying_temperature) +**CURIE:** [`coremeta4cat:drying_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/drying_temperature) -**Schema Reference:** [drying_temperature](./elements/drying_temperature.md) +**Schema Reference:** [drying_temperature](./elements/slots/drying_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -308,14 +402,14 @@ precursor is brought into contact with the support material. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_time`](https://w3id.org/nfdi4cat/catcore/drying_time) +**CURIE:** [`coremeta4cat:drying_time`](https://w3id.org/nfdi4cat/coremeta4cat/drying_time) -**Schema Reference:** [drying_time](./elements/drying_time.md) +**Schema Reference:** [drying_time](./elements/slots/drying_time.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -329,12 +423,12 @@ precursor is brought into contact with the support material. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_atmosphere`](https://w3id.org/nfdi4cat/catcore/drying_atmosphere) +**CURIE:** [`coremeta4cat:drying_atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/drying_atmosphere) -**Schema Reference:** [drying_atmosphere](./elements/drying_atmosphere.md) +**Schema Reference:** [drying_atmosphere](./elements/slots/drying_atmosphere.md)

- + 💡 Submit Term Feedback

@@ -348,14 +442,14 @@ precursor is brought into contact with the support material. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000057`](https://w3id.org/nfdi4cat/voc4cat_0000057) +**CURIE:** [`VOC4CAT:0000057`](https://w3id.org/nfdi4cat/voc4cat_0000057) -**Schema Reference:** [calcination_initial_temperature](./elements/calcination_initial_temperature.md) +**Schema Reference:** [calcination_initial_temperature](./elements/slots/calcination_initial_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -369,14 +463,14 @@ precursor is brought into contact with the support material. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000058`](https://w3id.org/nfdi4cat/voc4cat_0000058) +**CURIE:** [`VOC4CAT:0000058`](https://w3id.org/nfdi4cat/voc4cat_0000058) -**Schema Reference:** [calcination_final_temperature](./elements/calcination_final_temperature.md) +**Schema Reference:** [calcination_final_temperature](./elements/slots/calcination_final_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -390,14 +484,14 @@ precursor is brought into contact with the support material. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000060`](https://w3id.org/nfdi4cat/voc4cat_0000060) +**CURIE:** [`VOC4CAT:0000060`](https://w3id.org/nfdi4cat/voc4cat_0000060) -**Schema Reference:** [calcination_dwelling_time](./elements/calcination_dwelling_time.md) +**Schema Reference:** [calcination_dwelling_time](./elements/slots/calcination_dwelling_time.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -411,12 +505,12 @@ precursor is brought into contact with the support material. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:number_of_cycles`](https://w3id.org/nfdi4cat/catcore/number_of_cycles) +**CURIE:** [`coremeta4cat:number_of_cycles`](https://w3id.org/nfdi4cat/coremeta4cat/number_of_cycles) -**Schema Reference:** [number_of_cycles](./elements/number_of_cycles.md) +**Schema Reference:** [number_of_cycles](./elements/slots/number_of_cycles.md)

- + 💡 Submit Term Feedback

@@ -430,12 +524,12 @@ precursor is brought into contact with the support material. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000055`](https://w3id.org/nfdi4cat/voc4cat_0000055) +**CURIE:** [`VOC4CAT:0000055`](https://w3id.org/nfdi4cat/voc4cat_0000055) -**Schema Reference:** [calcination_gaseous_environment](./elements/calcination_gaseous_environment.md) +**Schema Reference:** [calcination_gaseous_environment](./elements/slots/calcination_gaseous_environment.md)

- + 💡 Submit Term Feedback

@@ -449,14 +543,14 @@ precursor is brought into contact with the support material. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000059`](https://w3id.org/nfdi4cat/voc4cat_0000059) +**CURIE:** [`VOC4CAT:0000059`](https://w3id.org/nfdi4cat/voc4cat_0000059) -**Schema Reference:** [calcination_heating_rate](./elements/calcination_heating_rate.md) +**Schema Reference:** [calcination_heating_rate](./elements/slots/calcination_heating_rate.md) **Unit:** Cel/min

- + 💡 Submit Term Feedback

@@ -470,20 +564,20 @@ precursor is brought into contact with the support material. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000056`](https://w3id.org/nfdi4cat/voc4cat_0000056) +**CURIE:** [`VOC4CAT:0000056`](https://w3id.org/nfdi4cat/voc4cat_0000056) -**Schema Reference:** [calcination_gas_flow_rate](./elements/calcination_gas_flow_rate.md) +**Schema Reference:** [calcination_gas_flow_rate](./elements/slots/calcination_gas_flow_rate.md) **Unit:** mL/min

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -494,9 +588,9 @@ precursor is brought into contact with the support material. **Description:** Catalyst preparation by co-precipitation: precursor salts are simultaneously precipitated from solution by a precipitating agent. -**CURIE:** [`catcore:CoPrecipitation`](https://w3id.org/nfdi4cat/catcore/CoPrecipitation) +**CURIE:** [`coremeta4cat:CoPrecipitation`](https://w3id.org/nfdi4cat/coremeta4cat/CoPrecipitation) -**Schema Reference:** [CoPrecipitation](./elements/CoPrecipitation.md) +**Schema Reference:** [CoPrecipitation](./elements/classes/CoPrecipitation.md) **Slots** @@ -509,12 +603,12 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:precipitating_agent`](https://w3id.org/nfdi4cat/catcore/precipitating_agent) +**CURIE:** [`coremeta4cat:precipitating_agent`](https://w3id.org/nfdi4cat/coremeta4cat/precipitating_agent) -**Schema Reference:** [precipitating_agent](./elements/precipitating_agent.md) +**Schema Reference:** [precipitating_agent](./elements/slots/precipitating_agent.md)

- + 💡 Submit Term Feedback

@@ -528,14 +622,14 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:precipitating_concentration`](https://w3id.org/nfdi4cat/catcore/precipitating_concentration) +**CURIE:** [`coremeta4cat:precipitating_concentration`](https://w3id.org/nfdi4cat/coremeta4cat/precipitating_concentration) -**Schema Reference:** [precipitating_concentration](./elements/precipitating_concentration.md) +**Schema Reference:** [precipitating_concentration](./elements/slots/precipitating_concentration.md) **Unit:** mol/L

- + 💡 Submit Term Feedback

@@ -549,12 +643,12 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000052`](https://w3id.org/nfdi4cat/voc4cat_0000052) +**CURIE:** [`VOC4CAT:0000052`](https://w3id.org/nfdi4cat/voc4cat_0000052) -**Schema Reference:** [synthesis_ph](./elements/synthesis_ph.md) +**Schema Reference:** [synthesis_ph](./elements/slots/synthesis_ph.md)

- + 💡 Submit Term Feedback

@@ -568,14 +662,14 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:mixing_rate`](https://w3id.org/nfdi4cat/catcore/mixing_rate) +**CURIE:** [`coremeta4cat:mixing_rate`](https://w3id.org/nfdi4cat/coremeta4cat/mixing_rate) -**Schema Reference:** [mixing_rate](./elements/mixing_rate.md) +**Schema Reference:** [mixing_rate](./elements/slots/mixing_rate.md) **Unit:** rpm

- + 💡 Submit Term Feedback

@@ -589,14 +683,14 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:mixing_time`](https://w3id.org/nfdi4cat/catcore/mixing_time) +**CURIE:** [`coremeta4cat:mixing_time`](https://w3id.org/nfdi4cat/coremeta4cat/mixing_time) -**Schema Reference:** [mixing_time](./elements/mixing_time.md) +**Schema Reference:** [mixing_time](./elements/slots/mixing_time.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -610,14 +704,14 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:mixing_temperature`](https://w3id.org/nfdi4cat/catcore/mixing_temperature) +**CURIE:** [`coremeta4cat:mixing_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/mixing_temperature) -**Schema Reference:** [mixing_temperature](./elements/mixing_temperature.md) +**Schema Reference:** [mixing_temperature](./elements/slots/mixing_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -631,12 +725,12 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:order_of_addition`](https://w3id.org/nfdi4cat/catcore/order_of_addition) +**CURIE:** [`coremeta4cat:order_of_addition`](https://w3id.org/nfdi4cat/coremeta4cat/order_of_addition) -**Schema Reference:** [order_of_addition](./elements/order_of_addition.md) +**Schema Reference:** [order_of_addition](./elements/slots/order_of_addition.md)

- + 💡 Submit Term Feedback

@@ -650,12 +744,12 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:filtration`](https://w3id.org/nfdi4cat/catcore/filtration) +**CURIE:** [`coremeta4cat:filtration`](https://w3id.org/nfdi4cat/coremeta4cat/filtration) -**Schema Reference:** [filtration](./elements/filtration.md) +**Schema Reference:** [filtration](./elements/slots/filtration.md)

- + 💡 Submit Term Feedback

@@ -669,12 +763,12 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:purification`](https://w3id.org/nfdi4cat/catcore/purification) +**CURIE:** [`coremeta4cat:purification`](https://w3id.org/nfdi4cat/coremeta4cat/purification) -**Schema Reference:** [purification](./elements/purification.md) +**Schema Reference:** [purification](./elements/slots/purification.md)

- + 💡 Submit Term Feedback

@@ -688,14 +782,14 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:aging_temperature`](https://w3id.org/nfdi4cat/catcore/aging_temperature) +**CURIE:** [`coremeta4cat:aging_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/aging_temperature) -**Schema Reference:** [aging_temperature](./elements/aging_temperature.md) +**Schema Reference:** [aging_temperature](./elements/slots/aging_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -709,14 +803,14 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:aging_time`](https://w3id.org/nfdi4cat/catcore/aging_time) +**CURIE:** [`coremeta4cat:aging_time`](https://w3id.org/nfdi4cat/coremeta4cat/aging_time) -**Schema Reference:** [aging_time](./elements/aging_time.md) +**Schema Reference:** [aging_time](./elements/slots/aging_time.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -730,12 +824,12 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_device`](https://w3id.org/nfdi4cat/catcore/drying_device) +**CURIE:** [`coremeta4cat:drying_device`](https://w3id.org/nfdi4cat/coremeta4cat/drying_device) -**Schema Reference:** [drying_device](./elements/drying_device.md) +**Schema Reference:** [drying_device](./elements/slots/drying_device.md)

- + 💡 Submit Term Feedback

@@ -749,14 +843,14 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_temperature`](https://w3id.org/nfdi4cat/catcore/drying_temperature) +**CURIE:** [`coremeta4cat:drying_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/drying_temperature) -**Schema Reference:** [drying_temperature](./elements/drying_temperature.md) +**Schema Reference:** [drying_temperature](./elements/slots/drying_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -770,14 +864,14 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_time`](https://w3id.org/nfdi4cat/catcore/drying_time) +**CURIE:** [`coremeta4cat:drying_time`](https://w3id.org/nfdi4cat/coremeta4cat/drying_time) -**Schema Reference:** [drying_time](./elements/drying_time.md) +**Schema Reference:** [drying_time](./elements/slots/drying_time.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -791,12 +885,12 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_atmosphere`](https://w3id.org/nfdi4cat/catcore/drying_atmosphere) +**CURIE:** [`coremeta4cat:drying_atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/drying_atmosphere) -**Schema Reference:** [drying_atmosphere](./elements/drying_atmosphere.md) +**Schema Reference:** [drying_atmosphere](./elements/slots/drying_atmosphere.md)

- + 💡 Submit Term Feedback

@@ -810,14 +904,14 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000057`](https://w3id.org/nfdi4cat/voc4cat_0000057) +**CURIE:** [`VOC4CAT:0000057`](https://w3id.org/nfdi4cat/voc4cat_0000057) -**Schema Reference:** [calcination_initial_temperature](./elements/calcination_initial_temperature.md) +**Schema Reference:** [calcination_initial_temperature](./elements/slots/calcination_initial_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -831,14 +925,14 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000058`](https://w3id.org/nfdi4cat/voc4cat_0000058) +**CURIE:** [`VOC4CAT:0000058`](https://w3id.org/nfdi4cat/voc4cat_0000058) -**Schema Reference:** [calcination_final_temperature](./elements/calcination_final_temperature.md) +**Schema Reference:** [calcination_final_temperature](./elements/slots/calcination_final_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -852,14 +946,14 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000060`](https://w3id.org/nfdi4cat/voc4cat_0000060) +**CURIE:** [`VOC4CAT:0000060`](https://w3id.org/nfdi4cat/voc4cat_0000060) -**Schema Reference:** [calcination_dwelling_time](./elements/calcination_dwelling_time.md) +**Schema Reference:** [calcination_dwelling_time](./elements/slots/calcination_dwelling_time.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -873,12 +967,12 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:number_of_cycles`](https://w3id.org/nfdi4cat/catcore/number_of_cycles) +**CURIE:** [`coremeta4cat:number_of_cycles`](https://w3id.org/nfdi4cat/coremeta4cat/number_of_cycles) -**Schema Reference:** [number_of_cycles](./elements/number_of_cycles.md) +**Schema Reference:** [number_of_cycles](./elements/slots/number_of_cycles.md)

- + 💡 Submit Term Feedback

@@ -892,12 +986,12 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000055`](https://w3id.org/nfdi4cat/voc4cat_0000055) +**CURIE:** [`VOC4CAT:0000055`](https://w3id.org/nfdi4cat/voc4cat_0000055) -**Schema Reference:** [calcination_gaseous_environment](./elements/calcination_gaseous_environment.md) +**Schema Reference:** [calcination_gaseous_environment](./elements/slots/calcination_gaseous_environment.md)

- + 💡 Submit Term Feedback

@@ -911,14 +1005,14 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000059`](https://w3id.org/nfdi4cat/voc4cat_0000059) +**CURIE:** [`VOC4CAT:0000059`](https://w3id.org/nfdi4cat/voc4cat_0000059) -**Schema Reference:** [calcination_heating_rate](./elements/calcination_heating_rate.md) +**Schema Reference:** [calcination_heating_rate](./elements/slots/calcination_heating_rate.md) **Unit:** Cel/min

- + 💡 Submit Term Feedback

@@ -932,20 +1026,20 @@ simultaneously precipitated from solution by a precipitating agent. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000056`](https://w3id.org/nfdi4cat/voc4cat_0000056) +**CURIE:** [`VOC4CAT:0000056`](https://w3id.org/nfdi4cat/voc4cat_0000056) -**Schema Reference:** [calcination_gas_flow_rate](./elements/calcination_gas_flow_rate.md) +**Schema Reference:** [calcination_gas_flow_rate](./elements/slots/calcination_gas_flow_rate.md) **Unit:** mL/min

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -956,9 +1050,9 @@ simultaneously precipitated from solution by a precipitating agent. **Description:** Catalyst preparation by the sol-gel process: hydrolysis and condensation of precursor molecules to form a colloidal network (gel). -**CURIE:** [`catcore:SolGel`](https://w3id.org/nfdi4cat/catcore/SolGel) +**CURIE:** [`coremeta4cat:SolGel`](https://w3id.org/nfdi4cat/coremeta4cat/SolGel) -**Schema Reference:** [SolGel](./elements/SolGel.md) +**Schema Reference:** [SolGel](./elements/classes/SolGel.md) **Slots** @@ -971,12 +1065,12 @@ of precursor molecules to form a colloidal network (gel). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:hydrolysis_ratio`](https://w3id.org/nfdi4cat/catcore/hydrolysis_ratio) +**CURIE:** [`coremeta4cat:hydrolysis_ratio`](https://w3id.org/nfdi4cat/coremeta4cat/hydrolysis_ratio) -**Schema Reference:** [hydrolysis_ratio](./elements/hydrolysis_ratio.md) +**Schema Reference:** [hydrolysis_ratio](./elements/slots/hydrolysis_ratio.md)

- + 💡 Submit Term Feedback

@@ -990,14 +1084,14 @@ of precursor molecules to form a colloidal network (gel). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:aging_time`](https://w3id.org/nfdi4cat/catcore/aging_time) +**CURIE:** [`coremeta4cat:aging_time`](https://w3id.org/nfdi4cat/coremeta4cat/aging_time) -**Schema Reference:** [aging_time](./elements/aging_time.md) +**Schema Reference:** [aging_time](./elements/slots/aging_time.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -1011,12 +1105,12 @@ of precursor molecules to form a colloidal network (gel). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying`](https://w3id.org/nfdi4cat/catcore/drying) +**CURIE:** [`coremeta4cat:drying`](https://w3id.org/nfdi4cat/coremeta4cat/drying) -**Schema Reference:** [drying](./elements/drying.md) +**Schema Reference:** [drying](./elements/slots/drying.md)

- + 💡 Submit Term Feedback

@@ -1030,12 +1124,12 @@ of precursor molecules to form a colloidal network (gel). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:surfactant_template`](https://w3id.org/nfdi4cat/catcore/surfactant_template) +**CURIE:** [`coremeta4cat:surfactant_template`](https://w3id.org/nfdi4cat/coremeta4cat/surfactant_template) -**Schema Reference:** [surfactant_template](./elements/surfactant_template.md) +**Schema Reference:** [surfactant_template](./elements/slots/surfactant_template.md)

- + 💡 Submit Term Feedback

@@ -1049,12 +1143,12 @@ of precursor molecules to form a colloidal network (gel). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_device`](https://w3id.org/nfdi4cat/catcore/drying_device) +**CURIE:** [`coremeta4cat:drying_device`](https://w3id.org/nfdi4cat/coremeta4cat/drying_device) -**Schema Reference:** [drying_device](./elements/drying_device.md) +**Schema Reference:** [drying_device](./elements/slots/drying_device.md)

- + 💡 Submit Term Feedback

@@ -1068,14 +1162,14 @@ of precursor molecules to form a colloidal network (gel). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_temperature`](https://w3id.org/nfdi4cat/catcore/drying_temperature) +**CURIE:** [`coremeta4cat:drying_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/drying_temperature) -**Schema Reference:** [drying_temperature](./elements/drying_temperature.md) +**Schema Reference:** [drying_temperature](./elements/slots/drying_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -1089,14 +1183,14 @@ of precursor molecules to form a colloidal network (gel). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_time`](https://w3id.org/nfdi4cat/catcore/drying_time) +**CURIE:** [`coremeta4cat:drying_time`](https://w3id.org/nfdi4cat/coremeta4cat/drying_time) -**Schema Reference:** [drying_time](./elements/drying_time.md) +**Schema Reference:** [drying_time](./elements/slots/drying_time.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -1110,18 +1204,18 @@ of precursor molecules to form a colloidal network (gel). **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_atmosphere`](https://w3id.org/nfdi4cat/catcore/drying_atmosphere) +**CURIE:** [`coremeta4cat:drying_atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/drying_atmosphere) -**Schema Reference:** [drying_atmosphere](./elements/drying_atmosphere.md) +**Schema Reference:** [drying_atmosphere](./elements/slots/drying_atmosphere.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -1132,9 +1226,9 @@ of precursor molecules to form a colloidal network (gel). **Description:** Catalyst preparation under elevated temperature and pressure in a sealed vessel using a non-aqueous solvent. -**CURIE:** [`catcore:Solvothermal`](https://w3id.org/nfdi4cat/catcore/Solvothermal) +**CURIE:** [`coremeta4cat:Solvothermal`](https://w3id.org/nfdi4cat/coremeta4cat/Solvothermal) -**Schema Reference:** [Solvothermal](./elements/Solvothermal.md) +**Schema Reference:** [Solvothermal](./elements/classes/Solvothermal.md) **Slots** @@ -1147,14 +1241,14 @@ sealed vessel using a non-aqueous solvent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:filling_volume`](https://w3id.org/nfdi4cat/catcore/filling_volume) +**CURIE:** [`coremeta4cat:filling_volume`](https://w3id.org/nfdi4cat/coremeta4cat/filling_volume) -**Schema Reference:** [filling_volume](./elements/filling_volume.md) +**Schema Reference:** [filling_volume](./elements/slots/filling_volume.md) **Unit:** mL

- + 💡 Submit Term Feedback

@@ -1168,12 +1262,12 @@ sealed vessel using a non-aqueous solvent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:stirrer_type`](https://w3id.org/nfdi4cat/catcore/stirrer_type) +**CURIE:** [`coremeta4cat:stirrer_type`](https://w3id.org/nfdi4cat/coremeta4cat/stirrer_type) -**Schema Reference:** [stirrer_type](./elements/stirrer_type.md) +**Schema Reference:** [stirrer_type](./elements/slots/stirrer_type.md)

- + 💡 Submit Term Feedback

@@ -1187,14 +1281,14 @@ sealed vessel using a non-aqueous solvent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:cooling_rate`](https://w3id.org/nfdi4cat/catcore/cooling_rate) +**CURIE:** [`coremeta4cat:cooling_rate`](https://w3id.org/nfdi4cat/coremeta4cat/cooling_rate) -**Schema Reference:** [cooling_rate](./elements/cooling_rate.md) +**Schema Reference:** [cooling_rate](./elements/slots/cooling_rate.md) **Unit:** Cel/min

- + 💡 Submit Term Feedback

@@ -1208,14 +1302,14 @@ sealed vessel using a non-aqueous solvent. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000051`](https://w3id.org/nfdi4cat/voc4cat_0000051) +**CURIE:** [`VOC4CAT:0000051`](https://w3id.org/nfdi4cat/voc4cat_0000051) -**Schema Reference:** [synthesis_temperature](./elements/synthesis_temperature.md) +**Schema Reference:** [synthesis_temperature](./elements/slots/synthesis_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -1229,14 +1323,14 @@ sealed vessel using a non-aqueous solvent. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000050`](https://w3id.org/nfdi4cat/voc4cat_0000050) +**CURIE:** [`VOC4CAT:0000050`](https://w3id.org/nfdi4cat/voc4cat_0000050) -**Schema Reference:** [synthesis_duration](./elements/synthesis_duration.md) +**Schema Reference:** [synthesis_duration](./elements/slots/synthesis_duration.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -1250,12 +1344,12 @@ sealed vessel using a non-aqueous solvent. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000187`](https://w3id.org/nfdi4cat/voc4cat_0000187) +**CURIE:** [`VOC4CAT:0000187`](https://w3id.org/nfdi4cat/voc4cat_0000187) -**Schema Reference:** [equipment](./elements/equipment.md) +**Schema Reference:** [equipment](./elements/slots/equipment.md)

- + 💡 Submit Term Feedback

@@ -1269,12 +1363,12 @@ sealed vessel using a non-aqueous solvent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:vessel_type`](https://w3id.org/nfdi4cat/catcore/vessel_type) +**CURIE:** [`coremeta4cat:vessel_type`](https://w3id.org/nfdi4cat/coremeta4cat/vessel_type) -**Schema Reference:** [vessel_type](./elements/vessel_type.md) +**Schema Reference:** [vessel_type](./elements/slots/vessel_type.md)

- + 💡 Submit Term Feedback

@@ -1288,18 +1382,18 @@ sealed vessel using a non-aqueous solvent. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:atmosphere`](https://w3id.org/nfdi4cat/catcore/atmosphere) +**CURIE:** [`coremeta4cat:atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/atmosphere) -**Schema Reference:** [atmosphere](./elements/atmosphere.md) +**Schema Reference:** [atmosphere](./elements/slots/atmosphere.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -1310,9 +1404,9 @@ sealed vessel using a non-aqueous solvent. **Description:** Catalyst preparation using plasma treatment to modify surface properties or deposit active components. -**CURIE:** [`catcore:PlasmaAssisted`](https://w3id.org/nfdi4cat/catcore/PlasmaAssisted) +**CURIE:** [`coremeta4cat:PlasmaAssisted`](https://w3id.org/nfdi4cat/coremeta4cat/PlasmaAssisted) -**Schema Reference:** [PlasmaAssisted](./elements/PlasmaAssisted.md) +**Schema Reference:** [PlasmaAssisted](./elements/classes/PlasmaAssisted.md) **Slots** @@ -1325,12 +1419,12 @@ properties or deposit active components. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:plasma_type`](https://w3id.org/nfdi4cat/catcore/plasma_type) +**CURIE:** [`coremeta4cat:plasma_type`](https://w3id.org/nfdi4cat/coremeta4cat/plasma_type) -**Schema Reference:** [plasma_type](./elements/plasma_type.md) +**Schema Reference:** [plasma_type](./elements/slots/plasma_type.md)

- + 💡 Submit Term Feedback

@@ -1344,14 +1438,14 @@ properties or deposit active components. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:power_input`](https://w3id.org/nfdi4cat/catcore/power_input) +**CURIE:** [`coremeta4cat:power_input`](https://w3id.org/nfdi4cat/coremeta4cat/power_input) -**Schema Reference:** [power_input](./elements/power_input.md) +**Schema Reference:** [power_input](./elements/slots/power_input.md) **Unit:** W

- + 💡 Submit Term Feedback

@@ -1365,14 +1459,14 @@ properties or deposit active components. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:exposure_time`](https://w3id.org/nfdi4cat/catcore/exposure_time) +**CURIE:** [`coremeta4cat:exposure_time`](https://w3id.org/nfdi4cat/coremeta4cat/exposure_time) -**Schema Reference:** [exposure_time](./elements/exposure_time.md) +**Schema Reference:** [exposure_time](./elements/slots/exposure_time.md) **Unit:** min

- + 💡 Submit Term Feedback

@@ -1386,14 +1480,14 @@ properties or deposit active components. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000053`](https://w3id.org/nfdi4cat/voc4cat_0000053) +**CURIE:** [`VOC4CAT:0000053`](https://w3id.org/nfdi4cat/voc4cat_0000053) -**Schema Reference:** [synthesis_pressure](./elements/synthesis_pressure.md) +**Schema Reference:** [synthesis_pressure](./elements/slots/synthesis_pressure.md) **Unit:** bar

- + 💡 Submit Term Feedback

@@ -1407,14 +1501,14 @@ properties or deposit active components. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000051`](https://w3id.org/nfdi4cat/voc4cat_0000051) +**CURIE:** [`VOC4CAT:0000051`](https://w3id.org/nfdi4cat/voc4cat_0000051) -**Schema Reference:** [synthesis_temperature](./elements/synthesis_temperature.md) +**Schema Reference:** [synthesis_temperature](./elements/slots/synthesis_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -1428,14 +1522,14 @@ properties or deposit active components. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000050`](https://w3id.org/nfdi4cat/voc4cat_0000050) +**CURIE:** [`VOC4CAT:0000050`](https://w3id.org/nfdi4cat/voc4cat_0000050) -**Schema Reference:** [synthesis_duration](./elements/synthesis_duration.md) +**Schema Reference:** [synthesis_duration](./elements/slots/synthesis_duration.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -1449,12 +1543,12 @@ properties or deposit active components. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000187`](https://w3id.org/nfdi4cat/voc4cat_0000187) +**CURIE:** [`VOC4CAT:0000187`](https://w3id.org/nfdi4cat/voc4cat_0000187) -**Schema Reference:** [equipment](./elements/equipment.md) +**Schema Reference:** [equipment](./elements/slots/equipment.md)

- + 💡 Submit Term Feedback

@@ -1468,12 +1562,12 @@ properties or deposit active components. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:vessel_type`](https://w3id.org/nfdi4cat/catcore/vessel_type) +**CURIE:** [`coremeta4cat:vessel_type`](https://w3id.org/nfdi4cat/coremeta4cat/vessel_type) -**Schema Reference:** [vessel_type](./elements/vessel_type.md) +**Schema Reference:** [vessel_type](./elements/slots/vessel_type.md)

- + 💡 Submit Term Feedback

@@ -1487,18 +1581,18 @@ properties or deposit active components. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:atmosphere`](https://w3id.org/nfdi4cat/catcore/atmosphere) +**CURIE:** [`coremeta4cat:atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/atmosphere) -**Schema Reference:** [atmosphere](./elements/atmosphere.md) +**Schema Reference:** [atmosphere](./elements/slots/atmosphere.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -1509,9 +1603,9 @@ properties or deposit active components. **Description:** Catalyst preparation by combustion of a fuel/oxidizer mixture, producing metal oxide catalysts in a single rapid step. -**CURIE:** [`catcore:CombustionSynthesis`](https://w3id.org/nfdi4cat/catcore/CombustionSynthesis) +**CURIE:** [`coremeta4cat:CombustionSynthesis`](https://w3id.org/nfdi4cat/coremeta4cat/CombustionSynthesis) -**Schema Reference:** [CombustionSynthesis](./elements/CombustionSynthesis.md) +**Schema Reference:** [CombustionSynthesis](./elements/classes/CombustionSynthesis.md) **Slots** @@ -1524,12 +1618,12 @@ producing metal oxide catalysts in a single rapid step. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:fuel`](https://w3id.org/nfdi4cat/catcore/fuel) +**CURIE:** [`coremeta4cat:fuel`](https://w3id.org/nfdi4cat/coremeta4cat/fuel) -**Schema Reference:** [fuel](./elements/fuel.md) +**Schema Reference:** [fuel](./elements/slots/fuel.md)

- + 💡 Submit Term Feedback

@@ -1543,12 +1637,12 @@ producing metal oxide catalysts in a single rapid step. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:oxidizer`](https://w3id.org/nfdi4cat/catcore/oxidizer) +**CURIE:** [`coremeta4cat:oxidizer`](https://w3id.org/nfdi4cat/coremeta4cat/oxidizer) -**Schema Reference:** [oxidizer](./elements/oxidizer.md) +**Schema Reference:** [oxidizer](./elements/slots/oxidizer.md)

- + 💡 Submit Term Feedback

@@ -1562,12 +1656,12 @@ producing metal oxide catalysts in a single rapid step. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:fuel_to_oxidizer_ratio`](https://w3id.org/nfdi4cat/catcore/fuel_to_oxidizer_ratio) +**CURIE:** [`coremeta4cat:fuel_to_oxidizer_ratio`](https://w3id.org/nfdi4cat/coremeta4cat/fuel_to_oxidizer_ratio) -**Schema Reference:** [fuel_to_oxidizer_ratio](./elements/fuel_to_oxidizer_ratio.md) +**Schema Reference:** [fuel_to_oxidizer_ratio](./elements/slots/fuel_to_oxidizer_ratio.md)

- + 💡 Submit Term Feedback

@@ -1581,14 +1675,14 @@ producing metal oxide catalysts in a single rapid step. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:set_temperature`](https://w3id.org/nfdi4cat/catcore/set_temperature) +**CURIE:** [`coremeta4cat:set_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/set_temperature) -**Schema Reference:** [set_temperature](./elements/set_temperature.md) +**Schema Reference:** [set_temperature](./elements/slots/set_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -1602,12 +1696,12 @@ producing metal oxide catalysts in a single rapid step. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:post_treatment`](https://w3id.org/nfdi4cat/catcore/post_treatment) +**CURIE:** [`coremeta4cat:post_treatment`](https://w3id.org/nfdi4cat/coremeta4cat/post_treatment) -**Schema Reference:** [post_treatment](./elements/post_treatment.md) +**Schema Reference:** [post_treatment](./elements/slots/post_treatment.md)

- + 💡 Submit Term Feedback

@@ -1621,14 +1715,14 @@ producing metal oxide catalysts in a single rapid step. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000051`](https://w3id.org/nfdi4cat/voc4cat_0000051) +**CURIE:** [`VOC4CAT:0000051`](https://w3id.org/nfdi4cat/voc4cat_0000051) -**Schema Reference:** [synthesis_temperature](./elements/synthesis_temperature.md) +**Schema Reference:** [synthesis_temperature](./elements/slots/synthesis_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -1642,14 +1736,14 @@ producing metal oxide catalysts in a single rapid step. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000050`](https://w3id.org/nfdi4cat/voc4cat_0000050) +**CURIE:** [`VOC4CAT:0000050`](https://w3id.org/nfdi4cat/voc4cat_0000050) -**Schema Reference:** [synthesis_duration](./elements/synthesis_duration.md) +**Schema Reference:** [synthesis_duration](./elements/slots/synthesis_duration.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -1663,12 +1757,12 @@ producing metal oxide catalysts in a single rapid step. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000187`](https://w3id.org/nfdi4cat/voc4cat_0000187) +**CURIE:** [`VOC4CAT:0000187`](https://w3id.org/nfdi4cat/voc4cat_0000187) -**Schema Reference:** [equipment](./elements/equipment.md) +**Schema Reference:** [equipment](./elements/slots/equipment.md)

- + 💡 Submit Term Feedback

@@ -1682,12 +1776,12 @@ producing metal oxide catalysts in a single rapid step. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:vessel_type`](https://w3id.org/nfdi4cat/catcore/vessel_type) +**CURIE:** [`coremeta4cat:vessel_type`](https://w3id.org/nfdi4cat/coremeta4cat/vessel_type) -**Schema Reference:** [vessel_type](./elements/vessel_type.md) +**Schema Reference:** [vessel_type](./elements/slots/vessel_type.md)

- + 💡 Submit Term Feedback

@@ -1701,18 +1795,18 @@ producing metal oxide catalysts in a single rapid step. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:atmosphere`](https://w3id.org/nfdi4cat/catcore/atmosphere) +**CURIE:** [`coremeta4cat:atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/atmosphere) -**Schema Reference:** [atmosphere](./elements/atmosphere.md) +**Schema Reference:** [atmosphere](./elements/slots/atmosphere.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -1724,9 +1818,9 @@ producing metal oxide catalysts in a single rapid step. self-limiting surface reactions deposit a conformal thin film of active phase onto a substrate. -**CURIE:** [`catcore:AtomicLayerDeposition`](https://w3id.org/nfdi4cat/catcore/AtomicLayerDeposition) +**CURIE:** [`coremeta4cat:AtomicLayerDeposition`](https://w3id.org/nfdi4cat/coremeta4cat/AtomicLayerDeposition) -**Schema Reference:** [AtomicLayerDeposition](./elements/AtomicLayerDeposition.md) +**Schema Reference:** [AtomicLayerDeposition](./elements/classes/AtomicLayerDeposition.md) **Slots** @@ -1739,12 +1833,12 @@ of active phase onto a substrate. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000024`](https://w3id.org/nfdi4cat/voc4cat_0000024) +**CURIE:** [`VOC4CAT:0000024`](https://w3id.org/nfdi4cat/voc4cat_0000024) -**Schema Reference:** [substrate](./elements/substrate.md) +**Schema Reference:** [substrate](./elements/slots/substrate.md)

- + 💡 Submit Term Feedback

@@ -1758,14 +1852,14 @@ of active phase onto a substrate. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:pulse_time`](https://w3id.org/nfdi4cat/catcore/pulse_time) +**CURIE:** [`coremeta4cat:pulse_time`](https://w3id.org/nfdi4cat/coremeta4cat/pulse_time) -**Schema Reference:** [pulse_time](./elements/pulse_time.md) +**Schema Reference:** [pulse_time](./elements/slots/pulse_time.md) **Unit:** s

- + 💡 Submit Term Feedback

@@ -1779,14 +1873,14 @@ of active phase onto a substrate. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000112`](https://w3id.org/nfdi4cat/voc4cat_0000112) +**CURIE:** [`VOC4CAT:0000112`](https://w3id.org/nfdi4cat/voc4cat_0000112) -**Schema Reference:** [purging_duration](./elements/purging_duration.md) +**Schema Reference:** [purging_duration](./elements/slots/purging_duration.md) **Unit:** s

- + 💡 Submit Term Feedback

@@ -1800,12 +1894,12 @@ of active phase onto a substrate. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:number_of_cycles`](https://w3id.org/nfdi4cat/catcore/number_of_cycles) +**CURIE:** [`coremeta4cat:number_of_cycles`](https://w3id.org/nfdi4cat/coremeta4cat/number_of_cycles) -**Schema Reference:** [number_of_cycles](./elements/number_of_cycles.md) +**Schema Reference:** [number_of_cycles](./elements/slots/number_of_cycles.md)

- + 💡 Submit Term Feedback

@@ -1819,14 +1913,14 @@ of active phase onto a substrate. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:deposition_temperature`](https://w3id.org/nfdi4cat/catcore/deposition_temperature) +**CURIE:** [`coremeta4cat:deposition_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/deposition_temperature) -**Schema Reference:** [deposition_temperature](./elements/deposition_temperature.md) +**Schema Reference:** [deposition_temperature](./elements/slots/deposition_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -1840,18 +1934,18 @@ of active phase onto a substrate. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:carrier_gas`](https://w3id.org/nfdi4cat/catcore/carrier_gas) +**CURIE:** [`coremeta4cat:carrier_gas`](https://w3id.org/nfdi4cat/coremeta4cat/carrier_gas) -**Schema Reference:** [carrier_gas](./elements/carrier_gas.md) +**Schema Reference:** [carrier_gas](./elements/slots/carrier_gas.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -1862,9 +1956,9 @@ of active phase onto a substrate. **Description:** Catalyst preparation by deposition-precipitation: the active phase is precipitated directly onto the support surface. -**CURIE:** [`catcore:DepositionPrecipitation`](https://w3id.org/nfdi4cat/catcore/DepositionPrecipitation) +**CURIE:** [`coremeta4cat:DepositionPrecipitation`](https://w3id.org/nfdi4cat/coremeta4cat/DepositionPrecipitation) -**Schema Reference:** [DepositionPrecipitation](./elements/DepositionPrecipitation.md) +**Schema Reference:** [DepositionPrecipitation](./elements/classes/DepositionPrecipitation.md) **Slots** @@ -1877,14 +1971,14 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:deposition_temperature`](https://w3id.org/nfdi4cat/catcore/deposition_temperature) +**CURIE:** [`coremeta4cat:deposition_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/deposition_temperature) -**Schema Reference:** [deposition_temperature](./elements/deposition_temperature.md) +**Schema Reference:** [deposition_temperature](./elements/slots/deposition_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -1898,14 +1992,14 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:deposition_time`](https://w3id.org/nfdi4cat/catcore/deposition_time) +**CURIE:** [`coremeta4cat:deposition_time`](https://w3id.org/nfdi4cat/coremeta4cat/deposition_time) -**Schema Reference:** [deposition_time](./elements/deposition_time.md) +**Schema Reference:** [deposition_time](./elements/slots/deposition_time.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -1919,12 +2013,12 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:precipitating_agent`](https://w3id.org/nfdi4cat/catcore/precipitating_agent) +**CURIE:** [`coremeta4cat:precipitating_agent`](https://w3id.org/nfdi4cat/coremeta4cat/precipitating_agent) -**Schema Reference:** [precipitating_agent](./elements/precipitating_agent.md) +**Schema Reference:** [precipitating_agent](./elements/slots/precipitating_agent.md)

- + 💡 Submit Term Feedback

@@ -1938,14 +2032,14 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:precipitating_concentration`](https://w3id.org/nfdi4cat/catcore/precipitating_concentration) +**CURIE:** [`coremeta4cat:precipitating_concentration`](https://w3id.org/nfdi4cat/coremeta4cat/precipitating_concentration) -**Schema Reference:** [precipitating_concentration](./elements/precipitating_concentration.md) +**Schema Reference:** [precipitating_concentration](./elements/slots/precipitating_concentration.md) **Unit:** mol/L

- + 💡 Submit Term Feedback

@@ -1959,12 +2053,12 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000052`](https://w3id.org/nfdi4cat/voc4cat_0000052) +**CURIE:** [`VOC4CAT:0000052`](https://w3id.org/nfdi4cat/voc4cat_0000052) -**Schema Reference:** [synthesis_ph](./elements/synthesis_ph.md) +**Schema Reference:** [synthesis_ph](./elements/slots/synthesis_ph.md)

- + 💡 Submit Term Feedback

@@ -1978,14 +2072,14 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:mixing_rate`](https://w3id.org/nfdi4cat/catcore/mixing_rate) +**CURIE:** [`coremeta4cat:mixing_rate`](https://w3id.org/nfdi4cat/coremeta4cat/mixing_rate) -**Schema Reference:** [mixing_rate](./elements/mixing_rate.md) +**Schema Reference:** [mixing_rate](./elements/slots/mixing_rate.md) **Unit:** rpm

- + 💡 Submit Term Feedback

@@ -1999,14 +2093,14 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:mixing_time`](https://w3id.org/nfdi4cat/catcore/mixing_time) +**CURIE:** [`coremeta4cat:mixing_time`](https://w3id.org/nfdi4cat/coremeta4cat/mixing_time) -**Schema Reference:** [mixing_time](./elements/mixing_time.md) +**Schema Reference:** [mixing_time](./elements/slots/mixing_time.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -2020,14 +2114,14 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:mixing_temperature`](https://w3id.org/nfdi4cat/catcore/mixing_temperature) +**CURIE:** [`coremeta4cat:mixing_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/mixing_temperature) -**Schema Reference:** [mixing_temperature](./elements/mixing_temperature.md) +**Schema Reference:** [mixing_temperature](./elements/slots/mixing_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2041,12 +2135,12 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:order_of_addition`](https://w3id.org/nfdi4cat/catcore/order_of_addition) +**CURIE:** [`coremeta4cat:order_of_addition`](https://w3id.org/nfdi4cat/coremeta4cat/order_of_addition) -**Schema Reference:** [order_of_addition](./elements/order_of_addition.md) +**Schema Reference:** [order_of_addition](./elements/slots/order_of_addition.md)

- + 💡 Submit Term Feedback

@@ -2060,12 +2154,12 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:filtration`](https://w3id.org/nfdi4cat/catcore/filtration) +**CURIE:** [`coremeta4cat:filtration`](https://w3id.org/nfdi4cat/coremeta4cat/filtration) -**Schema Reference:** [filtration](./elements/filtration.md) +**Schema Reference:** [filtration](./elements/slots/filtration.md)

- + 💡 Submit Term Feedback

@@ -2079,12 +2173,12 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:purification`](https://w3id.org/nfdi4cat/catcore/purification) +**CURIE:** [`coremeta4cat:purification`](https://w3id.org/nfdi4cat/coremeta4cat/purification) -**Schema Reference:** [purification](./elements/purification.md) +**Schema Reference:** [purification](./elements/slots/purification.md)

- + 💡 Submit Term Feedback

@@ -2098,14 +2192,14 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:aging_temperature`](https://w3id.org/nfdi4cat/catcore/aging_temperature) +**CURIE:** [`coremeta4cat:aging_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/aging_temperature) -**Schema Reference:** [aging_temperature](./elements/aging_temperature.md) +**Schema Reference:** [aging_temperature](./elements/slots/aging_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2119,14 +2213,14 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:aging_time`](https://w3id.org/nfdi4cat/catcore/aging_time) +**CURIE:** [`coremeta4cat:aging_time`](https://w3id.org/nfdi4cat/coremeta4cat/aging_time) -**Schema Reference:** [aging_time](./elements/aging_time.md) +**Schema Reference:** [aging_time](./elements/slots/aging_time.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -2140,12 +2234,12 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_device`](https://w3id.org/nfdi4cat/catcore/drying_device) +**CURIE:** [`coremeta4cat:drying_device`](https://w3id.org/nfdi4cat/coremeta4cat/drying_device) -**Schema Reference:** [drying_device](./elements/drying_device.md) +**Schema Reference:** [drying_device](./elements/slots/drying_device.md)

- + 💡 Submit Term Feedback

@@ -2159,14 +2253,14 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_temperature`](https://w3id.org/nfdi4cat/catcore/drying_temperature) +**CURIE:** [`coremeta4cat:drying_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/drying_temperature) -**Schema Reference:** [drying_temperature](./elements/drying_temperature.md) +**Schema Reference:** [drying_temperature](./elements/slots/drying_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2180,14 +2274,14 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_time`](https://w3id.org/nfdi4cat/catcore/drying_time) +**CURIE:** [`coremeta4cat:drying_time`](https://w3id.org/nfdi4cat/coremeta4cat/drying_time) -**Schema Reference:** [drying_time](./elements/drying_time.md) +**Schema Reference:** [drying_time](./elements/slots/drying_time.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -2201,12 +2295,12 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_atmosphere`](https://w3id.org/nfdi4cat/catcore/drying_atmosphere) +**CURIE:** [`coremeta4cat:drying_atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/drying_atmosphere) -**Schema Reference:** [drying_atmosphere](./elements/drying_atmosphere.md) +**Schema Reference:** [drying_atmosphere](./elements/slots/drying_atmosphere.md)

- + 💡 Submit Term Feedback

@@ -2220,14 +2314,14 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000057`](https://w3id.org/nfdi4cat/voc4cat_0000057) +**CURIE:** [`VOC4CAT:0000057`](https://w3id.org/nfdi4cat/voc4cat_0000057) -**Schema Reference:** [calcination_initial_temperature](./elements/calcination_initial_temperature.md) +**Schema Reference:** [calcination_initial_temperature](./elements/slots/calcination_initial_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2241,14 +2335,14 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000058`](https://w3id.org/nfdi4cat/voc4cat_0000058) +**CURIE:** [`VOC4CAT:0000058`](https://w3id.org/nfdi4cat/voc4cat_0000058) -**Schema Reference:** [calcination_final_temperature](./elements/calcination_final_temperature.md) +**Schema Reference:** [calcination_final_temperature](./elements/slots/calcination_final_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2262,14 +2356,14 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000060`](https://w3id.org/nfdi4cat/voc4cat_0000060) +**CURIE:** [`VOC4CAT:0000060`](https://w3id.org/nfdi4cat/voc4cat_0000060) -**Schema Reference:** [calcination_dwelling_time](./elements/calcination_dwelling_time.md) +**Schema Reference:** [calcination_dwelling_time](./elements/slots/calcination_dwelling_time.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -2283,12 +2377,12 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:number_of_cycles`](https://w3id.org/nfdi4cat/catcore/number_of_cycles) +**CURIE:** [`coremeta4cat:number_of_cycles`](https://w3id.org/nfdi4cat/coremeta4cat/number_of_cycles) -**Schema Reference:** [number_of_cycles](./elements/number_of_cycles.md) +**Schema Reference:** [number_of_cycles](./elements/slots/number_of_cycles.md)

- + 💡 Submit Term Feedback

@@ -2302,12 +2396,12 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000055`](https://w3id.org/nfdi4cat/voc4cat_0000055) +**CURIE:** [`VOC4CAT:0000055`](https://w3id.org/nfdi4cat/voc4cat_0000055) -**Schema Reference:** [calcination_gaseous_environment](./elements/calcination_gaseous_environment.md) +**Schema Reference:** [calcination_gaseous_environment](./elements/slots/calcination_gaseous_environment.md)

- + 💡 Submit Term Feedback

@@ -2321,14 +2415,14 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000059`](https://w3id.org/nfdi4cat/voc4cat_0000059) +**CURIE:** [`VOC4CAT:0000059`](https://w3id.org/nfdi4cat/voc4cat_0000059) -**Schema Reference:** [calcination_heating_rate](./elements/calcination_heating_rate.md) +**Schema Reference:** [calcination_heating_rate](./elements/slots/calcination_heating_rate.md) **Unit:** Cel/min

- + 💡 Submit Term Feedback

@@ -2342,20 +2436,20 @@ is precipitated directly onto the support surface. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000056`](https://w3id.org/nfdi4cat/voc4cat_0000056) +**CURIE:** [`VOC4CAT:0000056`](https://w3id.org/nfdi4cat/voc4cat_0000056) -**Schema Reference:** [calcination_gas_flow_rate](./elements/calcination_gas_flow_rate.md) +**Schema Reference:** [calcination_gas_flow_rate](./elements/slots/calcination_gas_flow_rate.md) **Unit:** mL/min

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -2366,9 +2460,9 @@ is precipitated directly onto the support surface. **Description:** Catalyst preparation using microwave irradiation to rapidly and uniformly heat the reaction mixture. -**CURIE:** [`catcore:MicrowaveAssisted`](https://w3id.org/nfdi4cat/catcore/MicrowaveAssisted) +**CURIE:** [`coremeta4cat:MicrowaveAssisted`](https://w3id.org/nfdi4cat/coremeta4cat/MicrowaveAssisted) -**Schema Reference:** [MicrowaveAssisted](./elements/MicrowaveAssisted.md) +**Schema Reference:** [MicrowaveAssisted](./elements/classes/MicrowaveAssisted.md) **Slots** @@ -2381,14 +2475,14 @@ uniformly heat the reaction mixture. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:power`](https://w3id.org/nfdi4cat/catcore/power) +**CURIE:** [`coremeta4cat:power`](https://w3id.org/nfdi4cat/coremeta4cat/power) -**Schema Reference:** [power](./elements/power.md) +**Schema Reference:** [power](./elements/slots/power.md) **Unit:** W

- + 💡 Submit Term Feedback

@@ -2402,14 +2496,14 @@ uniformly heat the reaction mixture. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:microwave_frequency`](https://w3id.org/nfdi4cat/catcore/microwave_frequency) +**CURIE:** [`coremeta4cat:microwave_frequency`](https://w3id.org/nfdi4cat/coremeta4cat/microwave_frequency) -**Schema Reference:** [microwave_frequency](./elements/microwave_frequency.md) +**Schema Reference:** [microwave_frequency](./elements/slots/microwave_frequency.md) **Unit:** GHz

- + 💡 Submit Term Feedback

@@ -2423,14 +2517,14 @@ uniformly heat the reaction mixture. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000051`](https://w3id.org/nfdi4cat/voc4cat_0000051) +**CURIE:** [`VOC4CAT:0000051`](https://w3id.org/nfdi4cat/voc4cat_0000051) -**Schema Reference:** [synthesis_temperature](./elements/synthesis_temperature.md) +**Schema Reference:** [synthesis_temperature](./elements/slots/synthesis_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2444,14 +2538,14 @@ uniformly heat the reaction mixture. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000050`](https://w3id.org/nfdi4cat/voc4cat_0000050) +**CURIE:** [`VOC4CAT:0000050`](https://w3id.org/nfdi4cat/voc4cat_0000050) -**Schema Reference:** [synthesis_duration](./elements/synthesis_duration.md) +**Schema Reference:** [synthesis_duration](./elements/slots/synthesis_duration.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -2465,12 +2559,12 @@ uniformly heat the reaction mixture. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000187`](https://w3id.org/nfdi4cat/voc4cat_0000187) +**CURIE:** [`VOC4CAT:0000187`](https://w3id.org/nfdi4cat/voc4cat_0000187) -**Schema Reference:** [equipment](./elements/equipment.md) +**Schema Reference:** [equipment](./elements/slots/equipment.md)

- + 💡 Submit Term Feedback

@@ -2484,12 +2578,12 @@ uniformly heat the reaction mixture. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:vessel_type`](https://w3id.org/nfdi4cat/catcore/vessel_type) +**CURIE:** [`coremeta4cat:vessel_type`](https://w3id.org/nfdi4cat/coremeta4cat/vessel_type) -**Schema Reference:** [vessel_type](./elements/vessel_type.md) +**Schema Reference:** [vessel_type](./elements/slots/vessel_type.md)

- + 💡 Submit Term Feedback

@@ -2503,18 +2597,18 @@ uniformly heat the reaction mixture. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:atmosphere`](https://w3id.org/nfdi4cat/catcore/atmosphere) +**CURIE:** [`coremeta4cat:atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/atmosphere) -**Schema Reference:** [atmosphere](./elements/atmosphere.md) +**Schema Reference:** [atmosphere](./elements/slots/atmosphere.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -2525,9 +2619,9 @@ uniformly heat the reaction mixture. **Description:** Catalyst preparation using ultrasonic irradiation to drive chemical reactions via acoustic cavitation. -**CURIE:** [`catcore:SonochemicalSynthesis`](https://w3id.org/nfdi4cat/catcore/SonochemicalSynthesis) +**CURIE:** [`coremeta4cat:SonochemicalSynthesis`](https://w3id.org/nfdi4cat/coremeta4cat/SonochemicalSynthesis) -**Schema Reference:** [SonochemicalSynthesis](./elements/SonochemicalSynthesis.md) +**Schema Reference:** [SonochemicalSynthesis](./elements/classes/SonochemicalSynthesis.md) **Slots** @@ -2540,14 +2634,14 @@ reactions via acoustic cavitation. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:sonication_power`](https://w3id.org/nfdi4cat/catcore/sonication_power) +**CURIE:** [`coremeta4cat:sonication_power`](https://w3id.org/nfdi4cat/coremeta4cat/sonication_power) -**Schema Reference:** [sonication_power](./elements/sonication_power.md) +**Schema Reference:** [sonication_power](./elements/slots/sonication_power.md) **Unit:** W

- + 💡 Submit Term Feedback

@@ -2561,14 +2655,14 @@ reactions via acoustic cavitation. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:sonication_duration`](https://w3id.org/nfdi4cat/catcore/sonication_duration) +**CURIE:** [`coremeta4cat:sonication_duration`](https://w3id.org/nfdi4cat/coremeta4cat/sonication_duration) -**Schema Reference:** [sonication_duration](./elements/sonication_duration.md) +**Schema Reference:** [sonication_duration](./elements/slots/sonication_duration.md) **Unit:** min

- + 💡 Submit Term Feedback

@@ -2584,12 +2678,12 @@ reactions via acoustic cavitation. **CURIE:** [`AFR:0001584`](http://purl.allotrope.org/ontologies/result#AFR_0001584) -**Schema Reference:** [temperature](./elements/temperature.md) +**Schema Reference:** [temperature](./elements/slots/temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2603,12 +2697,12 @@ reactions via acoustic cavitation. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_device`](https://w3id.org/nfdi4cat/catcore/drying_device) +**CURIE:** [`coremeta4cat:drying_device`](https://w3id.org/nfdi4cat/coremeta4cat/drying_device) -**Schema Reference:** [drying_device](./elements/drying_device.md) +**Schema Reference:** [drying_device](./elements/slots/drying_device.md)

- + 💡 Submit Term Feedback

@@ -2622,14 +2716,14 @@ reactions via acoustic cavitation. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_temperature`](https://w3id.org/nfdi4cat/catcore/drying_temperature) +**CURIE:** [`coremeta4cat:drying_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/drying_temperature) -**Schema Reference:** [drying_temperature](./elements/drying_temperature.md) +**Schema Reference:** [drying_temperature](./elements/slots/drying_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2643,14 +2737,14 @@ reactions via acoustic cavitation. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_time`](https://w3id.org/nfdi4cat/catcore/drying_time) +**CURIE:** [`coremeta4cat:drying_time`](https://w3id.org/nfdi4cat/coremeta4cat/drying_time) -**Schema Reference:** [drying_time](./elements/drying_time.md) +**Schema Reference:** [drying_time](./elements/slots/drying_time.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -2664,12 +2758,12 @@ reactions via acoustic cavitation. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_atmosphere`](https://w3id.org/nfdi4cat/catcore/drying_atmosphere) +**CURIE:** [`coremeta4cat:drying_atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/drying_atmosphere) -**Schema Reference:** [drying_atmosphere](./elements/drying_atmosphere.md) +**Schema Reference:** [drying_atmosphere](./elements/slots/drying_atmosphere.md)

- + 💡 Submit Term Feedback

@@ -2683,14 +2777,14 @@ reactions via acoustic cavitation. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000057`](https://w3id.org/nfdi4cat/voc4cat_0000057) +**CURIE:** [`VOC4CAT:0000057`](https://w3id.org/nfdi4cat/voc4cat_0000057) -**Schema Reference:** [calcination_initial_temperature](./elements/calcination_initial_temperature.md) +**Schema Reference:** [calcination_initial_temperature](./elements/slots/calcination_initial_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2704,14 +2798,14 @@ reactions via acoustic cavitation. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000058`](https://w3id.org/nfdi4cat/voc4cat_0000058) +**CURIE:** [`VOC4CAT:0000058`](https://w3id.org/nfdi4cat/voc4cat_0000058) -**Schema Reference:** [calcination_final_temperature](./elements/calcination_final_temperature.md) +**Schema Reference:** [calcination_final_temperature](./elements/slots/calcination_final_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -2725,14 +2819,14 @@ reactions via acoustic cavitation. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000060`](https://w3id.org/nfdi4cat/voc4cat_0000060) +**CURIE:** [`VOC4CAT:0000060`](https://w3id.org/nfdi4cat/voc4cat_0000060) -**Schema Reference:** [calcination_dwelling_time](./elements/calcination_dwelling_time.md) +**Schema Reference:** [calcination_dwelling_time](./elements/slots/calcination_dwelling_time.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -2746,12 +2840,12 @@ reactions via acoustic cavitation. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:number_of_cycles`](https://w3id.org/nfdi4cat/catcore/number_of_cycles) +**CURIE:** [`coremeta4cat:number_of_cycles`](https://w3id.org/nfdi4cat/coremeta4cat/number_of_cycles) -**Schema Reference:** [number_of_cycles](./elements/number_of_cycles.md) +**Schema Reference:** [number_of_cycles](./elements/slots/number_of_cycles.md)

- + 💡 Submit Term Feedback

@@ -2765,12 +2859,12 @@ reactions via acoustic cavitation. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000055`](https://w3id.org/nfdi4cat/voc4cat_0000055) +**CURIE:** [`VOC4CAT:0000055`](https://w3id.org/nfdi4cat/voc4cat_0000055) -**Schema Reference:** [calcination_gaseous_environment](./elements/calcination_gaseous_environment.md) +**Schema Reference:** [calcination_gaseous_environment](./elements/slots/calcination_gaseous_environment.md)

- + 💡 Submit Term Feedback

@@ -2784,14 +2878,14 @@ reactions via acoustic cavitation. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000059`](https://w3id.org/nfdi4cat/voc4cat_0000059) +**CURIE:** [`VOC4CAT:0000059`](https://w3id.org/nfdi4cat/voc4cat_0000059) -**Schema Reference:** [calcination_heating_rate](./elements/calcination_heating_rate.md) +**Schema Reference:** [calcination_heating_rate](./elements/slots/calcination_heating_rate.md) **Unit:** Cel/min

- + 💡 Submit Term Feedback

@@ -2805,20 +2899,20 @@ reactions via acoustic cavitation. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000056`](https://w3id.org/nfdi4cat/voc4cat_0000056) +**CURIE:** [`VOC4CAT:0000056`](https://w3id.org/nfdi4cat/voc4cat_0000056) -**Schema Reference:** [calcination_gas_flow_rate](./elements/calcination_gas_flow_rate.md) +**Schema Reference:** [calcination_gas_flow_rate](./elements/slots/calcination_gas_flow_rate.md) **Unit:** mL/min

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -2829,9 +2923,9 @@ reactions via acoustic cavitation. **Description:** Catalyst preparation by flame spray pyrolysis (FSP): a liquid precursor solution is atomised and combusted in a flame to produce nanoparticles. -**CURIE:** [`voc4cat:0007031`](https://w3id.org/nfdi4cat/voc4cat_0007031) +**CURIE:** [`VOC4CAT:0007031`](https://w3id.org/nfdi4cat/voc4cat_0007031) -**Schema Reference:** [FlameSprayPyrolysis](./elements/FlameSprayPyrolysis.md) +**Schema Reference:** [FlameSprayPyrolysis](./elements/classes/FlameSprayPyrolysis.md) **Slots** @@ -2844,12 +2938,12 @@ solution is atomised and combusted in a flame to produce nanoparticles. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:flame_type`](https://w3id.org/nfdi4cat/catcore/flame_type) +**CURIE:** [`coremeta4cat:flame_type`](https://w3id.org/nfdi4cat/coremeta4cat/flame_type) -**Schema Reference:** [flame_type](./elements/flame_type.md) +**Schema Reference:** [flame_type](./elements/slots/flame_type.md)

- + 💡 Submit Term Feedback

@@ -2863,14 +2957,14 @@ solution is atomised and combusted in a flame to produce nanoparticles. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:flow_rate`](https://w3id.org/nfdi4cat/catcore/flow_rate) +**CURIE:** [`coremeta4cat:flow_rate`](https://w3id.org/nfdi4cat/coremeta4cat/flow_rate) -**Schema Reference:** [flow_rate](./elements/flow_rate.md) +**Schema Reference:** [flow_rate](./elements/slots/flow_rate.md) **Unit:** mL/min

- + 💡 Submit Term Feedback

@@ -2884,12 +2978,12 @@ solution is atomised and combusted in a flame to produce nanoparticles. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:inlet_system`](https://w3id.org/nfdi4cat/catcore/inlet_system) +**CURIE:** [`coremeta4cat:inlet_system`](https://w3id.org/nfdi4cat/coremeta4cat/inlet_system) -**Schema Reference:** [inlet_system](./elements/inlet_system.md) +**Schema Reference:** [inlet_system](./elements/slots/inlet_system.md)

- + 💡 Submit Term Feedback

@@ -2903,12 +2997,12 @@ solution is atomised and combusted in a flame to produce nanoparticles. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:flame_ring`](https://w3id.org/nfdi4cat/catcore/flame_ring) +**CURIE:** [`coremeta4cat:flame_ring`](https://w3id.org/nfdi4cat/coremeta4cat/flame_ring) -**Schema Reference:** [flame_ring](./elements/flame_ring.md) +**Schema Reference:** [flame_ring](./elements/slots/flame_ring.md)

- + 💡 Submit Term Feedback

@@ -2922,12 +3016,12 @@ solution is atomised and combusted in a flame to produce nanoparticles. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:dispersant`](https://w3id.org/nfdi4cat/catcore/dispersant) +**CURIE:** [`coremeta4cat:dispersant`](https://w3id.org/nfdi4cat/coremeta4cat/dispersant) -**Schema Reference:** [dispersant](./elements/dispersant.md) +**Schema Reference:** [dispersant](./elements/slots/dispersant.md)

- + 💡 Submit Term Feedback

@@ -2941,14 +3035,14 @@ solution is atomised and combusted in a flame to produce nanoparticles. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:capillary_pressure`](https://w3id.org/nfdi4cat/catcore/capillary_pressure) +**CURIE:** [`coremeta4cat:capillary_pressure`](https://w3id.org/nfdi4cat/coremeta4cat/capillary_pressure) -**Schema Reference:** [capillary_pressure](./elements/capillary_pressure.md) +**Schema Reference:** [capillary_pressure](./elements/slots/capillary_pressure.md) **Unit:** bar

- + 💡 Submit Term Feedback

@@ -2962,12 +3056,12 @@ solution is atomised and combusted in a flame to produce nanoparticles. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:fuel_dispersant_ratio`](https://w3id.org/nfdi4cat/catcore/fuel_dispersant_ratio) +**CURIE:** [`coremeta4cat:fuel_dispersant_ratio`](https://w3id.org/nfdi4cat/coremeta4cat/fuel_dispersant_ratio) -**Schema Reference:** [fuel_dispersant_ratio](./elements/fuel_dispersant_ratio.md) +**Schema Reference:** [fuel_dispersant_ratio](./elements/slots/fuel_dispersant_ratio.md)

- + 💡 Submit Term Feedback

@@ -2981,12 +3075,12 @@ solution is atomised and combusted in a flame to produce nanoparticles. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:filtration_device`](https://w3id.org/nfdi4cat/catcore/filtration_device) +**CURIE:** [`coremeta4cat:filtration_device`](https://w3id.org/nfdi4cat/coremeta4cat/filtration_device) -**Schema Reference:** [filtration_device](./elements/filtration_device.md) +**Schema Reference:** [filtration_device](./elements/slots/filtration_device.md)

- + 💡 Submit Term Feedback

@@ -3000,18 +3094,18 @@ solution is atomised and combusted in a flame to produce nanoparticles. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:filter_type`](https://w3id.org/nfdi4cat/catcore/filter_type) +**CURIE:** [`coremeta4cat:filter_type`](https://w3id.org/nfdi4cat/coremeta4cat/filter_type) -**Schema Reference:** [filter_type](./elements/filter_type.md) +**Schema Reference:** [filter_type](./elements/slots/filter_type.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -3022,9 +3116,9 @@ solution is atomised and combusted in a flame to produce nanoparticles. **Description:** Catalyst preparation by mechanical milling or grinding, optionally combined with thermal treatment. -**CURIE:** [`catcore:MechanochemicalSynthesis`](https://w3id.org/nfdi4cat/catcore/MechanochemicalSynthesis) +**CURIE:** [`coremeta4cat:MechanochemicalSynthesis`](https://w3id.org/nfdi4cat/coremeta4cat/MechanochemicalSynthesis) -**Schema Reference:** [MechanochemicalSynthesis](./elements/MechanochemicalSynthesis.md) +**Schema Reference:** [MechanochemicalSynthesis](./elements/classes/MechanochemicalSynthesis.md) **Slots** @@ -3037,14 +3131,14 @@ combined with thermal treatment. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:vessel_volume`](https://w3id.org/nfdi4cat/catcore/vessel_volume) +**CURIE:** [`coremeta4cat:vessel_volume`](https://w3id.org/nfdi4cat/coremeta4cat/vessel_volume) -**Schema Reference:** [vessel_volume](./elements/vessel_volume.md) +**Schema Reference:** [vessel_volume](./elements/slots/vessel_volume.md) **Unit:** mL

- + 💡 Submit Term Feedback

@@ -3058,12 +3152,12 @@ combined with thermal treatment. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:size_and_material`](https://w3id.org/nfdi4cat/catcore/size_and_material) +**CURIE:** [`coremeta4cat:size_and_material`](https://w3id.org/nfdi4cat/coremeta4cat/size_and_material) -**Schema Reference:** [size_and_material](./elements/size_and_material.md) +**Schema Reference:** [size_and_material](./elements/slots/size_and_material.md)

- + 💡 Submit Term Feedback

@@ -3077,14 +3171,14 @@ combined with thermal treatment. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:milling_speed`](https://w3id.org/nfdi4cat/catcore/milling_speed) +**CURIE:** [`coremeta4cat:milling_speed`](https://w3id.org/nfdi4cat/coremeta4cat/milling_speed) -**Schema Reference:** [milling_speed](./elements/milling_speed.md) +**Schema Reference:** [milling_speed](./elements/slots/milling_speed.md) **Unit:** rpm

- + 💡 Submit Term Feedback

@@ -3098,14 +3192,14 @@ combined with thermal treatment. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:milling_duration`](https://w3id.org/nfdi4cat/catcore/milling_duration) +**CURIE:** [`coremeta4cat:milling_duration`](https://w3id.org/nfdi4cat/coremeta4cat/milling_duration) -**Schema Reference:** [milling_duration](./elements/milling_duration.md) +**Schema Reference:** [milling_duration](./elements/slots/milling_duration.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -3119,12 +3213,12 @@ combined with thermal treatment. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:ball_material`](https://w3id.org/nfdi4cat/catcore/ball_material) +**CURIE:** [`coremeta4cat:ball_material`](https://w3id.org/nfdi4cat/coremeta4cat/ball_material) -**Schema Reference:** [ball_material](./elements/ball_material.md) +**Schema Reference:** [ball_material](./elements/slots/ball_material.md)

- + 💡 Submit Term Feedback

@@ -3138,14 +3232,14 @@ combined with thermal treatment. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:ball_size`](https://w3id.org/nfdi4cat/catcore/ball_size) +**CURIE:** [`coremeta4cat:ball_size`](https://w3id.org/nfdi4cat/coremeta4cat/ball_size) -**Schema Reference:** [ball_size](./elements/ball_size.md) +**Schema Reference:** [ball_size](./elements/slots/ball_size.md) **Unit:** mm

- + 💡 Submit Term Feedback

@@ -3159,12 +3253,12 @@ combined with thermal treatment. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:ball_to_powder_ratio`](https://w3id.org/nfdi4cat/catcore/ball_to_powder_ratio) +**CURIE:** [`coremeta4cat:ball_to_powder_ratio`](https://w3id.org/nfdi4cat/coremeta4cat/ball_to_powder_ratio) -**Schema Reference:** [ball_to_powder_ratio](./elements/ball_to_powder_ratio.md) +**Schema Reference:** [ball_to_powder_ratio](./elements/slots/ball_to_powder_ratio.md)

- + 💡 Submit Term Feedback

@@ -3178,14 +3272,14 @@ combined with thermal treatment. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000051`](https://w3id.org/nfdi4cat/voc4cat_0000051) +**CURIE:** [`VOC4CAT:0000051`](https://w3id.org/nfdi4cat/voc4cat_0000051) -**Schema Reference:** [synthesis_temperature](./elements/synthesis_temperature.md) +**Schema Reference:** [synthesis_temperature](./elements/slots/synthesis_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -3199,14 +3293,14 @@ combined with thermal treatment. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000050`](https://w3id.org/nfdi4cat/voc4cat_0000050) +**CURIE:** [`VOC4CAT:0000050`](https://w3id.org/nfdi4cat/voc4cat_0000050) -**Schema Reference:** [synthesis_duration](./elements/synthesis_duration.md) +**Schema Reference:** [synthesis_duration](./elements/slots/synthesis_duration.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -3220,12 +3314,12 @@ combined with thermal treatment. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000187`](https://w3id.org/nfdi4cat/voc4cat_0000187) +**CURIE:** [`VOC4CAT:0000187`](https://w3id.org/nfdi4cat/voc4cat_0000187) -**Schema Reference:** [equipment](./elements/equipment.md) +**Schema Reference:** [equipment](./elements/slots/equipment.md)

- + 💡 Submit Term Feedback

@@ -3239,12 +3333,12 @@ combined with thermal treatment. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:vessel_type`](https://w3id.org/nfdi4cat/catcore/vessel_type) +**CURIE:** [`coremeta4cat:vessel_type`](https://w3id.org/nfdi4cat/coremeta4cat/vessel_type) -**Schema Reference:** [vessel_type](./elements/vessel_type.md) +**Schema Reference:** [vessel_type](./elements/slots/vessel_type.md)

- + 💡 Submit Term Feedback

@@ -3258,18 +3352,18 @@ combined with thermal treatment. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:atmosphere`](https://w3id.org/nfdi4cat/catcore/atmosphere) +**CURIE:** [`coremeta4cat:atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/atmosphere) -**Schema Reference:** [atmosphere](./elements/atmosphere.md) +**Schema Reference:** [atmosphere](./elements/slots/atmosphere.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -3280,9 +3374,9 @@ combined with thermal treatment. **Description:** Catalyst preparation by sublimation: a solid precursor is vaporised and deposited onto a substrate without passing through a liquid phase. -**CURIE:** [`catcore:Sublimation`](https://w3id.org/nfdi4cat/catcore/Sublimation) +**CURIE:** [`coremeta4cat:Sublimation`](https://w3id.org/nfdi4cat/coremeta4cat/Sublimation) -**Schema Reference:** [Sublimation](./elements/Sublimation.md) +**Schema Reference:** [Sublimation](./elements/classes/Sublimation.md) **Slots** @@ -3295,14 +3389,14 @@ and deposited onto a substrate without passing through a liquid phase. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000053`](https://w3id.org/nfdi4cat/voc4cat_0000053) +**CURIE:** [`VOC4CAT:0000053`](https://w3id.org/nfdi4cat/voc4cat_0000053) -**Schema Reference:** [synthesis_pressure](./elements/synthesis_pressure.md) +**Schema Reference:** [synthesis_pressure](./elements/slots/synthesis_pressure.md) **Unit:** bar

- + 💡 Submit Term Feedback

@@ -3316,14 +3410,14 @@ and deposited onto a substrate without passing through a liquid phase. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000051`](https://w3id.org/nfdi4cat/voc4cat_0000051) +**CURIE:** [`VOC4CAT:0000051`](https://w3id.org/nfdi4cat/voc4cat_0000051) -**Schema Reference:** [synthesis_temperature](./elements/synthesis_temperature.md) +**Schema Reference:** [synthesis_temperature](./elements/slots/synthesis_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -3337,14 +3431,14 @@ and deposited onto a substrate without passing through a liquid phase. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000050`](https://w3id.org/nfdi4cat/voc4cat_0000050) +**CURIE:** [`VOC4CAT:0000050`](https://w3id.org/nfdi4cat/voc4cat_0000050) -**Schema Reference:** [synthesis_duration](./elements/synthesis_duration.md) +**Schema Reference:** [synthesis_duration](./elements/slots/synthesis_duration.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -3358,12 +3452,12 @@ and deposited onto a substrate without passing through a liquid phase. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000187`](https://w3id.org/nfdi4cat/voc4cat_0000187) +**CURIE:** [`VOC4CAT:0000187`](https://w3id.org/nfdi4cat/voc4cat_0000187) -**Schema Reference:** [equipment](./elements/equipment.md) +**Schema Reference:** [equipment](./elements/slots/equipment.md)

- + 💡 Submit Term Feedback

@@ -3377,12 +3471,12 @@ and deposited onto a substrate without passing through a liquid phase. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:vessel_type`](https://w3id.org/nfdi4cat/catcore/vessel_type) +**CURIE:** [`coremeta4cat:vessel_type`](https://w3id.org/nfdi4cat/coremeta4cat/vessel_type) -**Schema Reference:** [vessel_type](./elements/vessel_type.md) +**Schema Reference:** [vessel_type](./elements/slots/vessel_type.md)

- + 💡 Submit Term Feedback

@@ -3396,18 +3490,18 @@ and deposited onto a substrate without passing through a liquid phase. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:atmosphere`](https://w3id.org/nfdi4cat/catcore/atmosphere) +**CURIE:** [`coremeta4cat:atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/atmosphere) -**Schema Reference:** [atmosphere](./elements/atmosphere.md) +**Schema Reference:** [atmosphere](./elements/slots/atmosphere.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -3418,9 +3512,9 @@ and deposited onto a substrate without passing through a liquid phase. **Description:** Catalyst preparation by molecular (organometallic or coordination) chemistry routes, including crystallisation and purification steps. -**CURIE:** [`catcore:MolecularSynthesis`](https://w3id.org/nfdi4cat/catcore/MolecularSynthesis) +**CURIE:** [`coremeta4cat:MolecularSynthesis`](https://w3id.org/nfdi4cat/coremeta4cat/MolecularSynthesis) -**Schema Reference:** [MolecularSynthesis](./elements/MolecularSynthesis.md) +**Schema Reference:** [MolecularSynthesis](./elements/classes/MolecularSynthesis.md) **Slots** @@ -3433,12 +3527,12 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:reaction_vessel`](https://w3id.org/nfdi4cat/catcore/reaction_vessel) +**CURIE:** [`coremeta4cat:reaction_vessel`](https://w3id.org/nfdi4cat/coremeta4cat/reaction_vessel) -**Schema Reference:** [reaction_vessel](./elements/reaction_vessel.md) +**Schema Reference:** [reaction_vessel](./elements/slots/reaction_vessel.md)

- + 💡 Submit Term Feedback

@@ -3452,12 +3546,12 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:mixing_device`](https://w3id.org/nfdi4cat/catcore/mixing_device) +**CURIE:** [`coremeta4cat:mixing_device`](https://w3id.org/nfdi4cat/coremeta4cat/mixing_device) -**Schema Reference:** [mixing_device](./elements/mixing_device.md) +**Schema Reference:** [mixing_device](./elements/slots/mixing_device.md)

- + 💡 Submit Term Feedback

@@ -3471,14 +3565,14 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:stirring_duration`](https://w3id.org/nfdi4cat/catcore/stirring_duration) +**CURIE:** [`coremeta4cat:stirring_duration`](https://w3id.org/nfdi4cat/coremeta4cat/stirring_duration) -**Schema Reference:** [stirring_duration](./elements/stirring_duration.md) +**Schema Reference:** [stirring_duration](./elements/slots/stirring_duration.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -3492,14 +3586,14 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:stirring_speed`](https://w3id.org/nfdi4cat/catcore/stirring_speed) +**CURIE:** [`coremeta4cat:stirring_speed`](https://w3id.org/nfdi4cat/coremeta4cat/stirring_speed) -**Schema Reference:** [stirring_speed](./elements/stirring_speed.md) +**Schema Reference:** [stirring_speed](./elements/slots/stirring_speed.md) **Unit:** rpm

- + 💡 Submit Term Feedback

@@ -3513,14 +3607,14 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:mixing_temperature`](https://w3id.org/nfdi4cat/catcore/mixing_temperature) +**CURIE:** [`coremeta4cat:mixing_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/mixing_temperature) -**Schema Reference:** [mixing_temperature](./elements/mixing_temperature.md) +**Schema Reference:** [mixing_temperature](./elements/slots/mixing_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -3534,12 +3628,12 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:filtration_device`](https://w3id.org/nfdi4cat/catcore/filtration_device) +**CURIE:** [`coremeta4cat:filtration_device`](https://w3id.org/nfdi4cat/coremeta4cat/filtration_device) -**Schema Reference:** [filtration_device](./elements/filtration_device.md) +**Schema Reference:** [filtration_device](./elements/slots/filtration_device.md)

- + 💡 Submit Term Feedback

@@ -3553,12 +3647,12 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:filter_type`](https://w3id.org/nfdi4cat/catcore/filter_type) +**CURIE:** [`coremeta4cat:filter_type`](https://w3id.org/nfdi4cat/coremeta4cat/filter_type) -**Schema Reference:** [filter_type](./elements/filter_type.md) +**Schema Reference:** [filter_type](./elements/slots/filter_type.md)

- + 💡 Submit Term Feedback

@@ -3572,12 +3666,12 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:crystallisation_solvents`](https://w3id.org/nfdi4cat/catcore/crystallisation_solvents) +**CURIE:** [`coremeta4cat:crystallisation_solvents`](https://w3id.org/nfdi4cat/coremeta4cat/crystallisation_solvents) -**Schema Reference:** [crystallisation_solvents](./elements/crystallisation_solvents.md) +**Schema Reference:** [crystallisation_solvents](./elements/slots/crystallisation_solvents.md)

- + 💡 Submit Term Feedback

@@ -3591,12 +3685,12 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:precipitation_agent`](https://w3id.org/nfdi4cat/catcore/precipitation_agent) +**CURIE:** [`coremeta4cat:precipitation_agent`](https://w3id.org/nfdi4cat/coremeta4cat/precipitation_agent) -**Schema Reference:** [precipitation_agent](./elements/precipitation_agent.md) +**Schema Reference:** [precipitation_agent](./elements/slots/precipitation_agent.md)

- + 💡 Submit Term Feedback

@@ -3610,14 +3704,14 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:crystallisation_duration`](https://w3id.org/nfdi4cat/catcore/crystallisation_duration) +**CURIE:** [`coremeta4cat:crystallisation_duration`](https://w3id.org/nfdi4cat/coremeta4cat/crystallisation_duration) -**Schema Reference:** [crystallisation_duration](./elements/crystallisation_duration.md) +**Schema Reference:** [crystallisation_duration](./elements/slots/crystallisation_duration.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -3631,12 +3725,12 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:purification_solvent`](https://w3id.org/nfdi4cat/catcore/purification_solvent) +**CURIE:** [`coremeta4cat:purification_solvent`](https://w3id.org/nfdi4cat/coremeta4cat/purification_solvent) -**Schema Reference:** [purification_solvent](./elements/purification_solvent.md) +**Schema Reference:** [purification_solvent](./elements/slots/purification_solvent.md)

- + 💡 Submit Term Feedback

@@ -3650,12 +3744,12 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:number_of_cycles`](https://w3id.org/nfdi4cat/catcore/number_of_cycles) +**CURIE:** [`coremeta4cat:number_of_cycles`](https://w3id.org/nfdi4cat/coremeta4cat/number_of_cycles) -**Schema Reference:** [number_of_cycles](./elements/number_of_cycles.md) +**Schema Reference:** [number_of_cycles](./elements/slots/number_of_cycles.md)

- + 💡 Submit Term Feedback

@@ -3669,14 +3763,14 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:temperature_ramp`](https://w3id.org/nfdi4cat/catcore/temperature_ramp) +**CURIE:** [`coremeta4cat:temperature_ramp`](https://w3id.org/nfdi4cat/coremeta4cat/temperature_ramp) -**Schema Reference:** [temperature_ramp](./elements/temperature_ramp.md) +**Schema Reference:** [temperature_ramp](./elements/slots/temperature_ramp.md) **Unit:** Cel/min

- + 💡 Submit Term Feedback

@@ -3690,12 +3784,12 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:atmosphere`](https://w3id.org/nfdi4cat/catcore/atmosphere) +**CURIE:** [`coremeta4cat:atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/atmosphere) -**Schema Reference:** [atmosphere](./elements/atmosphere.md) +**Schema Reference:** [atmosphere](./elements/slots/atmosphere.md)

- + 💡 Submit Term Feedback

@@ -3709,12 +3803,12 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_device`](https://w3id.org/nfdi4cat/catcore/drying_device) +**CURIE:** [`coremeta4cat:drying_device`](https://w3id.org/nfdi4cat/coremeta4cat/drying_device) -**Schema Reference:** [drying_device](./elements/drying_device.md) +**Schema Reference:** [drying_device](./elements/slots/drying_device.md)

- + 💡 Submit Term Feedback

@@ -3728,14 +3822,14 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_temperature`](https://w3id.org/nfdi4cat/catcore/drying_temperature) +**CURIE:** [`coremeta4cat:drying_temperature`](https://w3id.org/nfdi4cat/coremeta4cat/drying_temperature) -**Schema Reference:** [drying_temperature](./elements/drying_temperature.md) +**Schema Reference:** [drying_temperature](./elements/slots/drying_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -3749,14 +3843,14 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_time`](https://w3id.org/nfdi4cat/catcore/drying_time) +**CURIE:** [`coremeta4cat:drying_time`](https://w3id.org/nfdi4cat/coremeta4cat/drying_time) -**Schema Reference:** [drying_time](./elements/drying_time.md) +**Schema Reference:** [drying_time](./elements/slots/drying_time.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -3770,18 +3864,18 @@ chemistry routes, including crystallisation and purification steps. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:drying_atmosphere`](https://w3id.org/nfdi4cat/catcore/drying_atmosphere) +**CURIE:** [`coremeta4cat:drying_atmosphere`](https://w3id.org/nfdi4cat/coremeta4cat/drying_atmosphere) -**Schema Reference:** [drying_atmosphere](./elements/drying_atmosphere.md) +**Schema Reference:** [drying_atmosphere](./elements/slots/drying_atmosphere.md)

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

@@ -3792,9 +3886,9 @@ chemistry routes, including crystallisation and purification steps. **Description:** Catalyst preparation by exsolution: metal nanoparticles are grown on a perovskite oxide surface by reduction/oxidation cycling. -**CURIE:** [`catcore:ExsolutionSynthesis`](https://w3id.org/nfdi4cat/catcore/ExsolutionSynthesis) +**CURIE:** [`coremeta4cat:ExsolutionSynthesis`](https://w3id.org/nfdi4cat/coremeta4cat/ExsolutionSynthesis) -**Schema Reference:** [ExsolutionSynthesis](./elements/ExsolutionSynthesis.md) +**Schema Reference:** [ExsolutionSynthesis](./elements/classes/ExsolutionSynthesis.md) **Slots** @@ -3807,14 +3901,14 @@ a perovskite oxide surface by reduction/oxidation cycling. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000057`](https://w3id.org/nfdi4cat/voc4cat_0000057) +**CURIE:** [`VOC4CAT:0000057`](https://w3id.org/nfdi4cat/voc4cat_0000057) -**Schema Reference:** [calcination_initial_temperature](./elements/calcination_initial_temperature.md) +**Schema Reference:** [calcination_initial_temperature](./elements/slots/calcination_initial_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -3828,14 +3922,14 @@ a perovskite oxide surface by reduction/oxidation cycling. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000058`](https://w3id.org/nfdi4cat/voc4cat_0000058) +**CURIE:** [`VOC4CAT:0000058`](https://w3id.org/nfdi4cat/voc4cat_0000058) -**Schema Reference:** [calcination_final_temperature](./elements/calcination_final_temperature.md) +**Schema Reference:** [calcination_final_temperature](./elements/slots/calcination_final_temperature.md) **Unit:** Cel

- + 💡 Submit Term Feedback

@@ -3849,14 +3943,14 @@ a perovskite oxide surface by reduction/oxidation cycling. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000060`](https://w3id.org/nfdi4cat/voc4cat_0000060) +**CURIE:** [`VOC4CAT:0000060`](https://w3id.org/nfdi4cat/voc4cat_0000060) -**Schema Reference:** [calcination_dwelling_time](./elements/calcination_dwelling_time.md) +**Schema Reference:** [calcination_dwelling_time](./elements/slots/calcination_dwelling_time.md) **Unit:** h

- + 💡 Submit Term Feedback

@@ -3870,12 +3964,12 @@ a perovskite oxide surface by reduction/oxidation cycling. **Cardinality:** Optional, Multivalued -**CURIE:** [`catcore:number_of_cycles`](https://w3id.org/nfdi4cat/catcore/number_of_cycles) +**CURIE:** [`coremeta4cat:number_of_cycles`](https://w3id.org/nfdi4cat/coremeta4cat/number_of_cycles) -**Schema Reference:** [number_of_cycles](./elements/number_of_cycles.md) +**Schema Reference:** [number_of_cycles](./elements/slots/number_of_cycles.md)

- + 💡 Submit Term Feedback

@@ -3889,12 +3983,12 @@ a perovskite oxide surface by reduction/oxidation cycling. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000055`](https://w3id.org/nfdi4cat/voc4cat_0000055) +**CURIE:** [`VOC4CAT:0000055`](https://w3id.org/nfdi4cat/voc4cat_0000055) -**Schema Reference:** [calcination_gaseous_environment](./elements/calcination_gaseous_environment.md) +**Schema Reference:** [calcination_gaseous_environment](./elements/slots/calcination_gaseous_environment.md)

- + 💡 Submit Term Feedback

@@ -3908,14 +4002,14 @@ a perovskite oxide surface by reduction/oxidation cycling. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000059`](https://w3id.org/nfdi4cat/voc4cat_0000059) +**CURIE:** [`VOC4CAT:0000059`](https://w3id.org/nfdi4cat/voc4cat_0000059) -**Schema Reference:** [calcination_heating_rate](./elements/calcination_heating_rate.md) +**Schema Reference:** [calcination_heating_rate](./elements/slots/calcination_heating_rate.md) **Unit:** Cel/min

- + 💡 Submit Term Feedback

@@ -3929,120 +4023,26 @@ a perovskite oxide surface by reduction/oxidation cycling. **Cardinality:** Optional, Multivalued -**CURIE:** [`voc4cat:0000056`](https://w3id.org/nfdi4cat/voc4cat_0000056) +**CURIE:** [`VOC4CAT:0000056`](https://w3id.org/nfdi4cat/voc4cat_0000056) -**Schema Reference:** [calcination_gas_flow_rate](./elements/calcination_gas_flow_rate.md) +**Schema Reference:** [calcination_gas_flow_rate](./elements/slots/calcination_gas_flow_rate.md) **Unit:** mL/min

- - 💡 Submit Term Feedback - -

- -

- - 💡 Submit Term Feedback - -

- -

- - 💡 Submit Term Feedback - -

- -
-had output entity (Recommended, Multivalued) - -**Description:** The CatalystSample produced by this Synthesis. - -**Data Type:** CatalystSample - -**Cardinality:** Recommended, Multivalued - -**Schema Reference:** [had_output_entity](./elements/had_output_entity.md) - -**Data Type Class Details:** - -
-CatalystSample - -**Description:** A MaterialSample that is the product of a catalyst Synthesis. -The specific type of catalyst (e.g. heterogeneous, supported metal) -is expressed via rdf_type using a voc4cat term. - -**CURIE:** [`OBI:0000747`](http://purl.obolibrary.org/obo/OBI_0000747) - -**Schema Reference:** [CatalystSample](./elements/CatalystSample.md) - -

- - 💡 Submit Term Feedback - -

- -

- - 💡 Submit Term Feedback - -

- -
-had input entity (Required, Multivalued) - -**Description:** The Precursor(s) consumed during this Synthesis. - -**Data Type:** Precursor - -**Cardinality:** Required, Multivalued - -**Schema Reference:** [had_input_entity](./elements/had_input_entity.md) - -**Data Type Class Details:** - -
-Precursor - -**Description:** A MaterialSample that serves as input material in a catalyst Synthesis. -Precursors are consumed or transformed during the preparation process. - -**CURIE:** [`CHEBI:52717`](http://purl.obolibrary.org/obo/CHEBI_52717) - -**Schema Reference:** [Precursor](./elements/Precursor.md) - -**Slots** - -
-precursor quantity (Required, Multivalued) - -**Description:** Quantity of precursor used in synthesis. - -**Data Type:** float - -**Cardinality:** Required, Multivalued - -**CURIE:** [`catcore:precursor_quantity`](https://w3id.org/nfdi4cat/catcore/precursor_quantity) - -**Schema Reference:** [precursor_quantity](./elements/precursor_quantity.md) - -**Unit:** g - -

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

- + 💡 Submit Term Feedback

diff --git a/mkdocs.yml b/mkdocs.yml index 68b40cbcc..1fd3da74e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -12,7 +12,7 @@ theme: - navigation.instant - navigation.instant.progress - navigation.tracking -logo: /CoreMeta4Cat/images/CoreMeta4Cat_Picture.png + logo: /CoreMeta4Cat/images/CoreMeta4Cat_Picture.png # for adding extra css/js see https://www.mkdocs.org/user-guide/customizing-your-theme/ @@ -28,7 +28,7 @@ plugins: # - gen_pages.py # or any other name or path watch: - - src/catcore/schema + - src/coremeta4cat/schema nav: - Home: index.md @@ -47,14 +47,14 @@ nav: - Characterization: characterization.md - Synthesis: synthesis.md - Simulation: simulation.md - - Schema: elements/index.md + - Schema: elements/overview.md - About: about.md exclude_docs: | /templates-linkml/ extra_css: - - stylesheets/no-details-box.css + - stylesheets//no-details-box.css site_url: https://HendrikBorgelt.github.io/CoreMeta4Cat repo_url: https://github.com/HendrikBorgelt/CoreMeta4Cat @@ -73,3 +73,9 @@ markdown_extensions: - pymdownx.emoji: emoji_index: !!python/name:material.extensions.emoji.twemoji emoji_generator: !!python/name:material.extensions.emoji.to_svg + - pymdownx.superfences: + # make exceptions to highlighting of code: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:mermaid2.fence_mermaid_custom diff --git a/pyproject.toml b/pyproject.toml index e076ced17..2fde64898 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ requires = ["hatchling", "uv-dynamic-versioning"] build-backend = "hatchling.build" [project] -name = "catcore" +name = "coremeta4cat" description = "A metadata collection for catalysis related research" authors = [ {name = "Hendrik Borgelt", email = "hendrik.borgelt@tu-dortmund.de"}, @@ -22,7 +22,7 @@ dependencies = [ dev = [ "linkml>=1.9.3", "mkdocs-material>=8.2.8", - "mkdocs-mermaid2-plugin>=1.1.1", + "mkdocs-mermaid2-plugin>=1.2.3", "jupyter>=1.0.0", "mknotebooks>= 0.8.0", ] @@ -50,8 +50,8 @@ skip = [ "pyproject.toml", "uv.lock", "project/*", - "src/catcore/datamodel/catcore_pydantic.py", - "src/catcore/datamodel/catcore.py", + "src/coremeta4cat/datamodel/coremeta4cat_pydantic.py", + "src/coremeta4cat/datamodel/coremeta4cat.py", ] # Reminder: words have to be lowercased for the ignore-words-list @@ -67,6 +67,6 @@ extend-exclude = [ "uv.lock", "pyproject.toml", "project/*", - "src/catcore/datamodel/catcore_pydantic.py", - "src/catcore/datamodel/catcore.py", + "src/coremeta4cat/datamodel/coremeta4cat_pydantic.py", + "src/coremeta4cat/datamodel/coremeta4cat.py", ] diff --git a/2025-08-21_generate_metadata_collapsed.py b/scripts/2025-08-21_generate_metadata_collapsed.py similarity index 100% rename from 2025-08-21_generate_metadata_collapsed.py rename to scripts/2025-08-21_generate_metadata_collapsed.py diff --git a/catcore_converter(3).py b/scripts/catcore_converter.py similarity index 95% rename from catcore_converter(3).py rename to scripts/catcore_converter.py index cfde8acb4..2e1a3a625 100644 --- a/catcore_converter(3).py +++ b/scripts/catcore_converter.py @@ -2,15 +2,15 @@ from pathlib import Path from typing import List, Set, Optional -# catcore.yaml is loaded FIRST so its generic stubs (range: Plan, range: AgenticEntity) +# coremeta4cat.yaml is loaded FIRST so its generic stubs (range: Plan, range: AgenticEntity) # are overwritten by the specific ranges in the subprofile modules. MODULE_FILES = [ - "catcore.yaml", # load first: generic stubs get overwritten by subprofiles - "catcore_common.yaml", - "catcore_synthesis_ap.yaml", - "catcore_characterization_ap.yaml", - "catcore_reaction_ap.yaml", - "catcore_simulation_ap.yaml", + "coremeta4cat.yaml", # load first: generic stubs get overwritten by subprofiles + "coremeta4cat_common.yaml", + "coremeta4cat_synthesis_ap.yaml", + "coremeta4cat_characterization_ap.yaml", + "coremeta4cat_reaction_ap.yaml", + "coremeta4cat_simulation_ap.yaml", ] @@ -31,7 +31,7 @@ def merge_schemas(modules: List[dict]) -> dict: """ Merge all module dicts into one flat schema. Later modules win on key collision, so subprofile modules (loaded last) - correctly override the generic stubs in catcore.yaml (loaded first). + correctly override the generic stubs in coremeta4cat.yaml (loaded first). """ merged: dict = {"prefixes": {}, "classes": {}, "slots": {}, "enums": {}} @@ -201,7 +201,7 @@ def get_slot_cardinality(schema: dict, class_name: str, required = usage.get("required", slot_details.get("required", False)) recommended = usage.get("recommended", slot_details.get("recommended", False)) multivalued = usage.get("multivalued", slot_details.get("multivalued", False)) - parts = ["Required" if required else ("Recommended" if recommended else "Optional")] + parts = ["Mandatory" if required else ("Recommended" if recommended else "Optional")] if multivalued: parts.append("Multivalued") return ", ".join(parts) @@ -233,7 +233,7 @@ def format_class_markdown(schema: dict, class_name: str, level: int = 3, md += f"**Description:** {description}\n\n" if class_uri: md += f"**CURIE:** [`{class_uri}`]({expand_curie(schema, class_uri)})\n\n" - md += f"**Schema Reference:** [{class_name}](./elements/{class_name}.md)\n\n" + md += f"**Schema Reference:** [{class_name}](./elements/classes/{class_name}.md)\n\n" slots = get_all_class_slots(schema, class_name) if slots: @@ -243,7 +243,7 @@ def format_class_markdown(schema: dict, class_name: str, level: int = 3, md += format_slot_markdown(schema, slot_name, slot_details, level + 2, processed_classes.copy(), class_name) - md += (f"

\n \n \n' f" 💡 Submit Term Feedback\n \n

") @@ -275,7 +275,7 @@ def format_slot_markdown(schema: dict, slot_name: str, slot_details: dict, md += f"**Cardinality:** {striped}\n\n" if slot_uri: md += f"**CURIE:** [`{slot_uri}`]({expand_curie(schema, slot_uri)})\n\n" - md += f"**Schema Reference:** [{slot_name}](./elements/{slot_name}.md)\n\n" + md += f"**Schema Reference:** [{slot_name}](./elements/slots/{slot_name}.md)\n\n" if unit and unit.get("ucum_code"): md += f"**Unit:** {unit['ucum_code']}\n\n" @@ -291,7 +291,7 @@ def format_slot_markdown(schema: dict, slot_name: str, slot_details: dict, md += format_class_markdown(schema, subclass, level + 1, processed_classes, None) - md += (f"

\n \n \n' f" 💡 Submit Term Feedback\n \n

") @@ -352,7 +352,7 @@ def generate_markdown_for_main_class(schema: dict, main_class: str, output_file: if class_uri: md += f"**CURIE:** [`{class_uri}`]({class_uri})\n\n" - md += (f'') @@ -383,7 +383,7 @@ def generate_markdown_for_main_class(schema: dict, main_class: str, output_file: # ───────────────────────────────────────────────────────────────────────────── def main(schema_dir: str, output_dir: str = "."): - print(f"\nLoading CatCore modules from: {schema_dir}") + print(f"\nLoading CoreMeta4Cat modules from: {schema_dir}") schema = load_merged_schema(schema_dir) output_path = Path(output_dir) @@ -405,7 +405,7 @@ def main(schema_dir: str, output_dir: str = "."): if __name__ == "__main__": # ── Edit these two paths to match your local setup ────────────────────── - schema_dir = "./src/catcore/schema" - output_dir = "./docs" + schema_dir = "../src/coremeta4cat/schema" + output_dir = "../docs" # ──────────────────────────────────────────────────────────────────────── main(schema_dir, output_dir) diff --git a/src/catcore/__init__.py b/src/coremeta4cat/__init__.py similarity index 100% rename from src/catcore/__init__.py rename to src/coremeta4cat/__init__.py diff --git a/src/catcore/_version.py b/src/coremeta4cat/_version.py similarity index 100% rename from src/catcore/_version.py rename to src/coremeta4cat/_version.py diff --git a/src/catcore/datamodel/__init__.py b/src/coremeta4cat/datamodel/__init__.py similarity index 100% rename from src/catcore/datamodel/__init__.py rename to src/coremeta4cat/datamodel/__init__.py diff --git a/src/catcore/datamodel/catcore.py b/src/coremeta4cat/datamodel/catcore.py similarity index 99% rename from src/catcore/datamodel/catcore.py rename to src/coremeta4cat/datamodel/catcore.py index 51f940969..b0b656e3c 100644 --- a/src/catcore/datamodel/catcore.py +++ b/src/coremeta4cat/datamodel/catcore.py @@ -1,5 +1,5 @@ # Auto generated from catcore.yaml by pythongen.py version: 0.0.1 -# Generation date: 2026-03-04T22:31:48 +# Generation date: 2026-03-09T16:03:37 # Schema: catcore-metadata # # id: https://w3id.org/nfdi4cat/catcore @@ -152,8 +152,7 @@ CHEMDCATAP = CurieNamespace('chemdcatap', 'https://nfdi-de.github.io/chem-dcat-ap/') DCAT = CurieNamespace('dcat', 'http://www.w3.org/ns/dcat#') DCATAP = CurieNamespace('dcatap', 'http://data.europa.eu/r5r/') -DCATAP_PLUS = CurieNamespace('dcatap_plus', 'https://w3id.org/nfdi-de/dcat-ap-plus/') -DCATAPPLUS = CurieNamespace('dcatapplus', 'https://nfdi-de.github.io/dcat-ap-plus/') +DCATAPPLUS = CurieNamespace('dcatapplus', 'https://w3id.org/nfdi-de/dcat-ap-plus/') DCTERMS = CurieNamespace('dcterms', 'http://purl.org/dc/terms/') ELI = CurieNamespace('eli', 'http://data.europa.eu/eli/ontology#') EPOS = CurieNamespace('epos', 'https://www.epos-eu.org/epos-dcat-ap#') @@ -1334,8 +1333,8 @@ class ClassifierMixin(YAMLRoot): """ _inherited_slots: ClassVar[list[str]] = [] - class_class_uri: ClassVar[URIRef] = DCATAP_PLUS["ClassifierMixin"] - class_class_curie: ClassVar[str] = "dcatap_plus:ClassifierMixin" + class_class_uri: ClassVar[URIRef] = DCATAPPLUS["ClassifierMixin"] + class_class_curie: ClassVar[str] = "dcatapplus:ClassifierMixin" class_name: ClassVar[str] = "ClassifierMixin" class_model_uri: ClassVar[URIRef] = CATCORE.ClassifierMixin @@ -6546,8 +6545,8 @@ class SupportiveEntity(YAMLRoot): """ _inherited_slots: ClassVar[list[str]] = [] - class_class_uri: ClassVar[URIRef] = DCATAP_PLUS["SupportiveEntity"] - class_class_curie: ClassVar[str] = "dcatap_plus:SupportiveEntity" + class_class_uri: ClassVar[URIRef] = DCATAPPLUS["SupportiveEntity"] + class_class_curie: ClassVar[str] = "dcatapplus:SupportiveEntity" class_name: ClassVar[str] = "SupportiveEntity" class_model_uri: ClassVar[URIRef] = CATCORE.SupportiveEntity @@ -9606,7 +9605,7 @@ class slots: slots.homepage = Slot(uri=FOAF.homepage, name="homepage", curie=FOAF.curie('homepage'), model_uri=CATCORE.homepage, domain=None, range=Optional[str]) -slots.id = Slot(uri=DCATAP_PLUS.id, name="id", curie=DCATAP_PLUS.curie('id'), +slots.id = Slot(uri=DCATAPPLUS.id, name="id", curie=DCATAPPLUS.curie('id'), model_uri=CATCORE.id, domain=None, range=URIRef) slots.identifier = Slot(uri=DCTERMS.identifier, name="identifier", curie=DCTERMS.curie('identifier'), diff --git a/src/catcore/datamodel/catcore_pydantic.py b/src/coremeta4cat/datamodel/catcore_pydantic.py similarity index 99% rename from src/catcore/datamodel/catcore_pydantic.py rename to src/coremeta4cat/datamodel/catcore_pydantic.py index 40c936963..b4ae68cc4 100644 --- a/src/catcore/datamodel/catcore_pydantic.py +++ b/src/coremeta4cat/datamodel/catcore_pydantic.py @@ -199,7 +199,7 @@ def __contains__(self, key:str) -> bool: 'dcat': {'prefix_prefix': 'dcat', 'prefix_reference': 'http://www.w3.org/ns/dcat#'}, 'dcatapplus': {'prefix_prefix': 'dcatapplus', - 'prefix_reference': 'https://nfdi-de.github.io/dcat-ap-plus/'}, + 'prefix_reference': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}, 'dcterms': {'prefix_prefix': 'dcterms', 'prefix_reference': 'http://purl.org/dc/terms/'}, 'linkml': {'prefix_prefix': 'linkml', diff --git a/src/coremeta4cat/datamodel/coremeta4cat.py b/src/coremeta4cat/datamodel/coremeta4cat.py new file mode 100644 index 000000000..6d12f2006 --- /dev/null +++ b/src/coremeta4cat/datamodel/coremeta4cat.py @@ -0,0 +1,10446 @@ +# Auto generated from coremeta4cat.yaml by pythongen.py version: 0.0.1 +# Generation date: 2026-03-09T17:19:45 +# Schema: coremeta4cat-metadata +# +# id: https://w3id.org/nfdi4cat/coremeta4cat +# description: The CoreMeta4Cat describes the minimum information which must be reported with research +# data concerning the field of catalysis. This guideline helps to handle and +# standardize data based on the FAIR principle (Findable, Accessible, Interoperable, +# Reusable). +# +# Architecture +# ------------ +# CoreMeta4Cat follows the DCAT-AP-PLUS design patterns (see design-patterns.md): +# +# - The entry point is the dcat:Dataset, extended here as CatalysisDataset. +# The catalysis research field is expressed via rdf_type (ClassifierMixin, +# Pattern 3) using voc4cat terms — analogous to how NMRSpectroscopy uses +# rdf_type: CHMO:0000613 to classify the measurement type. +# +# - The four CoreMeta4Cat pillars are modelled as DCAT-AP-PLUS Activity subclasses, +# following the same pattern as NMRSpectroscopy (is_a: DataGeneratingActivity): +# +# Synthesis --> is_a: DataGeneratingActivity +# Produces a catalyst (MaterialSample) as had_output_entity. +# The PreparationMethod (protocol) is linked via realized_plan. +# +# Characterization --> is_a: DataGeneratingActivity +# Produces measurement data about a catalyst or reaction. +# The catalyst/sample is the evaluated_entity. +# The CharacterizationTechnique is linked via realized_plan. +# +# Reaction --> is_a: EvaluatedActivity +# The catalytic process being studied, NOT a data-generating +# activity itself. Characterization datasets are about this. +# Analogous to the reaction being observed in a reaction +# monitoring dataset. +# +# Simulation --> is_a: DataGeneratingActivity +# Generates computational data about a catalyst or reaction. +# The SimulationMethod (protocol) is linked via realized_plan. +# The simulation software is carried_out_by: Software. +# +# - Catalyst samples and precursor materials are modelled as MaterialSample +# (from material_entities_ap), which is an EvaluatedEntity. +# +# - Reactors and instruments are modelled as Device (from dcat_ap_plus), which +# is an AgenticEntity carried_out_by the relevant Activity. +# +# - PreparationMethod, CharacterizationTechnique, and SimulationMethod are +# modelled as Plan (from dcat_ap_plus), the protocol realized by the Activity. +# +# This file is the top-level aggregator. It imports coremeta4cat_common (shared +# slots and enums) and the four subprofile modules. +# +# Full import hierarchy: +# coremeta4cat.yaml (this file — aggregator + CatalysisDataset entry point) +# +-- coremeta4cat_common.yaml (shared slots, enums) +# +-- chem_dcat_ap (SubstanceSample, ChemicalSubstance, …) +# +-- chemical_reaction_ap +# +-- chemical_entities_ap +# +-- material_entities_ap +# +-- dcat_ap_plus (DCAT-AP-PLUS base) +# +-- coremeta4cat_synthesis_ap (Step 3 — Synthesis, PreparationMethod, mixins) +# +-- coremeta4cat_characterization_ap (Step 4 — Characterization, 24 techniques, mixins) +# +-- coremeta4cat_reaction_ap (Step 5 — Reaction, 8 ReactorDesignTypes) +# +-- coremeta4cat_simulation_ap (Step 6 — Simulation, 4 methods, 12 properties, mixins) +# license: CC-BY-4.0 + +import dataclasses +import re +from dataclasses import dataclass +from datetime import ( + date, + datetime, + time +) +from typing import ( + Any, + ClassVar, + Dict, + List, + Optional, + Union +) + +from jsonasobj2 import ( + JsonObj, + as_dict +) +from linkml_runtime.linkml_model.meta import ( + EnumDefinition, + PermissibleValue, + PvFormulaOptions +) +from linkml_runtime.utils.curienamespace import CurieNamespace +from linkml_runtime.utils.enumerations import EnumDefinitionImpl +from linkml_runtime.utils.formatutils import ( + camelcase, + sfx, + underscore +) +from linkml_runtime.utils.metamodelcore import ( + bnode, + empty_dict, + empty_list +) +from linkml_runtime.utils.slot import Slot +from linkml_runtime.utils.yamlutils import ( + YAMLRoot, + extended_float, + extended_int, + extended_str +) +from rdflib import ( + Namespace, + URIRef +) + +from linkml_runtime.linkml_model.types import Boolean, Date, Decimal, Float, Integer, String, Uriorcurie +from linkml_runtime.utils.metamodelcore import Bool, Decimal, URIorCURIE, XSDDate + +metamodel_version = "1.7.0" +version = "1.0.0" + +# Namespaces +AFE = CurieNamespace('AFE', 'http://purl.allotrope.org/ontologies/equipment#AFE_') +AFP = CurieNamespace('AFP', 'http://purl.allotrope.org/ontologies/process#AFP_') +AFQ = CurieNamespace('AFQ', 'http://purl.allotrope.org/ontologies/quality#AFQ_') +AFR = CurieNamespace('AFR', 'http://purl.allotrope.org/ontologies/result#AFR_') +AFRL = CurieNamespace('AFRL', 'http://purl.allotrope.org/ontologies/role#AFRL_') +AFX = CurieNamespace('AFX', 'http://purl.allotrope.org/ontologies/property#AFX_') +APOLLO_SV = CurieNamespace('APOLLO_SV', 'http://purl.obolibrary.org/obo/APOLLO_SV_') +BFO = CurieNamespace('BFO', 'http://purl.obolibrary.org/obo/BFO_') +CHEBI = CurieNamespace('CHEBI', 'http://purl.obolibrary.org/obo/CHEBI_') +CHEMINF = CurieNamespace('CHEMINF', 'http://semanticscience.org/resource/CHEMINF_') +CHMO = CurieNamespace('CHMO', 'http://purl.obolibrary.org/obo/CHMO_') +EDAM = CurieNamespace('EDAM', 'http://edamontology.org/data_') +ENVO = CurieNamespace('ENVO', 'http://purl.obolibrary.org/obo/ENVO_') +IAO = CurieNamespace('IAO', 'http://purl.obolibrary.org/obo/IAO_') +MOP = CurieNamespace('MOP', 'http://purl.obolibrary.org/obo/MOP_') +NCIT = CurieNamespace('NCIT', 'http://purl.obolibrary.org/obo/NCIT_') +OBI = CurieNamespace('OBI', 'http://purl.obolibrary.org/obo/OBI_') +PATO = CurieNamespace('PATO', 'http://purl.obolibrary.org/obo/PATO_') +PROCO = CurieNamespace('PROCO', 'http://purl.obolibrary.org/obo/PROCO_') +REX = CurieNamespace('REX', 'http://purl.obolibrary.org/obo/REX_') +RO = CurieNamespace('RO', 'http://purl.obolibrary.org/obo/RO_') +RXNO = CurieNamespace('RXNO', 'http://purl.obolibrary.org/obo/RXNO_') +SIO = CurieNamespace('SIO', 'http://semanticscience.org/resource/SIO_') +VOC4CAT = CurieNamespace('VOC4CAT', 'https://w3id.org/nfdi4cat/voc4cat_') +ADMS = CurieNamespace('adms', 'http://www.w3.org/ns/adms#') +CHEMDCATAP = CurieNamespace('chemdcatap', 'https://nfdi-de.github.io/chem-dcat-ap/') +COREMETA4CAT = CurieNamespace('coremeta4cat', 'https://w3id.org/nfdi4cat/coremeta4cat/') +DCAT = CurieNamespace('dcat', 'http://www.w3.org/ns/dcat#') +DCATAP = CurieNamespace('dcatap', 'http://data.europa.eu/r5r/') +DCATAPPLUS = CurieNamespace('dcatapplus', 'https://w3id.org/nfdi-de/dcat-ap-plus/') +DCTERMS = CurieNamespace('dcterms', 'http://purl.org/dc/terms/') +ELI = CurieNamespace('eli', 'http://data.europa.eu/eli/ontology#') +EPOS = CurieNamespace('epos', 'https://www.epos-eu.org/epos-dcat-ap#') +FOAF = CurieNamespace('foaf', 'http://xmlns.com/foaf/0.1/') +LINKML = CurieNamespace('linkml', 'https://w3id.org/linkml/') +LOCN = CurieNamespace('locn', 'http://www.w3.org/ns/locn#') +MATERIAL_ENTITIES_AP = CurieNamespace('material_entities_ap', 'https://nfdi-de.github.io/chem-dcat-ap/material_entities_ap.yaml#') +ODRL = CurieNamespace('odrl', 'http://www.w3.org/ns/odrl/2/') +PROV = CurieNamespace('prov', 'http://www.w3.org/ns/prov#') +QUDT = CurieNamespace('qudt', 'http://qudt.org/schema/qudt/') +RDF = CurieNamespace('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#') +RDFS = CurieNamespace('rdfs', 'http://www.w3.org/2000/01/rdf-schema#') +SCHEMA = CurieNamespace('schema', 'http://schema.org/') +SKOS = CurieNamespace('skos', 'http://www.w3.org/2004/02/skos/core#') +SPDX = CurieNamespace('spdx', 'http://spdx.org/rdf/terms#') +TIME = CurieNamespace('time', 'http://www.w3.org/2006/time#') +VCARD = CurieNamespace('vcard', 'http://www.w3.org/2006/vcard/ns#') +XSD = CurieNamespace('xsd', 'http://www.w3.org/2001/XMLSchema#') +DEFAULT_ = COREMETA4CAT + + +# Types +class Duration(str): + """ The datatype that represents durations of time. """ + type_class_uri = XSD["duration"] + type_class_curie = "xsd:duration" + type_name = "duration" + type_model_uri = COREMETA4CAT.Duration + + +class HexBinary(str): + """ The datatype that represents arbitrary hex-encoded binary data. """ + type_class_uri = XSD["hexBinary"] + type_class_curie = "xsd:hexBinary" + type_name = "hexBinary" + type_model_uri = COREMETA4CAT.HexBinary + + +class NonNegativeInteger(int): + """ The datatype that represents non-negative integers. """ + type_class_uri = XSD["nonNegativeInteger"] + type_class_curie = "xsd:nonNegativeInteger" + type_name = "nonNegativeInteger" + type_model_uri = COREMETA4CAT.NonNegativeInteger + + +# Class references +class ActivityId(URIorCURIE): + pass + + +class AgenticEntityId(URIorCURIE): + pass + + +class DataGeneratingActivityId(ActivityId): + pass + + +class SynthesisId(DataGeneratingActivityId): + pass + + +class CharacterizationId(DataGeneratingActivityId): + pass + + +class SimulationId(DataGeneratingActivityId): + pass + + +class DataAnalysisId(DataGeneratingActivityId): + pass + + +class DatasetId(URIorCURIE): + pass + + +class CatalysisDatasetId(DatasetId): + pass + + +class AnalysisDatasetId(DatasetId): + pass + + +class DefinedTermId(URIorCURIE): + pass + + +class DeviceId(AgenticEntityId): + pass + + +class ReactorDesignTypeId(DeviceId): + pass + + +class ElectrochemicalReactorId(ReactorDesignTypeId): + pass + + +class CSTRId(ReactorDesignTypeId): + pass + + +class PlugFlowReactorId(ReactorDesignTypeId): + pass + + +class AutoclaveId(ReactorDesignTypeId): + pass + + +class SlurryReactorId(ReactorDesignTypeId): + pass + + +class MicroreactorId(ReactorDesignTypeId): + pass + + +class FixedBedReactorId(ReactorDesignTypeId): + pass + + +class FluidizedBedReactorId(ReactorDesignTypeId): + pass + + +class EntityId(URIorCURIE): + pass + + +class EvaluatedActivityId(ActivityId): + pass + + +class ReactionId(EvaluatedActivityId): + pass + + +class EvaluatedEntityId(EntityId): + pass + + +class AnalysisSourceDataId(EvaluatedEntityId): + pass + + +class SoftwareId(AgenticEntityId): + pass + + +class DocumentId(URIorCURIE): + pass + + +class LegalResourceId(URIorCURIE): + pass + + +class LicenseDocumentId(URIorCURIE): + pass + + +class ResourceId(URIorCURIE): + pass + + +class ChemicalReactionId(ActivityId): + pass + + +class DissolvingSubstanceId(AgenticEntityId): + pass + + +class CatalystId(AgenticEntityId): + pass + + +class ReactorId(DeviceId): + pass + + +class MaterialEntityId(EntityId): + pass + + +class ChemicalEntityId(MaterialEntityId): + pass + + +class AtomId(ChemicalEntityId): + pass + + +class ChemicalSubstanceId(MaterialEntityId): + pass + + +class PolymerId(ChemicalSubstanceId): + pass + + +class StartingMaterialId(ChemicalSubstanceId): + pass + + +class ReagentId(ChemicalSubstanceId): + pass + + +class ChemicalProductId(ChemicalSubstanceId): + pass + + +class MaterialSampleId(EvaluatedEntityId): + pass + + +class PrecursorId(MaterialSampleId): + pass + + +class CatalystSampleId(MaterialSampleId): + pass + + +class SubstanceSampleId(MaterialSampleId): + pass + + +class PolymerSampleId(SubstanceSampleId): + pass + + +@dataclass(repr=False) +class DryingMixin(YAMLRoot): + """ + Mixin providing drying step parameters. Used by preparation methods that + include a drying step after synthesis or precipitation + (Impregnation, CoPrecipitation, DepositionPrecipitation, + SonochemicalSynthesis, MolecularSynthesis). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["DryingMixin"] + class_class_curie: ClassVar[str] = "coremeta4cat:DryingMixin" + class_name: ClassVar[str] = "DryingMixin" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.DryingMixin + + drying_device: Optional[Union[str, list[str]]] = empty_list() + drying_temperature: Optional[Union[float, list[float]]] = empty_list() + drying_time: Optional[Union[float, list[float]]] = empty_list() + drying_atmosphere: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.drying_device, list): + self.drying_device = [self.drying_device] if self.drying_device is not None else [] + self.drying_device = [v if isinstance(v, str) else str(v) for v in self.drying_device] + + if not isinstance(self.drying_temperature, list): + self.drying_temperature = [self.drying_temperature] if self.drying_temperature is not None else [] + self.drying_temperature = [v if isinstance(v, float) else float(v) for v in self.drying_temperature] + + if not isinstance(self.drying_time, list): + self.drying_time = [self.drying_time] if self.drying_time is not None else [] + self.drying_time = [v if isinstance(v, float) else float(v) for v in self.drying_time] + + if not isinstance(self.drying_atmosphere, list): + self.drying_atmosphere = [self.drying_atmosphere] if self.drying_atmosphere is not None else [] + self.drying_atmosphere = [v if isinstance(v, str) else str(v) for v in self.drying_atmosphere] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class CalcinationMixin(YAMLRoot): + """ + Mixin providing calcination step parameters. Used by preparation methods + that include a thermal calcination step + (Impregnation, CoPrecipitation, DepositionPrecipitation, + SonochemicalSynthesis, ExsolutionSynthesis). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["CalcinationMixin"] + class_class_curie: ClassVar[str] = "coremeta4cat:CalcinationMixin" + class_name: ClassVar[str] = "CalcinationMixin" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.CalcinationMixin + + calcination_initial_temperature: Optional[Union[float, list[float]]] = empty_list() + calcination_final_temperature: Optional[Union[float, list[float]]] = empty_list() + calcination_dwelling_time: Optional[Union[float, list[float]]] = empty_list() + number_of_cycles: Optional[Union[int, list[int]]] = empty_list() + calcination_gaseous_environment: Optional[Union[str, list[str]]] = empty_list() + calcination_heating_rate: Optional[Union[float, list[float]]] = empty_list() + calcination_gas_flow_rate: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.calcination_initial_temperature, list): + self.calcination_initial_temperature = [self.calcination_initial_temperature] if self.calcination_initial_temperature is not None else [] + self.calcination_initial_temperature = [v if isinstance(v, float) else float(v) for v in self.calcination_initial_temperature] + + if not isinstance(self.calcination_final_temperature, list): + self.calcination_final_temperature = [self.calcination_final_temperature] if self.calcination_final_temperature is not None else [] + self.calcination_final_temperature = [v if isinstance(v, float) else float(v) for v in self.calcination_final_temperature] + + if not isinstance(self.calcination_dwelling_time, list): + self.calcination_dwelling_time = [self.calcination_dwelling_time] if self.calcination_dwelling_time is not None else [] + self.calcination_dwelling_time = [v if isinstance(v, float) else float(v) for v in self.calcination_dwelling_time] + + if not isinstance(self.number_of_cycles, list): + self.number_of_cycles = [self.number_of_cycles] if self.number_of_cycles is not None else [] + self.number_of_cycles = [v if isinstance(v, int) else int(v) for v in self.number_of_cycles] + + if not isinstance(self.calcination_gaseous_environment, list): + self.calcination_gaseous_environment = [self.calcination_gaseous_environment] if self.calcination_gaseous_environment is not None else [] + self.calcination_gaseous_environment = [v if isinstance(v, str) else str(v) for v in self.calcination_gaseous_environment] + + if not isinstance(self.calcination_heating_rate, list): + self.calcination_heating_rate = [self.calcination_heating_rate] if self.calcination_heating_rate is not None else [] + self.calcination_heating_rate = [v if isinstance(v, float) else float(v) for v in self.calcination_heating_rate] + + if not isinstance(self.calcination_gas_flow_rate, list): + self.calcination_gas_flow_rate = [self.calcination_gas_flow_rate] if self.calcination_gas_flow_rate is not None else [] + self.calcination_gas_flow_rate = [v if isinstance(v, float) else float(v) for v in self.calcination_gas_flow_rate] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class PrecipitationMixin(YAMLRoot): + """ + Mixin providing precipitation and wet-chemistry step parameters. Used by + preparation methods based on precipitation from solution + (CoPrecipitation, DepositionPrecipitation). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["PrecipitationMixin"] + class_class_curie: ClassVar[str] = "coremeta4cat:PrecipitationMixin" + class_name: ClassVar[str] = "PrecipitationMixin" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.PrecipitationMixin + + precipitating_agent: Optional[Union[str, list[str]]] = empty_list() + precipitating_concentration: Optional[Union[float, list[float]]] = empty_list() + synthesis_ph: Optional[Union[float, list[float]]] = empty_list() + mixing_rate: Optional[Union[float, list[float]]] = empty_list() + mixing_time: Optional[Union[float, list[float]]] = empty_list() + mixing_temperature: Optional[Union[float, list[float]]] = empty_list() + order_of_addition: Optional[Union[str, list[str]]] = empty_list() + filtration: Optional[Union[str, list[str]]] = empty_list() + purification: Optional[Union[str, list[str]]] = empty_list() + aging_temperature: Optional[Union[float, list[float]]] = empty_list() + aging_time: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.precipitating_agent, list): + self.precipitating_agent = [self.precipitating_agent] if self.precipitating_agent is not None else [] + self.precipitating_agent = [v if isinstance(v, str) else str(v) for v in self.precipitating_agent] + + if not isinstance(self.precipitating_concentration, list): + self.precipitating_concentration = [self.precipitating_concentration] if self.precipitating_concentration is not None else [] + self.precipitating_concentration = [v if isinstance(v, float) else float(v) for v in self.precipitating_concentration] + + if not isinstance(self.synthesis_ph, list): + self.synthesis_ph = [self.synthesis_ph] if self.synthesis_ph is not None else [] + self.synthesis_ph = [v if isinstance(v, float) else float(v) for v in self.synthesis_ph] + + if not isinstance(self.mixing_rate, list): + self.mixing_rate = [self.mixing_rate] if self.mixing_rate is not None else [] + self.mixing_rate = [v if isinstance(v, float) else float(v) for v in self.mixing_rate] + + if not isinstance(self.mixing_time, list): + self.mixing_time = [self.mixing_time] if self.mixing_time is not None else [] + self.mixing_time = [v if isinstance(v, float) else float(v) for v in self.mixing_time] + + if not isinstance(self.mixing_temperature, list): + self.mixing_temperature = [self.mixing_temperature] if self.mixing_temperature is not None else [] + self.mixing_temperature = [v if isinstance(v, float) else float(v) for v in self.mixing_temperature] + + if not isinstance(self.order_of_addition, list): + self.order_of_addition = [self.order_of_addition] if self.order_of_addition is not None else [] + self.order_of_addition = [v if isinstance(v, str) else str(v) for v in self.order_of_addition] + + if not isinstance(self.filtration, list): + self.filtration = [self.filtration] if self.filtration is not None else [] + self.filtration = [v if isinstance(v, str) else str(v) for v in self.filtration] + + if not isinstance(self.purification, list): + self.purification = [self.purification] if self.purification is not None else [] + self.purification = [v if isinstance(v, str) else str(v) for v in self.purification] + + if not isinstance(self.aging_temperature, list): + self.aging_temperature = [self.aging_temperature] if self.aging_temperature is not None else [] + self.aging_temperature = [v if isinstance(v, float) else float(v) for v in self.aging_temperature] + + if not isinstance(self.aging_time, list): + self.aging_time = [self.aging_time] if self.aging_time is not None else [] + self.aging_time = [v if isinstance(v, float) else float(v) for v in self.aging_time] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ThermalSynthesisMixin(YAMLRoot): + """ + Mixin providing thermal process parameters common to synthesis methods + carried out at elevated temperature in a closed vessel or reactor + (Solvothermal, PlasmaAssisted, CombustionSynthesis, + MicrowaveAssisted, MechanochemicalSynthesis, Sublimation). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["ThermalSynthesisMixin"] + class_class_curie: ClassVar[str] = "coremeta4cat:ThermalSynthesisMixin" + class_name: ClassVar[str] = "ThermalSynthesisMixin" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ThermalSynthesisMixin + + synthesis_temperature: Optional[Union[float, list[float]]] = empty_list() + synthesis_duration: Optional[Union[float, list[float]]] = empty_list() + equipment: Optional[Union[str, list[str]]] = empty_list() + vessel_type: Optional[Union[str, list[str]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.synthesis_temperature, list): + self.synthesis_temperature = [self.synthesis_temperature] if self.synthesis_temperature is not None else [] + self.synthesis_temperature = [v if isinstance(v, float) else float(v) for v in self.synthesis_temperature] + + if not isinstance(self.synthesis_duration, list): + self.synthesis_duration = [self.synthesis_duration] if self.synthesis_duration is not None else [] + self.synthesis_duration = [v if isinstance(v, float) else float(v) for v in self.synthesis_duration] + + if not isinstance(self.equipment, list): + self.equipment = [self.equipment] if self.equipment is not None else [] + self.equipment = [v if isinstance(v, str) else str(v) for v in self.equipment] + + if not isinstance(self.vessel_type, list): + self.vessel_type = [self.vessel_type] if self.vessel_type is not None else [] + self.vessel_type = [v if isinstance(v, str) else str(v) for v in self.vessel_type] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class XRaySourceMixin(YAMLRoot): + """ + Mixin providing X-ray source and monochromator slots, shared by all + X-ray based techniques (PowderXRD, XRayAbsorptionSpectroscopy, XPS, + SingleCrystalXRD). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["XRaySourceMixin"] + class_class_curie: ClassVar[str] = "coremeta4cat:XRaySourceMixin" + class_name: ClassVar[str] = "XRaySourceMixin" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.XRaySourceMixin + + xray_source: Optional[Union[str, list[str]]] = empty_list() + monochromator: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.xray_source, list): + self.xray_source = [self.xray_source] if self.xray_source is not None else [] + self.xray_source = [v if isinstance(v, str) else str(v) for v in self.xray_source] + + if not isinstance(self.monochromator, list): + self.monochromator = [self.monochromator] if self.monochromator is not None else [] + self.monochromator = [v if isinstance(v, str) else str(v) for v in self.monochromator] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class EnergyRangeMixin(YAMLRoot): + """ + Mixin providing energy scan range slots, shared by X-ray spectroscopy + techniques that scan over an energy range (XRayAbsorptionSpectroscopy, XPS). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["EnergyRangeMixin"] + class_class_curie: ClassVar[str] = "coremeta4cat:EnergyRangeMixin" + class_name: ClassVar[str] = "EnergyRangeMixin" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.EnergyRangeMixin + + minimum_energy: Optional[Union[float, list[float]]] = empty_list() + maximum_energy: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.minimum_energy, list): + self.minimum_energy = [self.minimum_energy] if self.minimum_energy is not None else [] + self.minimum_energy = [v if isinstance(v, float) else float(v) for v in self.minimum_energy] + + if not isinstance(self.maximum_energy, list): + self.maximum_energy = [self.maximum_energy] if self.maximum_energy is not None else [] + self.maximum_energy = [v if isinstance(v, float) else float(v) for v in self.maximum_energy] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ElectronMicroscopyMixin(YAMLRoot): + """ + Mixin providing electron gun and image parameters shared by electron + microscopy techniques (TransmissionElectronMicroscopy, + ScanningElectronMicroscopy). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["ElectronMicroscopyMixin"] + class_class_curie: ClassVar[str] = "coremeta4cat:ElectronMicroscopyMixin" + class_name: ClassVar[str] = "ElectronMicroscopyMixin" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ElectronMicroscopyMixin + + gun_type: Optional[Union[str, list[str]]] = empty_list() + acceleration_voltage: Optional[Union[float, list[float]]] = empty_list() + magnification_setting: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.gun_type, list): + self.gun_type = [self.gun_type] if self.gun_type is not None else [] + self.gun_type = [v if isinstance(v, str) else str(v) for v in self.gun_type] + + if not isinstance(self.acceleration_voltage, list): + self.acceleration_voltage = [self.acceleration_voltage] if self.acceleration_voltage is not None else [] + self.acceleration_voltage = [v if isinstance(v, float) else float(v) for v in self.acceleration_voltage] + + if not isinstance(self.magnification_setting, list): + self.magnification_setting = [self.magnification_setting] if self.magnification_setting is not None else [] + self.magnification_setting = [v if isinstance(v, float) else float(v) for v in self.magnification_setting] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class TemperatureProgramMixin(YAMLRoot): + """ + Mixin providing temperature-programme parameters shared by thermal + analysis and temperature-programmed reaction techniques + (Thermogravimetry, TPO, TPR). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["TemperatureProgramMixin"] + class_class_curie: ClassVar[str] = "coremeta4cat:TemperatureProgramMixin" + class_name: ClassVar[str] = "TemperatureProgramMixin" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.TemperatureProgramMixin + + minimum_temperature: Optional[Union[float, list[float]]] = empty_list() + maximum_temperature: Optional[Union[float, list[float]]] = empty_list() + heating_rate: Optional[Union[float, list[float]]] = empty_list() + heating_procedure: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.minimum_temperature, list): + self.minimum_temperature = [self.minimum_temperature] if self.minimum_temperature is not None else [] + self.minimum_temperature = [v if isinstance(v, float) else float(v) for v in self.minimum_temperature] + + if not isinstance(self.maximum_temperature, list): + self.maximum_temperature = [self.maximum_temperature] if self.maximum_temperature is not None else [] + self.maximum_temperature = [v if isinstance(v, float) else float(v) for v in self.maximum_temperature] + + if not isinstance(self.heating_rate, list): + self.heating_rate = [self.heating_rate] if self.heating_rate is not None else [] + self.heating_rate = [v if isinstance(v, float) else float(v) for v in self.heating_rate] + + if not isinstance(self.heating_procedure, list): + self.heating_procedure = [self.heating_procedure] if self.heating_procedure is not None else [] + self.heating_procedure = [v if isinstance(v, str) else str(v) for v in self.heating_procedure] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ChromatographyMixin(YAMLRoot): + """ + Mixin providing chromatographic separation parameters shared by + separation techniques (GCMS, SizeExclusionChromatography, HPLC_MS). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["ChromatographyMixin"] + class_class_curie: ClassVar[str] = "coremeta4cat:ChromatographyMixin" + class_name: ClassVar[str] = "ChromatographyMixin" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ChromatographyMixin + + column_type: Optional[Union[str, list[str]]] = empty_list() + eluent: Optional[Union[str, list[str]]] = empty_list() + flow_rate: Optional[Union[float, list[float]]] = empty_list() + injection_volume: Optional[Union[float, list[float]]] = empty_list() + external_standard: Optional[Union[str, list[str]]] = empty_list() + internal_standard: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.column_type, list): + self.column_type = [self.column_type] if self.column_type is not None else [] + self.column_type = [v if isinstance(v, str) else str(v) for v in self.column_type] + + if not isinstance(self.eluent, list): + self.eluent = [self.eluent] if self.eluent is not None else [] + self.eluent = [v if isinstance(v, str) else str(v) for v in self.eluent] + + if not isinstance(self.flow_rate, list): + self.flow_rate = [self.flow_rate] if self.flow_rate is not None else [] + self.flow_rate = [v if isinstance(v, float) else float(v) for v in self.flow_rate] + + if not isinstance(self.injection_volume, list): + self.injection_volume = [self.injection_volume] if self.injection_volume is not None else [] + self.injection_volume = [v if isinstance(v, float) else float(v) for v in self.injection_volume] + + if not isinstance(self.external_standard, list): + self.external_standard = [self.external_standard] if self.external_standard is not None else [] + self.external_standard = [v if isinstance(v, str) else str(v) for v in self.external_standard] + + if not isinstance(self.internal_standard, list): + self.internal_standard = [self.internal_standard] if self.internal_standard is not None else [] + self.internal_standard = [v if isinstance(v, str) else str(v) for v in self.internal_standard] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class MassRangeMixin(YAMLRoot): + """ + Mixin providing mass-to-charge scan range slots shared by mass + spectrometry techniques (GCMS, ESI_MS). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["MassRangeMixin"] + class_class_curie: ClassVar[str] = "coremeta4cat:MassRangeMixin" + class_name: ClassVar[str] = "MassRangeMixin" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.MassRangeMixin + + mz_minimum: Optional[Union[float, list[float]]] = empty_list() + mz_maximum: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.mz_minimum, list): + self.mz_minimum = [self.mz_minimum] if self.mz_minimum is not None else [] + self.mz_minimum = [v if isinstance(v, float) else float(v) for v in self.mz_minimum] + + if not isinstance(self.mz_maximum, list): + self.mz_maximum = [self.mz_maximum] if self.mz_maximum is not None else [] + self.mz_maximum = [v if isinstance(v, float) else float(v) for v in self.mz_maximum] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class PhotoluminescenceMixin(YAMLRoot): + """ + Mixin providing optical excitation/emission parameters shared by + photoluminescence techniques (PhotoluminescenceSpectroscopy, + PhotoluminescenceLifetime). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["PhotoluminescenceMixin"] + class_class_curie: ClassVar[str] = "coremeta4cat:PhotoluminescenceMixin" + class_name: ClassVar[str] = "PhotoluminescenceMixin" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.PhotoluminescenceMixin + + excitation_wavelength: Optional[Union[float, list[float]]] = empty_list() + emission_wavelength: Optional[Union[float, list[float]]] = empty_list() + optical_filter: Optional[Union[str, list[str]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.excitation_wavelength, list): + self.excitation_wavelength = [self.excitation_wavelength] if self.excitation_wavelength is not None else [] + self.excitation_wavelength = [v if isinstance(v, float) else float(v) for v in self.excitation_wavelength] + + if not isinstance(self.emission_wavelength, list): + self.emission_wavelength = [self.emission_wavelength] if self.emission_wavelength is not None else [] + self.emission_wavelength = [v if isinstance(v, float) else float(v) for v in self.emission_wavelength] + + if not isinstance(self.optical_filter, list): + self.optical_filter = [self.optical_filter] if self.optical_filter is not None else [] + self.optical_filter = [v if isinstance(v, str) else str(v) for v in self.optical_filter] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ElectrochemistryMixin(YAMLRoot): + """ + Mixin providing electrochemical cell parameters shared by + electrochemical characterization techniques (CyclicVoltammetry, + ConductivityMeasurement). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["ElectrochemistryMixin"] + class_class_curie: ClassVar[str] = "coremeta4cat:ElectrochemistryMixin" + class_name: ClassVar[str] = "ElectrochemistryMixin" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ElectrochemistryMixin + + reference_electrode: Optional[Union[str, list[str]]] = empty_list() + working_electrode: Optional[Union[str, list[str]]] = empty_list() + counter_electrode: Optional[Union[str, list[str]]] = empty_list() + electrolyte_composition: Optional[Union[str, list[str]]] = empty_list() + electrolyte_concentration: Optional[Union[float, list[float]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.reference_electrode, list): + self.reference_electrode = [self.reference_electrode] if self.reference_electrode is not None else [] + self.reference_electrode = [v if isinstance(v, str) else str(v) for v in self.reference_electrode] + + if not isinstance(self.working_electrode, list): + self.working_electrode = [self.working_electrode] if self.working_electrode is not None else [] + self.working_electrode = [v if isinstance(v, str) else str(v) for v in self.working_electrode] + + if not isinstance(self.counter_electrode, list): + self.counter_electrode = [self.counter_electrode] if self.counter_electrode is not None else [] + self.counter_electrode = [v if isinstance(v, str) else str(v) for v in self.counter_electrode] + + if not isinstance(self.electrolyte_composition, list): + self.electrolyte_composition = [self.electrolyte_composition] if self.electrolyte_composition is not None else [] + self.electrolyte_composition = [v if isinstance(v, str) else str(v) for v in self.electrolyte_composition] + + if not isinstance(self.electrolyte_concentration, list): + self.electrolyte_concentration = [self.electrolyte_concentration] if self.electrolyte_concentration is not None else [] + self.electrolyte_concentration = [v if isinstance(v, float) else float(v) for v in self.electrolyte_concentration] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class MaterialDescriptorMixin(YAMLRoot): + """ + Mixin providing material identity slots shared by CalculatedProperty + subclasses that target a specific material composition and crystal + structure (DielectricTensors, PhononDispersion, EquationsOfState, + AqueousStability, GrainBoundaries, ElectronicStructure, Ferroelectrics, + BandGap). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["MaterialDescriptorMixin"] + class_class_curie: ClassVar[str] = "coremeta4cat:MaterialDescriptorMixin" + class_name: ClassVar[str] = "MaterialDescriptorMixin" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.MaterialDescriptorMixin + + material_composition: Optional[Union[str, list[str]]] = empty_list() + crystal_structure: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.material_composition, list): + self.material_composition = [self.material_composition] if self.material_composition is not None else [] + self.material_composition = [v if isinstance(v, str) else str(v) for v in self.material_composition] + + if not isinstance(self.crystal_structure, list): + self.crystal_structure = [self.crystal_structure] if self.crystal_structure is not None else [] + self.crystal_structure = [v if isinstance(v, str) else str(v) for v in self.crystal_structure] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class DFTSettingsMixin(YAMLRoot): + """ + Mixin providing plane-wave DFT numerical settings shared by CalculatedProperty + subclasses that are computed with periodic DFT (DielectricTensors, + EquationsOfState, ElectronicStructure, BandGap). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["DFTSettingsMixin"] + class_class_curie: ClassVar[str] = "coremeta4cat:DFTSettingsMixin" + class_name: ClassVar[str] = "DFTSettingsMixin" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.DFTSettingsMixin + + energy_cutoff: Optional[Union[float, list[float]]] = empty_list() + convergence_criteria: Optional[Union[str, list[str]]] = empty_list() + k_point_mesh: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.energy_cutoff, list): + self.energy_cutoff = [self.energy_cutoff] if self.energy_cutoff is not None else [] + self.energy_cutoff = [v if isinstance(v, float) else float(v) for v in self.energy_cutoff] + + if not isinstance(self.convergence_criteria, list): + self.convergence_criteria = [self.convergence_criteria] if self.convergence_criteria is not None else [] + self.convergence_criteria = [v if isinstance(v, str) else str(v) for v in self.convergence_criteria] + + if not isinstance(self.k_point_mesh, list): + self.k_point_mesh = [self.k_point_mesh] if self.k_point_mesh is not None else [] + self.k_point_mesh = [v if isinstance(v, str) else str(v) for v in self.k_point_mesh] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Activity(YAMLRoot): + """ + See [DCAT-AP specs:Activity](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Activity) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Activity"] + class_class_curie: ClassVar[str] = "prov:Activity" + class_name: ClassVar[str] = "Activity" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Activity + + id: Union[str, ActivityId] = None + title: Optional[Union[str, list[str]]] = empty_list() + description: Optional[Union[str, list[str]]] = empty_list() + other_identifier: Optional[Union[Union[dict, "Identifier"], list[Union[dict, "Identifier"]]]] = empty_list() + has_part: Optional[Union[dict[Union[str, ActivityId], Union[dict, "Activity"]], list[Union[dict, "Activity"]]]] = empty_dict() + had_input_entity: Optional[Union[dict[Union[str, EntityId], Union[dict, "Entity"]], list[Union[dict, "Entity"]]]] = empty_dict() + had_output_entity: Optional[Union[dict[Union[str, EntityId], Union[dict, "Entity"]], list[Union[dict, "Entity"]]]] = empty_dict() + had_input_activity: Optional[Union[dict[Union[str, ActivityId], Union[dict, "Activity"]], list[Union[dict, "Activity"]]]] = empty_dict() + carried_out_by: Optional[Union[dict[Union[str, AgenticEntityId], Union[dict, "AgenticEntity"]], list[Union[dict, "AgenticEntity"]]]] = empty_dict() + has_qualitative_attribute: Optional[Union[Union[dict, "QualitativeAttribute"], list[Union[dict, "QualitativeAttribute"]]]] = empty_list() + has_quantitative_attribute: Optional[Union[Union[dict, "QuantitativeAttribute"], list[Union[dict, "QuantitativeAttribute"]]]] = empty_list() + part_of: Optional[Union[dict[Union[str, ActivityId], Union[dict, "Activity"]], list[Union[dict, "Activity"]]]] = empty_dict() + type: Optional[Union[dict, "DefinedTerm"]] = None + rdf_type: Optional[Union[dict, "DefinedTerm"]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, ActivityId): + self.id = ActivityId(self.id) + + if not isinstance(self.title, list): + self.title = [self.title] if self.title is not None else [] + self.title = [v if isinstance(v, str) else str(v) for v in self.title] + + if not isinstance(self.description, list): + self.description = [self.description] if self.description is not None else [] + self.description = [v if isinstance(v, str) else str(v) for v in self.description] + + if not isinstance(self.other_identifier, list): + self.other_identifier = [self.other_identifier] if self.other_identifier is not None else [] + self.other_identifier = [v if isinstance(v, Identifier) else Identifier(**as_dict(v)) for v in self.other_identifier] + + self._normalize_inlined_as_list(slot_name="has_part", slot_type=Activity, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="had_input_entity", slot_type=Entity, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="had_output_entity", slot_type=Entity, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="had_input_activity", slot_type=Activity, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="carried_out_by", slot_type=AgenticEntity, key_name="id", keyed=True) + + if not isinstance(self.has_qualitative_attribute, list): + self.has_qualitative_attribute = [self.has_qualitative_attribute] if self.has_qualitative_attribute is not None else [] + self.has_qualitative_attribute = [v if isinstance(v, QualitativeAttribute) else QualitativeAttribute(**as_dict(v)) for v in self.has_qualitative_attribute] + + if not isinstance(self.has_quantitative_attribute, list): + self.has_quantitative_attribute = [self.has_quantitative_attribute] if self.has_quantitative_attribute is not None else [] + self.has_quantitative_attribute = [v if isinstance(v, QuantitativeAttribute) else QuantitativeAttribute(**as_dict(v)) for v in self.has_quantitative_attribute] + + self._normalize_inlined_as_list(slot_name="part_of", slot_type=Activity, key_name="id", keyed=True) + + if self.type is not None and not isinstance(self.type, DefinedTerm): + self.type = DefinedTerm(**as_dict(self.type)) + + if self.rdf_type is not None and not isinstance(self.rdf_type, DefinedTerm): + self.rdf_type = DefinedTerm(**as_dict(self.rdf_type)) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Agent(YAMLRoot): + """ + See [DCAT-AP specs:Agent](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Agent) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = FOAF["Agent"] + class_class_curie: ClassVar[str] = "foaf:Agent" + class_name: ClassVar[str] = "Agent" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Agent + + name: Union[str, list[str]] = None + type: Optional[Union[dict, "Concept"]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.name): + self.MissingRequiredField("name") + if not isinstance(self.name, list): + self.name = [self.name] if self.name is not None else [] + self.name = [v if isinstance(v, str) else str(v) for v in self.name] + + if self.type is not None and not isinstance(self.type, Concept): + self.type = Concept(**as_dict(self.type)) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class AgenticEntity(YAMLRoot): + """ + An entity that is somehow responsible for an Activity to take place. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Agent"] + class_class_curie: ClassVar[str] = "prov:Agent" + class_name: ClassVar[str] = "AgenticEntity" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.AgenticEntity + + id: Union[str, AgenticEntityId] = None + title: Optional[str] = None + description: Optional[str] = None + other_identifier: Optional[Union[Union[dict, "Identifier"], list[Union[dict, "Identifier"]]]] = empty_list() + has_qualitative_attribute: Optional[Union[Union[dict, "QualitativeAttribute"], list[Union[dict, "QualitativeAttribute"]]]] = empty_list() + has_quantitative_attribute: Optional[Union[Union[dict, "QuantitativeAttribute"], list[Union[dict, "QuantitativeAttribute"]]]] = empty_list() + has_part: Optional[Union[dict[Union[str, AgenticEntityId], Union[dict, "AgenticEntity"]], list[Union[dict, "AgenticEntity"]]]] = empty_dict() + part_of: Optional[Union[dict[Union[str, AgenticEntityId], Union[dict, "AgenticEntity"]], list[Union[dict, "AgenticEntity"]]]] = empty_dict() + type: Optional[Union[dict, "DefinedTerm"]] = None + rdf_type: Optional[Union[dict, "DefinedTerm"]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, AgenticEntityId): + self.id = AgenticEntityId(self.id) + + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + if not isinstance(self.other_identifier, list): + self.other_identifier = [self.other_identifier] if self.other_identifier is not None else [] + self.other_identifier = [v if isinstance(v, Identifier) else Identifier(**as_dict(v)) for v in self.other_identifier] + + if not isinstance(self.has_qualitative_attribute, list): + self.has_qualitative_attribute = [self.has_qualitative_attribute] if self.has_qualitative_attribute is not None else [] + self.has_qualitative_attribute = [v if isinstance(v, QualitativeAttribute) else QualitativeAttribute(**as_dict(v)) for v in self.has_qualitative_attribute] + + if not isinstance(self.has_quantitative_attribute, list): + self.has_quantitative_attribute = [self.has_quantitative_attribute] if self.has_quantitative_attribute is not None else [] + self.has_quantitative_attribute = [v if isinstance(v, QuantitativeAttribute) else QuantitativeAttribute(**as_dict(v)) for v in self.has_quantitative_attribute] + + self._normalize_inlined_as_list(slot_name="has_part", slot_type=AgenticEntity, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="part_of", slot_type=AgenticEntity, key_name="id", keyed=True) + + if self.type is not None and not isinstance(self.type, DefinedTerm): + self.type = DefinedTerm(**as_dict(self.type)) + + if self.rdf_type is not None and not isinstance(self.rdf_type, DefinedTerm): + self.rdf_type = DefinedTerm(**as_dict(self.rdf_type)) + + super().__post_init__(**kwargs) + + +Any = Any + +@dataclass(repr=False) +class Catalogue(YAMLRoot): + """ + See [DCAT-AP specs:Catalogue](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Catalogue) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCAT["Catalog"] + class_class_curie: ClassVar[str] = "dcat:Catalog" + class_name: ClassVar[str] = "Catalogue" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Catalogue + + description: Union[str, list[str]] = None + publisher: Union[dict, Agent] = None + title: Union[str, list[str]] = None + applicable_legislation: Optional[Union[dict[Union[str, LegalResourceId], Union[dict, "LegalResource"]], list[Union[dict, "LegalResource"]]]] = empty_dict() + catalogue: Optional[Union[Union[dict, "Catalogue"], list[Union[dict, "Catalogue"]]]] = empty_list() + creator: Optional[Union[dict, Agent]] = None + geographical_coverage: Optional[Union[Union[dict, "Location"], list[Union[dict, "Location"]]]] = empty_list() + has_dataset: Optional[Union[dict[Union[str, DatasetId], Union[dict, "Dataset"]], list[Union[dict, "Dataset"]]]] = empty_dict() + has_part: Optional[Union[Union[dict, "Catalogue"], list[Union[dict, "Catalogue"]]]] = empty_list() + homepage: Optional[Union[dict, "Document"]] = None + language: Optional[Union[Union[dict, "LinguisticSystem"], list[Union[dict, "LinguisticSystem"]]]] = empty_list() + licence: Optional[Union[dict, "LicenseDocument"]] = None + modification_date: Optional[Union[str, XSDDate]] = None + record: Optional[Union[Union[dict, "CatalogueRecord"], list[Union[dict, "CatalogueRecord"]]]] = empty_list() + release_date: Optional[Union[str, XSDDate]] = None + rights: Optional[Union[dict, "RightsStatement"]] = None + service: Optional[Union[Union[dict, "DataService"], list[Union[dict, "DataService"]]]] = empty_list() + temporal_coverage: Optional[Union[Union[dict, "PeriodOfTime"], list[Union[dict, "PeriodOfTime"]]]] = empty_list() + themes: Optional[Union[Union[dict, "ConceptScheme"], list[Union[dict, "ConceptScheme"]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.description): + self.MissingRequiredField("description") + if not isinstance(self.description, list): + self.description = [self.description] if self.description is not None else [] + self.description = [v if isinstance(v, str) else str(v) for v in self.description] + + if self._is_empty(self.publisher): + self.MissingRequiredField("publisher") + if not isinstance(self.publisher, Agent): + self.publisher = Agent(**as_dict(self.publisher)) + + if self._is_empty(self.title): + self.MissingRequiredField("title") + if not isinstance(self.title, list): + self.title = [self.title] if self.title is not None else [] + self.title = [v if isinstance(v, str) else str(v) for v in self.title] + + self._normalize_inlined_as_list(slot_name="applicable_legislation", slot_type=LegalResource, key_name="id", keyed=True) + + if not isinstance(self.catalogue, list): + self.catalogue = [self.catalogue] if self.catalogue is not None else [] + self.catalogue = [v if isinstance(v, Catalogue) else Catalogue(**as_dict(v)) for v in self.catalogue] + + if self.creator is not None and not isinstance(self.creator, Agent): + self.creator = Agent(**as_dict(self.creator)) + + if not isinstance(self.geographical_coverage, list): + self.geographical_coverage = [self.geographical_coverage] if self.geographical_coverage is not None else [] + self.geographical_coverage = [v if isinstance(v, Location) else Location(**as_dict(v)) for v in self.geographical_coverage] + + self._normalize_inlined_as_list(slot_name="has_dataset", slot_type=Dataset, key_name="id", keyed=True) + + if not isinstance(self.has_part, list): + self.has_part = [self.has_part] if self.has_part is not None else [] + self.has_part = [v if isinstance(v, Catalogue) else Catalogue(**as_dict(v)) for v in self.has_part] + + if self.homepage is not None and not isinstance(self.homepage, Document): + self.homepage = Document(**as_dict(self.homepage)) + + if not isinstance(self.language, list): + self.language = [self.language] if self.language is not None else [] + self.language = [v if isinstance(v, LinguisticSystem) else LinguisticSystem(**as_dict(v)) for v in self.language] + + if self.licence is not None and not isinstance(self.licence, LicenseDocument): + self.licence = LicenseDocument(**as_dict(self.licence)) + + if self.modification_date is not None and not isinstance(self.modification_date, XSDDate): + self.modification_date = XSDDate(self.modification_date) + + if not isinstance(self.record, list): + self.record = [self.record] if self.record is not None else [] + self.record = [v if isinstance(v, CatalogueRecord) else CatalogueRecord(**as_dict(v)) for v in self.record] + + if self.release_date is not None and not isinstance(self.release_date, XSDDate): + self.release_date = XSDDate(self.release_date) + + if self.rights is not None and not isinstance(self.rights, RightsStatement): + self.rights = RightsStatement(**as_dict(self.rights)) + + if not isinstance(self.service, list): + self.service = [self.service] if self.service is not None else [] + self.service = [v if isinstance(v, DataService) else DataService(**as_dict(v)) for v in self.service] + + if not isinstance(self.temporal_coverage, list): + self.temporal_coverage = [self.temporal_coverage] if self.temporal_coverage is not None else [] + self.temporal_coverage = [v if isinstance(v, PeriodOfTime) else PeriodOfTime(**as_dict(v)) for v in self.temporal_coverage] + + if not isinstance(self.themes, list): + self.themes = [self.themes] if self.themes is not None else [] + self.themes = [v if isinstance(v, ConceptScheme) else ConceptScheme(**as_dict(v)) for v in self.themes] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class CatalogueRecord(YAMLRoot): + """ + See [DCAT-AP specs:CatalogueRecord](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#CatalogueRecord) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCAT["CatalogRecord"] + class_class_curie: ClassVar[str] = "dcat:CatalogRecord" + class_name: ClassVar[str] = "CatalogueRecord" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.CatalogueRecord + + modification_date: Union[str, XSDDate] = None + primary_topic: Union[dict, Any] = None + application_profile: Optional[Union[Union[dict, "Standard"], list[Union[dict, "Standard"]]]] = empty_list() + change_type: Optional[Union[dict, "Concept"]] = None + description: Optional[Union[str, list[str]]] = empty_list() + language: Optional[Union[Union[dict, "LinguisticSystem"], list[Union[dict, "LinguisticSystem"]]]] = empty_list() + listing_date: Optional[Union[str, XSDDate]] = None + source_metadata: Optional[Union[dict, "CatalogueRecord"]] = None + title: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.modification_date): + self.MissingRequiredField("modification_date") + if not isinstance(self.modification_date, XSDDate): + self.modification_date = XSDDate(self.modification_date) + + if not isinstance(self.application_profile, list): + self.application_profile = [self.application_profile] if self.application_profile is not None else [] + self.application_profile = [v if isinstance(v, Standard) else Standard(**as_dict(v)) for v in self.application_profile] + + if self.change_type is not None and not isinstance(self.change_type, Concept): + self.change_type = Concept(**as_dict(self.change_type)) + + if not isinstance(self.description, list): + self.description = [self.description] if self.description is not None else [] + self.description = [v if isinstance(v, str) else str(v) for v in self.description] + + if not isinstance(self.language, list): + self.language = [self.language] if self.language is not None else [] + self.language = [v if isinstance(v, LinguisticSystem) else LinguisticSystem(**as_dict(v)) for v in self.language] + + if self.listing_date is not None and not isinstance(self.listing_date, XSDDate): + self.listing_date = XSDDate(self.listing_date) + + if self.source_metadata is not None and not isinstance(self.source_metadata, CatalogueRecord): + self.source_metadata = CatalogueRecord(**as_dict(self.source_metadata)) + + if not isinstance(self.title, list): + self.title = [self.title] if self.title is not None else [] + self.title = [v if isinstance(v, str) else str(v) for v in self.title] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Checksum(YAMLRoot): + """ + See [DCAT-AP specs:Checksum](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Checksum) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = SPDX["Checksum"] + class_class_curie: ClassVar[str] = "spdx:Checksum" + class_name: ClassVar[str] = "Checksum" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Checksum + + algorithm: Union[dict, "ChecksumAlgorithm"] = None + checksum_value: str = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.algorithm): + self.MissingRequiredField("algorithm") + if not isinstance(self.algorithm, ChecksumAlgorithm): + self.algorithm = ChecksumAlgorithm(**as_dict(self.algorithm)) + + if self._is_empty(self.checksum_value): + self.MissingRequiredField("checksum_value") + if not isinstance(self.checksum_value, str): + self.checksum_value = str(self.checksum_value) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ClassifierMixin(YAMLRoot): + """ + A mixin with which an entity of this schema can be classified via an additional rdf:type or dcterms:type assertion. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCATAPPLUS["ClassifierMixin"] + class_class_curie: ClassVar[str] = "dcatapplus:ClassifierMixin" + class_name: ClassVar[str] = "ClassifierMixin" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ClassifierMixin + + type: Optional[Union[dict, "DefinedTerm"]] = None + rdf_type: Optional[Union[dict, "DefinedTerm"]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.type is not None and not isinstance(self.type, DefinedTerm): + self.type = DefinedTerm(**as_dict(self.type)) + + if self.rdf_type is not None and not isinstance(self.rdf_type, DefinedTerm): + self.rdf_type = DefinedTerm(**as_dict(self.rdf_type)) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class DataGeneratingActivity(Activity): + """ + An Activity (process) that has the objective to produce information (in form of a dataset) about another Activity + or Entity. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Activity"] + class_class_curie: ClassVar[str] = "prov:Activity" + class_name: ClassVar[str] = "DataGeneratingActivity" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.DataGeneratingActivity + + id: Union[str, DataGeneratingActivityId] = None + evaluated_entity: Optional[Union[dict[Union[str, EvaluatedEntityId], Union[dict, "EvaluatedEntity"]], list[Union[dict, "EvaluatedEntity"]]]] = empty_dict() + evaluated_activity: Optional[Union[dict[Union[str, EvaluatedActivityId], Union[dict, "EvaluatedActivity"]], list[Union[dict, "EvaluatedActivity"]]]] = empty_dict() + realized_plan: Optional[Union[dict, "Plan"]] = None + occurred_in: Optional[Union[dict, "Surrounding"]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, DataGeneratingActivityId): + self.id = DataGeneratingActivityId(self.id) + + self._normalize_inlined_as_list(slot_name="evaluated_entity", slot_type=EvaluatedEntity, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="evaluated_activity", slot_type=EvaluatedActivity, key_name="id", keyed=True) + + if self.realized_plan is not None and not isinstance(self.realized_plan, Plan): + self.realized_plan = Plan(**as_dict(self.realized_plan)) + + if self.occurred_in is not None and not isinstance(self.occurred_in, Surrounding): + self.occurred_in = Surrounding(**as_dict(self.occurred_in)) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Synthesis(DataGeneratingActivity): + """ + A DataGeneratingActivity in which a catalyst is prepared. + + The preparation protocol is linked via realized_plan using a + PreparationMethod instance. Input materials (Precursors) are linked via + had_input_entity. The resulting catalyst (CatalystSample) is linked via + had_output_entity. + + The type of synthesis is further specified via rdf_type using an ontology + term (e.g. a voc4cat preparation method term), following DCAT-AP-PLUS + Pattern 3. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = OBI["0000070"] + class_class_curie: ClassVar[str] = "OBI:0000070" + class_name: ClassVar[str] = "Synthesis" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Synthesis + + id: Union[str, SynthesisId] = None + nominal_composition: Union[str, list[str]] = None + catalyst_measured_properties: Union[str, list[str]] = None + had_input_entity: Union[dict[Union[str, PrecursorId], Union[dict, "Precursor"]], list[Union[dict, "Precursor"]]] = empty_dict() + realized_plan: Union[dict, "PreparationMethod"] = None + storage_conditions: Optional[Union[str, list[str]]] = empty_list() + support: Optional[Union[str, list[str]]] = empty_list() + solvent: Optional[Union[str, list[str]]] = empty_list() + sample_pretreatment: Optional[Union[str, list[str]]] = empty_list() + had_output_entity: Optional[Union[dict[Union[str, CatalystSampleId], Union[dict, "CatalystSample"]], list[Union[dict, "CatalystSample"]]]] = empty_dict() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, SynthesisId): + self.id = SynthesisId(self.id) + + if self._is_empty(self.nominal_composition): + self.MissingRequiredField("nominal_composition") + if not isinstance(self.nominal_composition, list): + self.nominal_composition = [self.nominal_composition] if self.nominal_composition is not None else [] + self.nominal_composition = [v if isinstance(v, str) else str(v) for v in self.nominal_composition] + + if self._is_empty(self.catalyst_measured_properties): + self.MissingRequiredField("catalyst_measured_properties") + if not isinstance(self.catalyst_measured_properties, list): + self.catalyst_measured_properties = [self.catalyst_measured_properties] if self.catalyst_measured_properties is not None else [] + self.catalyst_measured_properties = [v if isinstance(v, str) else str(v) for v in self.catalyst_measured_properties] + + if self._is_empty(self.had_input_entity): + self.MissingRequiredField("had_input_entity") + self._normalize_inlined_as_list(slot_name="had_input_entity", slot_type=Precursor, key_name="id", keyed=True) + + if self._is_empty(self.realized_plan): + self.MissingRequiredField("realized_plan") + if not isinstance(self.realized_plan, PreparationMethod): + self.realized_plan = PreparationMethod(**as_dict(self.realized_plan)) + + if not isinstance(self.storage_conditions, list): + self.storage_conditions = [self.storage_conditions] if self.storage_conditions is not None else [] + self.storage_conditions = [v if isinstance(v, str) else str(v) for v in self.storage_conditions] + + if not isinstance(self.support, list): + self.support = [self.support] if self.support is not None else [] + self.support = [v if isinstance(v, str) else str(v) for v in self.support] + + if not isinstance(self.solvent, list): + self.solvent = [self.solvent] if self.solvent is not None else [] + self.solvent = [v if isinstance(v, str) else str(v) for v in self.solvent] + + if not isinstance(self.sample_pretreatment, list): + self.sample_pretreatment = [self.sample_pretreatment] if self.sample_pretreatment is not None else [] + self.sample_pretreatment = [v if isinstance(v, str) else str(v) for v in self.sample_pretreatment] + + self._normalize_inlined_as_list(slot_name="had_output_entity", slot_type=CatalystSample, key_name="id", keyed=True) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Characterization(DataGeneratingActivity): + """ + A DataGeneratingActivity in which a catalyst sample or catalytic material + is characterized using an analytical technique. + + The catalyst sample being characterized is linked via evaluated_entity. + The analytical protocol is linked via realized_plan using a + CharacterizationTechnique instance. The instrument used is linked via + carried_out_by as a Device. + + The specific technique type is expressed via rdf_type using an ontology + term (e.g. CHMO:0000158 for powder XRD, CHMO:0000404 for XPS), + following DCAT-AP-PLUS Pattern 3 — exactly as NMRSpectroscopy uses + rdf_type: CHMO:0000613. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = OBI["0000070"] + class_class_curie: ClassVar[str] = "OBI:0000070" + class_name: ClassVar[str] = "Characterization" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Characterization + + id: Union[str, CharacterizationId] = None + equipment: Union[str, list[str]] = None + realized_plan: Union[dict, "CharacterizationTechnique"] = None + sample_state: Optional[Union[Union[str, "SampleStateEnum"], list[Union[str, "SampleStateEnum"]]]] = empty_list() + sample_description: Optional[Union[str, list[str]]] = empty_list() + sample_preparation: Optional[Union[str, list[str]]] = empty_list() + sample_pretreatment: Optional[Union[str, list[str]]] = empty_list() + detector_type: Optional[Union[str, list[str]]] = empty_list() + evaluated_entity: Optional[Union[dict[Union[str, EvaluatedEntityId], Union[dict, "EvaluatedEntity"]], list[Union[dict, "EvaluatedEntity"]]]] = empty_dict() + rdf_type: Optional[Union[dict, "DefinedTerm"]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, CharacterizationId): + self.id = CharacterizationId(self.id) + + if self._is_empty(self.equipment): + self.MissingRequiredField("equipment") + if not isinstance(self.equipment, list): + self.equipment = [self.equipment] if self.equipment is not None else [] + self.equipment = [v if isinstance(v, str) else str(v) for v in self.equipment] + + if self._is_empty(self.realized_plan): + self.MissingRequiredField("realized_plan") + if not isinstance(self.realized_plan, CharacterizationTechnique): + self.realized_plan = CharacterizationTechnique(**as_dict(self.realized_plan)) + + if not isinstance(self.sample_state, list): + self.sample_state = [self.sample_state] if self.sample_state is not None else [] + self.sample_state = [v if isinstance(v, SampleStateEnum) else SampleStateEnum(v) for v in self.sample_state] + + if not isinstance(self.sample_description, list): + self.sample_description = [self.sample_description] if self.sample_description is not None else [] + self.sample_description = [v if isinstance(v, str) else str(v) for v in self.sample_description] + + if not isinstance(self.sample_preparation, list): + self.sample_preparation = [self.sample_preparation] if self.sample_preparation is not None else [] + self.sample_preparation = [v if isinstance(v, str) else str(v) for v in self.sample_preparation] + + if not isinstance(self.sample_pretreatment, list): + self.sample_pretreatment = [self.sample_pretreatment] if self.sample_pretreatment is not None else [] + self.sample_pretreatment = [v if isinstance(v, str) else str(v) for v in self.sample_pretreatment] + + if not isinstance(self.detector_type, list): + self.detector_type = [self.detector_type] if self.detector_type is not None else [] + self.detector_type = [v if isinstance(v, str) else str(v) for v in self.detector_type] + + self._normalize_inlined_as_list(slot_name="evaluated_entity", slot_type=EvaluatedEntity, key_name="id", keyed=True) + + if self.rdf_type is not None and not isinstance(self.rdf_type, DefinedTerm): + self.rdf_type = DefinedTerm(**as_dict(self.rdf_type)) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Simulation(DataGeneratingActivity): + """ + A DataGeneratingActivity in which a catalyst, catalytic material, or + catalytic process is modelled computationally. + + The simulation software is linked via carried_out_by as a Software agent. + The simulation method (protocol) is linked via realized_plan using a + SimulationMethod instance. The catalyst model or reaction being simulated + is linked via evaluated_entity or evaluated_activity. + + The specific simulation type is expressed via rdf_type (e.g. coremeta4cat:DFT, + NCIT:C18097 for molecular dynamics), following DCAT-AP-PLUS Pattern 3. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = NCIT["C48936"] + class_class_curie: ClassVar[str] = "NCIT:C48936" + class_name: ClassVar[str] = "Simulation" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Simulation + + id: Union[str, SimulationId] = None + software_package: Union[str, list[str]] = None + calculated_property: Union[Union[dict, "CalculatedProperty"], list[Union[dict, "CalculatedProperty"]]] = None + realized_plan: Union[Union[dict, "SimulationMethod"], list[Union[dict, "SimulationMethod"]]] = None + rdf_type: Optional[Union[dict, "DefinedTerm"]] = None + carried_out_by: Optional[Union[dict[Union[str, AgenticEntityId], Union[dict, AgenticEntity]], list[Union[dict, AgenticEntity]]]] = empty_dict() + evaluated_entity: Optional[Union[dict[Union[str, EvaluatedEntityId], Union[dict, "EvaluatedEntity"]], list[Union[dict, "EvaluatedEntity"]]]] = empty_dict() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, SimulationId): + self.id = SimulationId(self.id) + + if self._is_empty(self.software_package): + self.MissingRequiredField("software_package") + if not isinstance(self.software_package, list): + self.software_package = [self.software_package] if self.software_package is not None else [] + self.software_package = [v if isinstance(v, str) else str(v) for v in self.software_package] + + if self._is_empty(self.calculated_property): + self.MissingRequiredField("calculated_property") + if not isinstance(self.calculated_property, list): + self.calculated_property = [self.calculated_property] if self.calculated_property is not None else [] + self.calculated_property = [v if isinstance(v, CalculatedProperty) else CalculatedProperty(**as_dict(v)) for v in self.calculated_property] + + if self._is_empty(self.realized_plan): + self.MissingRequiredField("realized_plan") + if not isinstance(self.realized_plan, list): + self.realized_plan = [self.realized_plan] if self.realized_plan is not None else [] + self.realized_plan = [v if isinstance(v, SimulationMethod) else SimulationMethod(**as_dict(v)) for v in self.realized_plan] + + if self.rdf_type is not None and not isinstance(self.rdf_type, DefinedTerm): + self.rdf_type = DefinedTerm(**as_dict(self.rdf_type)) + + self._normalize_inlined_as_list(slot_name="carried_out_by", slot_type=AgenticEntity, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="evaluated_entity", slot_type=EvaluatedEntity, key_name="id", keyed=True) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class DataAnalysis(DataGeneratingActivity): + """ + An Activity that evaluates the data produced by another Activity. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Activity"] + class_class_curie: ClassVar[str] = "prov:Activity" + class_name: ClassVar[str] = "DataAnalysis" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.DataAnalysis + + id: Union[str, DataAnalysisId] = None + evaluated_entity: Optional[Union[dict[Union[str, AnalysisSourceDataId], Union[dict, "AnalysisSourceData"]], list[Union[dict, "AnalysisSourceData"]]]] = empty_dict() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, DataAnalysisId): + self.id = DataAnalysisId(self.id) + + self._normalize_inlined_as_list(slot_name="evaluated_entity", slot_type=AnalysisSourceData, key_name="id", keyed=True) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class DataService(YAMLRoot): + """ + See [DCAT-AP specs:DataService](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#DataService) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCAT["DataService"] + class_class_curie: ClassVar[str] = "dcat:DataService" + class_name: ClassVar[str] = "DataService" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.DataService + + endpoint_URL: Union[dict[Union[str, ResourceId], Union[dict, "Resource"]], list[Union[dict, "Resource"]]] = empty_dict() + title: Union[str, list[str]] = None + access_rights: Optional[Union[dict, "RightsStatement"]] = None + applicable_legislation: Optional[Union[dict[Union[str, LegalResourceId], Union[dict, "LegalResource"]], list[Union[dict, "LegalResource"]]]] = empty_dict() + conforms_to: Optional[Union[Union[dict, "Standard"], list[Union[dict, "Standard"]]]] = empty_list() + contact_point: Optional[Union[Union[dict, "Kind"], list[Union[dict, "Kind"]]]] = empty_list() + description: Optional[Union[str, list[str]]] = empty_list() + documentation: Optional[Union[dict[Union[str, DocumentId], Union[dict, "Document"]], list[Union[dict, "Document"]]]] = empty_dict() + endpoint_description: Optional[Union[dict[Union[str, ResourceId], Union[dict, "Resource"]], list[Union[dict, "Resource"]]]] = empty_dict() + format: Optional[Union[Union[dict, "MediaTypeOrExtent"], list[Union[dict, "MediaTypeOrExtent"]]]] = empty_list() + keyword: Optional[Union[str, list[str]]] = empty_list() + landing_page: Optional[Union[dict[Union[str, DocumentId], Union[dict, "Document"]], list[Union[dict, "Document"]]]] = empty_dict() + licence: Optional[Union[dict, "LicenseDocument"]] = None + publisher: Optional[Union[dict, Agent]] = None + serves_dataset: Optional[Union[dict[Union[str, DatasetId], Union[dict, "Dataset"]], list[Union[dict, "Dataset"]]]] = empty_dict() + theme: Optional[Union[Union[dict, "Concept"], list[Union[dict, "Concept"]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.endpoint_URL): + self.MissingRequiredField("endpoint_URL") + self._normalize_inlined_as_list(slot_name="endpoint_URL", slot_type=Resource, key_name="id", keyed=True) + + if self._is_empty(self.title): + self.MissingRequiredField("title") + if not isinstance(self.title, list): + self.title = [self.title] if self.title is not None else [] + self.title = [v if isinstance(v, str) else str(v) for v in self.title] + + if self.access_rights is not None and not isinstance(self.access_rights, RightsStatement): + self.access_rights = RightsStatement(**as_dict(self.access_rights)) + + self._normalize_inlined_as_list(slot_name="applicable_legislation", slot_type=LegalResource, key_name="id", keyed=True) + + if not isinstance(self.conforms_to, list): + self.conforms_to = [self.conforms_to] if self.conforms_to is not None else [] + self.conforms_to = [v if isinstance(v, Standard) else Standard(**as_dict(v)) for v in self.conforms_to] + + if not isinstance(self.contact_point, list): + self.contact_point = [self.contact_point] if self.contact_point is not None else [] + self.contact_point = [v if isinstance(v, Kind) else Kind(**as_dict(v)) for v in self.contact_point] + + if not isinstance(self.description, list): + self.description = [self.description] if self.description is not None else [] + self.description = [v if isinstance(v, str) else str(v) for v in self.description] + + self._normalize_inlined_as_list(slot_name="documentation", slot_type=Document, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="endpoint_description", slot_type=Resource, key_name="id", keyed=True) + + if not isinstance(self.format, list): + self.format = [self.format] if self.format is not None else [] + self.format = [v if isinstance(v, MediaTypeOrExtent) else MediaTypeOrExtent(**as_dict(v)) for v in self.format] + + if not isinstance(self.keyword, list): + self.keyword = [self.keyword] if self.keyword is not None else [] + self.keyword = [v if isinstance(v, str) else str(v) for v in self.keyword] + + self._normalize_inlined_as_list(slot_name="landing_page", slot_type=Document, key_name="id", keyed=True) + + if self.licence is not None and not isinstance(self.licence, LicenseDocument): + self.licence = LicenseDocument(**as_dict(self.licence)) + + if self.publisher is not None and not isinstance(self.publisher, Agent): + self.publisher = Agent(**as_dict(self.publisher)) + + self._normalize_inlined_as_list(slot_name="serves_dataset", slot_type=Dataset, key_name="id", keyed=True) + + if not isinstance(self.theme, list): + self.theme = [self.theme] if self.theme is not None else [] + self.theme = [v if isinstance(v, Concept) else Concept(**as_dict(v)) for v in self.theme] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Dataset(YAMLRoot): + """ + A collection of data, published or curated by a single agent, and available for access or download in one or more + representations. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCAT["Dataset"] + class_class_curie: ClassVar[str] = "dcat:Dataset" + class_name: ClassVar[str] = "Dataset" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Dataset + + id: Union[str, DatasetId] = None + description: Union[str, list[str]] = None + title: Union[str, list[str]] = None + was_generated_by: Union[dict[Union[str, DataGeneratingActivityId], Union[dict, DataGeneratingActivity]], list[Union[dict, DataGeneratingActivity]]] = empty_dict() + access_rights: Optional[Union[dict, "RightsStatement"]] = None + applicable_legislation: Optional[Union[dict[Union[str, LegalResourceId], Union[dict, "LegalResource"]], list[Union[dict, "LegalResource"]]]] = empty_dict() + conforms_to: Optional[Union[Union[dict, "Standard"], list[Union[dict, "Standard"]]]] = empty_list() + contact_point: Optional[Union[Union[dict, "Kind"], list[Union[dict, "Kind"]]]] = empty_list() + creator: Optional[Union[Union[dict, Agent], list[Union[dict, Agent]]]] = empty_list() + dataset_distribution: Optional[Union[Union[dict, "Distribution"], list[Union[dict, "Distribution"]]]] = empty_list() + documentation: Optional[Union[dict[Union[str, DocumentId], Union[dict, "Document"]], list[Union[dict, "Document"]]]] = empty_dict() + frequency: Optional[Union[dict, "Frequency"]] = None + geographical_coverage: Optional[Union[Union[dict, "Location"], list[Union[dict, "Location"]]]] = empty_list() + has_version: Optional[Union[dict[Union[str, DatasetId], Union[dict, "Dataset"]], list[Union[dict, "Dataset"]]]] = empty_dict() + identifier: Optional[Union[str, list[str]]] = empty_list() + in_series: Optional[Union[Union[dict, "DatasetSeries"], list[Union[dict, "DatasetSeries"]]]] = empty_list() + is_referenced_by: Optional[Union[dict[Union[str, ResourceId], Union[dict, "Resource"]], list[Union[dict, "Resource"]]]] = empty_dict() + keyword: Optional[Union[str, list[str]]] = empty_list() + landing_page: Optional[Union[dict[Union[str, DocumentId], Union[dict, "Document"]], list[Union[dict, "Document"]]]] = empty_dict() + language: Optional[Union[Union[dict, "LinguisticSystem"], list[Union[dict, "LinguisticSystem"]]]] = empty_list() + modification_date: Optional[Union[str, XSDDate]] = None + other_identifier: Optional[Union[Union[dict, "Identifier"], list[Union[dict, "Identifier"]]]] = empty_list() + provenance: Optional[Union[Union[dict, "ProvenanceStatement"], list[Union[dict, "ProvenanceStatement"]]]] = empty_list() + publisher: Optional[Union[dict, Agent]] = None + qualified_attribution: Optional[Union[Union[dict, "Attribution"], list[Union[dict, "Attribution"]]]] = empty_list() + qualified_relation: Optional[Union[Union[dict, "Relationship"], list[Union[dict, "Relationship"]]]] = empty_list() + related_resource: Optional[Union[dict[Union[str, ResourceId], Union[dict, "Resource"]], list[Union[dict, "Resource"]]]] = empty_dict() + release_date: Optional[Union[str, XSDDate]] = None + sample: Optional[Union[Union[dict, "Distribution"], list[Union[dict, "Distribution"]]]] = empty_list() + source: Optional[Union[dict[Union[str, DatasetId], Union[dict, "Dataset"]], list[Union[dict, "Dataset"]]]] = empty_dict() + spatial_resolution: Optional[Decimal] = None + temporal_coverage: Optional[Union[Union[dict, "PeriodOfTime"], list[Union[dict, "PeriodOfTime"]]]] = empty_list() + temporal_resolution: Optional[str] = None + theme: Optional[Union[Union[dict, "Concept"], list[Union[dict, "Concept"]]]] = empty_list() + type: Optional[Union[Union[dict, "Concept"], list[Union[dict, "Concept"]]]] = empty_list() + version: Optional[str] = None + version_notes: Optional[Union[str, list[str]]] = empty_list() + is_about_entity: Optional[Union[dict[Union[str, EvaluatedEntityId], Union[dict, "EvaluatedEntity"]], list[Union[dict, "EvaluatedEntity"]]]] = empty_dict() + is_about_activity: Optional[Union[dict[Union[str, EvaluatedActivityId], Union[dict, "EvaluatedActivity"]], list[Union[dict, "EvaluatedActivity"]]]] = empty_dict() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, DatasetId): + self.id = DatasetId(self.id) + + if self._is_empty(self.description): + self.MissingRequiredField("description") + if not isinstance(self.description, list): + self.description = [self.description] if self.description is not None else [] + self.description = [v if isinstance(v, str) else str(v) for v in self.description] + + if self._is_empty(self.title): + self.MissingRequiredField("title") + if not isinstance(self.title, list): + self.title = [self.title] if self.title is not None else [] + self.title = [v if isinstance(v, str) else str(v) for v in self.title] + + if self._is_empty(self.was_generated_by): + self.MissingRequiredField("was_generated_by") + self._normalize_inlined_as_list(slot_name="was_generated_by", slot_type=DataGeneratingActivity, key_name="id", keyed=True) + + if self.access_rights is not None and not isinstance(self.access_rights, RightsStatement): + self.access_rights = RightsStatement(**as_dict(self.access_rights)) + + self._normalize_inlined_as_list(slot_name="applicable_legislation", slot_type=LegalResource, key_name="id", keyed=True) + + if not isinstance(self.conforms_to, list): + self.conforms_to = [self.conforms_to] if self.conforms_to is not None else [] + self.conforms_to = [v if isinstance(v, Standard) else Standard(**as_dict(v)) for v in self.conforms_to] + + if not isinstance(self.contact_point, list): + self.contact_point = [self.contact_point] if self.contact_point is not None else [] + self.contact_point = [v if isinstance(v, Kind) else Kind(**as_dict(v)) for v in self.contact_point] + + if not isinstance(self.creator, list): + self.creator = [self.creator] if self.creator is not None else [] + self.creator = [v if isinstance(v, Agent) else Agent(**as_dict(v)) for v in self.creator] + + if not isinstance(self.dataset_distribution, list): + self.dataset_distribution = [self.dataset_distribution] if self.dataset_distribution is not None else [] + self.dataset_distribution = [v if isinstance(v, Distribution) else Distribution(**as_dict(v)) for v in self.dataset_distribution] + + self._normalize_inlined_as_list(slot_name="documentation", slot_type=Document, key_name="id", keyed=True) + + if self.frequency is not None and not isinstance(self.frequency, Frequency): + self.frequency = Frequency(**as_dict(self.frequency)) + + if not isinstance(self.geographical_coverage, list): + self.geographical_coverage = [self.geographical_coverage] if self.geographical_coverage is not None else [] + self.geographical_coverage = [v if isinstance(v, Location) else Location(**as_dict(v)) for v in self.geographical_coverage] + + self._normalize_inlined_as_list(slot_name="has_version", slot_type=Dataset, key_name="id", keyed=True) + + if not isinstance(self.identifier, list): + self.identifier = [self.identifier] if self.identifier is not None else [] + self.identifier = [v if isinstance(v, str) else str(v) for v in self.identifier] + + if not isinstance(self.in_series, list): + self.in_series = [self.in_series] if self.in_series is not None else [] + self.in_series = [v if isinstance(v, DatasetSeries) else DatasetSeries(**as_dict(v)) for v in self.in_series] + + self._normalize_inlined_as_list(slot_name="is_referenced_by", slot_type=Resource, key_name="id", keyed=True) + + if not isinstance(self.keyword, list): + self.keyword = [self.keyword] if self.keyword is not None else [] + self.keyword = [v if isinstance(v, str) else str(v) for v in self.keyword] + + self._normalize_inlined_as_list(slot_name="landing_page", slot_type=Document, key_name="id", keyed=True) + + if not isinstance(self.language, list): + self.language = [self.language] if self.language is not None else [] + self.language = [v if isinstance(v, LinguisticSystem) else LinguisticSystem(**as_dict(v)) for v in self.language] + + if self.modification_date is not None and not isinstance(self.modification_date, XSDDate): + self.modification_date = XSDDate(self.modification_date) + + if not isinstance(self.other_identifier, list): + self.other_identifier = [self.other_identifier] if self.other_identifier is not None else [] + self.other_identifier = [v if isinstance(v, Identifier) else Identifier(**as_dict(v)) for v in self.other_identifier] + + if not isinstance(self.provenance, list): + self.provenance = [self.provenance] if self.provenance is not None else [] + self.provenance = [v if isinstance(v, ProvenanceStatement) else ProvenanceStatement(**as_dict(v)) for v in self.provenance] + + if self.publisher is not None and not isinstance(self.publisher, Agent): + self.publisher = Agent(**as_dict(self.publisher)) + + if not isinstance(self.qualified_attribution, list): + self.qualified_attribution = [self.qualified_attribution] if self.qualified_attribution is not None else [] + self.qualified_attribution = [v if isinstance(v, Attribution) else Attribution(**as_dict(v)) for v in self.qualified_attribution] + + if not isinstance(self.qualified_relation, list): + self.qualified_relation = [self.qualified_relation] if self.qualified_relation is not None else [] + self.qualified_relation = [v if isinstance(v, Relationship) else Relationship(**as_dict(v)) for v in self.qualified_relation] + + self._normalize_inlined_as_list(slot_name="related_resource", slot_type=Resource, key_name="id", keyed=True) + + if self.release_date is not None and not isinstance(self.release_date, XSDDate): + self.release_date = XSDDate(self.release_date) + + if not isinstance(self.sample, list): + self.sample = [self.sample] if self.sample is not None else [] + self.sample = [v if isinstance(v, Distribution) else Distribution(**as_dict(v)) for v in self.sample] + + self._normalize_inlined_as_list(slot_name="source", slot_type=Dataset, key_name="id", keyed=True) + + if self.spatial_resolution is not None and not isinstance(self.spatial_resolution, Decimal): + self.spatial_resolution = Decimal(self.spatial_resolution) + + if not isinstance(self.temporal_coverage, list): + self.temporal_coverage = [self.temporal_coverage] if self.temporal_coverage is not None else [] + self.temporal_coverage = [v if isinstance(v, PeriodOfTime) else PeriodOfTime(**as_dict(v)) for v in self.temporal_coverage] + + if self.temporal_resolution is not None and not isinstance(self.temporal_resolution, str): + self.temporal_resolution = str(self.temporal_resolution) + + if not isinstance(self.theme, list): + self.theme = [self.theme] if self.theme is not None else [] + self.theme = [v if isinstance(v, Concept) else Concept(**as_dict(v)) for v in self.theme] + + if not isinstance(self.type, list): + self.type = [self.type] if self.type is not None else [] + self.type = [v if isinstance(v, Concept) else Concept(**as_dict(v)) for v in self.type] + + if self.version is not None and not isinstance(self.version, str): + self.version = str(self.version) + + if not isinstance(self.version_notes, list): + self.version_notes = [self.version_notes] if self.version_notes is not None else [] + self.version_notes = [v if isinstance(v, str) else str(v) for v in self.version_notes] + + self._normalize_inlined_as_list(slot_name="is_about_entity", slot_type=EvaluatedEntity, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="is_about_activity", slot_type=EvaluatedActivity, key_name="id", keyed=True) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class CatalysisDataset(Dataset): + """ + A dcat:Dataset that contains research data in the field of catalysis. + + The catalysis research field is expressed via rdf_type using a voc4cat + term from CatalysisResearchFieldEnum (following DCAT-AP-PLUS Pattern 3). + For example, a dataset from heterogeneous catalysis research would carry: + rdf_type: + id: VOC4CAT:0007001 + title: "heterogeneous catalysis" + + The four CoreMeta4Cat minimum information pillars are linked via the slots + below, each pointing to the corresponding DataGeneratingActivity or + EvaluatedActivity subclass defined in the CoreMeta4Cat subprofile modules. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCAT["Dataset"] + class_class_curie: ClassVar[str] = "dcat:Dataset" + class_name: ClassVar[str] = "CatalysisDataset" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.CatalysisDataset + + id: Union[str, CatalysisDatasetId] = None + description: Union[str, list[str]] = None + title: Union[str, list[str]] = None + rdf_type: Optional[Union[dict, "DefinedTerm"]] = None + was_generated_by: Optional[Union[dict[Union[str, DataGeneratingActivityId], Union[dict, DataGeneratingActivity]], list[Union[dict, DataGeneratingActivity]]]] = empty_dict() + is_about_activity: Optional[Union[dict[Union[str, EvaluatedActivityId], Union[dict, "EvaluatedActivity"]], list[Union[dict, "EvaluatedActivity"]]]] = empty_dict() + is_about_entity: Optional[Union[dict[Union[str, EvaluatedEntityId], Union[dict, "EvaluatedEntity"]], list[Union[dict, "EvaluatedEntity"]]]] = empty_dict() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, CatalysisDatasetId): + self.id = CatalysisDatasetId(self.id) + + if self.rdf_type is not None and not isinstance(self.rdf_type, DefinedTerm): + self.rdf_type = DefinedTerm(**as_dict(self.rdf_type)) + + self._normalize_inlined_as_list(slot_name="was_generated_by", slot_type=DataGeneratingActivity, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="is_about_activity", slot_type=EvaluatedActivity, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="is_about_entity", slot_type=EvaluatedEntity, key_name="id", keyed=True) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class AnalysisDataset(Dataset): + """ + A Dataset that was generated by an analysis of some previously generated data. For example, a dataset that + contains the data of an assignment of a chemical structure to a sample based on the spectral data obtained from + the sample is an AnalyticalDataset. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCAT["Dataset"] + class_class_curie: ClassVar[str] = "dcat:Dataset" + class_name: ClassVar[str] = "AnalysisDataset" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.AnalysisDataset + + id: Union[str, AnalysisDatasetId] = None + description: Union[str, list[str]] = None + title: Union[str, list[str]] = None + was_generated_by: Optional[Union[dict[Union[str, DataAnalysisId], Union[dict, DataAnalysis]], list[Union[dict, DataAnalysis]]]] = empty_dict() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, AnalysisDatasetId): + self.id = AnalysisDatasetId(self.id) + + self._normalize_inlined_as_list(slot_name="was_generated_by", slot_type=DataAnalysis, key_name="id", keyed=True) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class DatasetSeries(YAMLRoot): + """ + See [DCAT-AP specs:DatasetSeries](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#DatasetSeries) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCAT["DatasetSeries"] + class_class_curie: ClassVar[str] = "dcat:DatasetSeries" + class_name: ClassVar[str] = "DatasetSeries" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.DatasetSeries + + description: Union[str, list[str]] = None + title: Union[str, list[str]] = None + applicable_legislation: Optional[Union[dict[Union[str, LegalResourceId], Union[dict, "LegalResource"]], list[Union[dict, "LegalResource"]]]] = empty_dict() + contact_point: Optional[Union[Union[dict, "Kind"], list[Union[dict, "Kind"]]]] = empty_list() + frequency: Optional[Union[dict, "Frequency"]] = None + geographical_coverage: Optional[Union[Union[dict, "Location"], list[Union[dict, "Location"]]]] = empty_list() + modification_date: Optional[Union[str, XSDDate]] = None + publisher: Optional[Union[dict, Agent]] = None + release_date: Optional[Union[str, XSDDate]] = None + temporal_coverage: Optional[Union[Union[dict, "PeriodOfTime"], list[Union[dict, "PeriodOfTime"]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.description): + self.MissingRequiredField("description") + if not isinstance(self.description, list): + self.description = [self.description] if self.description is not None else [] + self.description = [v if isinstance(v, str) else str(v) for v in self.description] + + if self._is_empty(self.title): + self.MissingRequiredField("title") + if not isinstance(self.title, list): + self.title = [self.title] if self.title is not None else [] + self.title = [v if isinstance(v, str) else str(v) for v in self.title] + + self._normalize_inlined_as_list(slot_name="applicable_legislation", slot_type=LegalResource, key_name="id", keyed=True) + + if not isinstance(self.contact_point, list): + self.contact_point = [self.contact_point] if self.contact_point is not None else [] + self.contact_point = [v if isinstance(v, Kind) else Kind(**as_dict(v)) for v in self.contact_point] + + if self.frequency is not None and not isinstance(self.frequency, Frequency): + self.frequency = Frequency(**as_dict(self.frequency)) + + if not isinstance(self.geographical_coverage, list): + self.geographical_coverage = [self.geographical_coverage] if self.geographical_coverage is not None else [] + self.geographical_coverage = [v if isinstance(v, Location) else Location(**as_dict(v)) for v in self.geographical_coverage] + + if self.modification_date is not None and not isinstance(self.modification_date, XSDDate): + self.modification_date = XSDDate(self.modification_date) + + if self.publisher is not None and not isinstance(self.publisher, Agent): + self.publisher = Agent(**as_dict(self.publisher)) + + if self.release_date is not None and not isinstance(self.release_date, XSDDate): + self.release_date = XSDDate(self.release_date) + + if not isinstance(self.temporal_coverage, list): + self.temporal_coverage = [self.temporal_coverage] if self.temporal_coverage is not None else [] + self.temporal_coverage = [v if isinstance(v, PeriodOfTime) else PeriodOfTime(**as_dict(v)) for v in self.temporal_coverage] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class DefinedTerm(YAMLRoot): + """ + A word, name, acronym or phrase that is defined in a controlled vocabulary (CV) and that is used to provide an + additional rdf:type or dcterms:type of a class within this schema. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = SCHEMA["DefinedTerm"] + class_class_curie: ClassVar[str] = "schema:DefinedTerm" + class_name: ClassVar[str] = "DefinedTerm" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.DefinedTerm + + id: Union[str, DefinedTermId] = None + title: Optional[str] = None + from_CV: Optional[Union[str, URIorCURIE]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, DefinedTermId): + self.id = DefinedTermId(self.id) + + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.from_CV is not None and not isinstance(self.from_CV, URIorCURIE): + self.from_CV = URIorCURIE(self.from_CV) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Device(AgenticEntity): + """ + A material instrument that is designed to perform a function primarily by means of its mechanical or electrical + nature. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Agent"] + class_class_curie: ClassVar[str] = "prov:Agent" + class_name: ClassVar[str] = "Device" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Device + + id: Union[str, DeviceId] = None + has_part: Optional[Union[dict[Union[str, DeviceId], Union[dict, "Device"]], list[Union[dict, "Device"]]]] = empty_dict() + other_identifier: Optional[Union[Union[dict, "Identifier"], list[Union[dict, "Identifier"]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, DeviceId): + self.id = DeviceId(self.id) + + self._normalize_inlined_as_list(slot_name="has_part", slot_type=Device, key_name="id", keyed=True) + + if not isinstance(self.other_identifier, list): + self.other_identifier = [self.other_identifier] if self.other_identifier is not None else [] + self.other_identifier = [v if isinstance(v, Identifier) else Identifier(**as_dict(v)) for v in self.other_identifier] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ReactorDesignType(Device): + """ + Abstract Device representing the type of reactor used in a catalytic experiment. + Concrete subclasses specify the reactor geometry and operating mode. + Linked from Reaction via carried_out_by. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = VOC4CAT["0007018"] + class_class_curie: ClassVar[str] = "VOC4CAT:0007018" + class_name: ClassVar[str] = "ReactorDesignType" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ReactorDesignType + + id: Union[str, ReactorDesignTypeId] = None + +@dataclass(repr=False) +class ElectrochemicalReactor(ReactorDesignType): + """ + Electrochemical reactor used in electrocatalytic experiments, including + H-cells, flow cells, and membrane electrode assemblies. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = VOC4CAT["0000193"] + class_class_curie: ClassVar[str] = "VOC4CAT:0000193" + class_name: ClassVar[str] = "ElectrochemicalReactor" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ElectrochemicalReactor + + id: Union[str, ElectrochemicalReactorId] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, ElectrochemicalReactorId): + self.id = ElectrochemicalReactorId(self.id) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class CSTR(ReactorDesignType): + """ + Continuous stirred tank reactor (CSTR) — a well-mixed, continuous-flow + reactor operating at steady state. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = VOC4CAT["0007019"] + class_class_curie: ClassVar[str] = "VOC4CAT:0007019" + class_name: ClassVar[str] = "CSTR" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.CSTR + + id: Union[str, CSTRId] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, CSTRId): + self.id = CSTRId(self.id) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class PlugFlowReactor(ReactorDesignType): + """ + Plug flow reactor (PFR) — a tubular reactor in which reactant composition + varies along the axis with no axial mixing. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = VOC4CAT["0007102"] + class_class_curie: ClassVar[str] = "VOC4CAT:0007102" + class_name: ClassVar[str] = "PlugFlowReactor" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.PlugFlowReactor + + id: Union[str, PlugFlowReactorId] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, PlugFlowReactorId): + self.id = PlugFlowReactorId(self.id) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Autoclave(ReactorDesignType): + """ + Autoclave reactor — a sealed pressure vessel for batch reactions at + elevated temperature and/or pressure. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = NCIT["C93052"] + class_class_curie: ClassVar[str] = "NCIT:C93052" + class_name: ClassVar[str] = "Autoclave" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Autoclave + + id: Union[str, AutoclaveId] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, AutoclaveId): + self.id = AutoclaveId(self.id) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class SlurryReactor(ReactorDesignType): + """ + Slurry reactor — a three-phase reactor in which catalyst particles are + suspended in a liquid phase through which gas is bubbled. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["SlurryReactor"] + class_class_curie: ClassVar[str] = "coremeta4cat:SlurryReactor" + class_name: ClassVar[str] = "SlurryReactor" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.SlurryReactor + + id: Union[str, SlurryReactorId] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, SlurryReactorId): + self.id = SlurryReactorId(self.id) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Microreactor(ReactorDesignType): + """ + Microreactor — a miniaturised flow reactor with characteristic dimensions + in the sub-millimetre range, enabling precise thermal control and rapid + screening. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = VOC4CAT["0000234"] + class_class_curie: ClassVar[str] = "VOC4CAT:0000234" + class_name: ClassVar[str] = "Microreactor" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Microreactor + + id: Union[str, MicroreactorId] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, MicroreactorId): + self.id = MicroreactorId(self.id) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class FixedBedReactor(ReactorDesignType): + """ + Fixed bed reactor — a tubular reactor packed with a stationary catalyst bed. + The most common reactor type in heterogeneous catalysis testing. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["FixedBedReactor"] + class_class_curie: ClassVar[str] = "coremeta4cat:FixedBedReactor" + class_name: ClassVar[str] = "FixedBedReactor" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.FixedBedReactor + + id: Union[str, FixedBedReactorId] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, FixedBedReactorId): + self.id = FixedBedReactorId(self.id) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class FluidizedBedReactor(ReactorDesignType): + """ + Fluidized bed reactor — a reactor in which the catalyst particles are + suspended in an upward-flowing gas or liquid stream. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["FluidizedBedReactor"] + class_class_curie: ClassVar[str] = "coremeta4cat:FluidizedBedReactor" + class_name: ClassVar[str] = "FluidizedBedReactor" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.FluidizedBedReactor + + id: Union[str, FluidizedBedReactorId] = None + gas_distributor_type: Optional[Union[str, list[str]]] = empty_list() + bed_expansion_height: Optional[Union[float, list[float]]] = empty_list() + bubble_size_distribution: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, FluidizedBedReactorId): + self.id = FluidizedBedReactorId(self.id) + + if not isinstance(self.gas_distributor_type, list): + self.gas_distributor_type = [self.gas_distributor_type] if self.gas_distributor_type is not None else [] + self.gas_distributor_type = [v if isinstance(v, str) else str(v) for v in self.gas_distributor_type] + + if not isinstance(self.bed_expansion_height, list): + self.bed_expansion_height = [self.bed_expansion_height] if self.bed_expansion_height is not None else [] + self.bed_expansion_height = [v if isinstance(v, float) else float(v) for v in self.bed_expansion_height] + + if self.bubble_size_distribution is not None and not isinstance(self.bubble_size_distribution, str): + self.bubble_size_distribution = str(self.bubble_size_distribution) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Distribution(YAMLRoot): + """ + See [DCAT-AP specs:Distribution](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Distribution) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCAT["Distribution"] + class_class_curie: ClassVar[str] = "dcat:Distribution" + class_name: ClassVar[str] = "Distribution" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Distribution + + access_URL: Union[dict[Union[str, ResourceId], Union[dict, "Resource"]], list[Union[dict, "Resource"]]] = empty_dict() + access_service: Optional[Union[Union[dict, DataService], list[Union[dict, DataService]]]] = empty_list() + applicable_legislation: Optional[Union[dict[Union[str, LegalResourceId], Union[dict, "LegalResource"]], list[Union[dict, "LegalResource"]]]] = empty_dict() + availability: Optional[Union[dict, "Concept"]] = None + byte_size: Optional[int] = None + checksum: Optional[Union[dict, Checksum]] = None + compression_format: Optional[Union[dict, "MediaType"]] = None + description: Optional[Union[str, list[str]]] = empty_list() + documentation: Optional[Union[dict[Union[str, DocumentId], Union[dict, "Document"]], list[Union[dict, "Document"]]]] = empty_dict() + download_URL: Optional[Union[dict[Union[str, ResourceId], Union[dict, "Resource"]], list[Union[dict, "Resource"]]]] = empty_dict() + format: Optional[Union[dict, "MediaTypeOrExtent"]] = None + has_policy: Optional[Union[dict, "Policy"]] = None + language: Optional[Union[Union[dict, "LinguisticSystem"], list[Union[dict, "LinguisticSystem"]]]] = empty_list() + licence: Optional[Union[dict, "LicenseDocument"]] = None + linked_schemas: Optional[Union[Union[dict, "Standard"], list[Union[dict, "Standard"]]]] = empty_list() + media_type: Optional[Union[dict, "MediaType"]] = None + modification_date: Optional[Union[str, XSDDate]] = None + packaging_format: Optional[Union[dict, "MediaType"]] = None + release_date: Optional[Union[str, XSDDate]] = None + rights: Optional[Union[dict, "RightsStatement"]] = None + spatial_resolution: Optional[Decimal] = None + status: Optional[Union[dict, "Concept"]] = None + temporal_resolution: Optional[str] = None + title: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.access_URL): + self.MissingRequiredField("access_URL") + self._normalize_inlined_as_list(slot_name="access_URL", slot_type=Resource, key_name="id", keyed=True) + + if not isinstance(self.access_service, list): + self.access_service = [self.access_service] if self.access_service is not None else [] + self.access_service = [v if isinstance(v, DataService) else DataService(**as_dict(v)) for v in self.access_service] + + self._normalize_inlined_as_list(slot_name="applicable_legislation", slot_type=LegalResource, key_name="id", keyed=True) + + if self.availability is not None and not isinstance(self.availability, Concept): + self.availability = Concept(**as_dict(self.availability)) + + if self.byte_size is not None and not isinstance(self.byte_size, int): + self.byte_size = int(self.byte_size) + + if self.checksum is not None and not isinstance(self.checksum, Checksum): + self.checksum = Checksum(**as_dict(self.checksum)) + + if self.compression_format is not None and not isinstance(self.compression_format, MediaType): + self.compression_format = MediaType(**as_dict(self.compression_format)) + + if not isinstance(self.description, list): + self.description = [self.description] if self.description is not None else [] + self.description = [v if isinstance(v, str) else str(v) for v in self.description] + + self._normalize_inlined_as_list(slot_name="documentation", slot_type=Document, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="download_URL", slot_type=Resource, key_name="id", keyed=True) + + if self.format is not None and not isinstance(self.format, MediaTypeOrExtent): + self.format = MediaTypeOrExtent(**as_dict(self.format)) + + if self.has_policy is not None and not isinstance(self.has_policy, Policy): + self.has_policy = Policy(**as_dict(self.has_policy)) + + if not isinstance(self.language, list): + self.language = [self.language] if self.language is not None else [] + self.language = [v if isinstance(v, LinguisticSystem) else LinguisticSystem(**as_dict(v)) for v in self.language] + + if self.licence is not None and not isinstance(self.licence, LicenseDocument): + self.licence = LicenseDocument(**as_dict(self.licence)) + + if not isinstance(self.linked_schemas, list): + self.linked_schemas = [self.linked_schemas] if self.linked_schemas is not None else [] + self.linked_schemas = [v if isinstance(v, Standard) else Standard(**as_dict(v)) for v in self.linked_schemas] + + if self.media_type is not None and not isinstance(self.media_type, MediaType): + self.media_type = MediaType(**as_dict(self.media_type)) + + if self.modification_date is not None and not isinstance(self.modification_date, XSDDate): + self.modification_date = XSDDate(self.modification_date) + + if self.packaging_format is not None and not isinstance(self.packaging_format, MediaType): + self.packaging_format = MediaType(**as_dict(self.packaging_format)) + + if self.release_date is not None and not isinstance(self.release_date, XSDDate): + self.release_date = XSDDate(self.release_date) + + if self.rights is not None and not isinstance(self.rights, RightsStatement): + self.rights = RightsStatement(**as_dict(self.rights)) + + if self.spatial_resolution is not None and not isinstance(self.spatial_resolution, Decimal): + self.spatial_resolution = Decimal(self.spatial_resolution) + + if self.status is not None and not isinstance(self.status, Concept): + self.status = Concept(**as_dict(self.status)) + + if self.temporal_resolution is not None and not isinstance(self.temporal_resolution, str): + self.temporal_resolution = str(self.temporal_resolution) + + if not isinstance(self.title, list): + self.title = [self.title] if self.title is not None else [] + self.title = [v if isinstance(v, str) else str(v) for v in self.title] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Entity(YAMLRoot): + """ + A physical, digital, conceptual, or other kind of thing with some fixed aspects; entities may be real or imaginary. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Entity"] + class_class_curie: ClassVar[str] = "prov:Entity" + class_name: ClassVar[str] = "Entity" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Entity + + id: Union[str, EntityId] = None + title: Optional[str] = None + description: Optional[str] = None + other_identifier: Optional[Union[Union[dict, "Identifier"], list[Union[dict, "Identifier"]]]] = empty_list() + has_qualitative_attribute: Optional[Union[Union[dict, "QualitativeAttribute"], list[Union[dict, "QualitativeAttribute"]]]] = empty_list() + has_quantitative_attribute: Optional[Union[Union[dict, "QuantitativeAttribute"], list[Union[dict, "QuantitativeAttribute"]]]] = empty_list() + has_part: Optional[Union[dict[Union[str, EntityId], Union[dict, "Entity"]], list[Union[dict, "Entity"]]]] = empty_dict() + part_of: Optional[Union[dict[Union[str, EntityId], Union[dict, "Entity"]], list[Union[dict, "Entity"]]]] = empty_dict() + type: Optional[Union[dict, DefinedTerm]] = None + rdf_type: Optional[Union[dict, DefinedTerm]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, EntityId): + self.id = EntityId(self.id) + + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + if not isinstance(self.other_identifier, list): + self.other_identifier = [self.other_identifier] if self.other_identifier is not None else [] + self.other_identifier = [v if isinstance(v, Identifier) else Identifier(**as_dict(v)) for v in self.other_identifier] + + if not isinstance(self.has_qualitative_attribute, list): + self.has_qualitative_attribute = [self.has_qualitative_attribute] if self.has_qualitative_attribute is not None else [] + self.has_qualitative_attribute = [v if isinstance(v, QualitativeAttribute) else QualitativeAttribute(**as_dict(v)) for v in self.has_qualitative_attribute] + + if not isinstance(self.has_quantitative_attribute, list): + self.has_quantitative_attribute = [self.has_quantitative_attribute] if self.has_quantitative_attribute is not None else [] + self.has_quantitative_attribute = [v if isinstance(v, QuantitativeAttribute) else QuantitativeAttribute(**as_dict(v)) for v in self.has_quantitative_attribute] + + self._normalize_inlined_as_list(slot_name="has_part", slot_type=Entity, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="part_of", slot_type=Entity, key_name="id", keyed=True) + + if self.type is not None and not isinstance(self.type, DefinedTerm): + self.type = DefinedTerm(**as_dict(self.type)) + + if self.rdf_type is not None and not isinstance(self.rdf_type, DefinedTerm): + self.rdf_type = DefinedTerm(**as_dict(self.rdf_type)) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class EvaluatedActivity(Activity): + """ + An activity or process that is being evaluated in a DataGeneratingActivity. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Activity"] + class_class_curie: ClassVar[str] = "prov:Activity" + class_name: ClassVar[str] = "EvaluatedActivity" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.EvaluatedActivity + + id: Union[str, EvaluatedActivityId] = None + other_identifier: Optional[Union[Union[dict, "Identifier"], list[Union[dict, "Identifier"]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, EvaluatedActivityId): + self.id = EvaluatedActivityId(self.id) + + if not isinstance(self.other_identifier, list): + self.other_identifier = [self.other_identifier] if self.other_identifier is not None else [] + self.other_identifier = [v if isinstance(v, Identifier) else Identifier(**as_dict(v)) for v in self.other_identifier] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Reaction(EvaluatedActivity): + """ + An EvaluatedActivity representing the catalytic reaction being studied. + + Reaction is NOT a DataGeneratingActivity — it is the catalytic process + being observed, not the process that generates the dataset. A CatalysisDataset + is linked to the Reaction it is about via is_about_activity. + + For operando experiments (e.g. in-situ XRD during a reaction), the dataset + carries both: + was_generated_by: Characterization (the measurement producing data) + is_about_activity: Reaction (the catalytic process being monitored) + + The reactor is linked via carried_out_by as a ReactorDesignType (Device). + Reactants are linked via had_input_entity. The type of catalytic reaction + (e.g. ammonia synthesis, CO oxidation) is expressed via rdf_type using a + voc4cat or ChemO term. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = SIO["010345"] + class_class_curie: ClassVar[str] = "SIO:010345" + class_name: ClassVar[str] = "Reaction" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Reaction + + id: Union[str, ReactionId] = None + catalyst_quantity: Union[float, list[float]] = None + reactant: Union[str, list[str]] = None + carried_out_by: Union[dict[Union[str, ReactorDesignTypeId], Union[dict, ReactorDesignType]], list[Union[dict, ReactorDesignType]]] = empty_dict() + product_identification_method: Union[Union[dict, "ProductIdentificationMethod"], list[Union[dict, "ProductIdentificationMethod"]]] = None + catalyst_type: Optional[Union[str, list[str]]] = empty_list() + reactor_temperature_range: Optional[Union[str, list[str]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + experiment_pressure: Optional[Union[float, list[float]]] = empty_list() + feed_composition_range: Optional[Union[str, list[str]]] = empty_list() + experiment_duration: Optional[Union[float, list[float]]] = empty_list() + rdf_type: Optional[Union[dict, DefinedTerm]] = None + had_input_entity: Optional[Union[dict[Union[str, EvaluatedEntityId], Union[dict, "EvaluatedEntity"]], list[Union[dict, "EvaluatedEntity"]]]] = empty_dict() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, ReactionId): + self.id = ReactionId(self.id) + + if self._is_empty(self.catalyst_quantity): + self.MissingRequiredField("catalyst_quantity") + if not isinstance(self.catalyst_quantity, list): + self.catalyst_quantity = [self.catalyst_quantity] if self.catalyst_quantity is not None else [] + self.catalyst_quantity = [v if isinstance(v, float) else float(v) for v in self.catalyst_quantity] + + if self._is_empty(self.reactant): + self.MissingRequiredField("reactant") + if not isinstance(self.reactant, list): + self.reactant = [self.reactant] if self.reactant is not None else [] + self.reactant = [v if isinstance(v, str) else str(v) for v in self.reactant] + + if self._is_empty(self.carried_out_by): + self.MissingRequiredField("carried_out_by") + self._normalize_inlined_as_list(slot_name="carried_out_by", slot_type=ReactorDesignType, key_name="id", keyed=True) + + if self._is_empty(self.product_identification_method): + self.MissingRequiredField("product_identification_method") + if not isinstance(self.product_identification_method, list): + self.product_identification_method = [self.product_identification_method] if self.product_identification_method is not None else [] + self.product_identification_method = [v if isinstance(v, ProductIdentificationMethod) else ProductIdentificationMethod(**as_dict(v)) for v in self.product_identification_method] + + if not isinstance(self.catalyst_type, list): + self.catalyst_type = [self.catalyst_type] if self.catalyst_type is not None else [] + self.catalyst_type = [v if isinstance(v, str) else str(v) for v in self.catalyst_type] + + if not isinstance(self.reactor_temperature_range, list): + self.reactor_temperature_range = [self.reactor_temperature_range] if self.reactor_temperature_range is not None else [] + self.reactor_temperature_range = [v if isinstance(v, str) else str(v) for v in self.reactor_temperature_range] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + if not isinstance(self.experiment_pressure, list): + self.experiment_pressure = [self.experiment_pressure] if self.experiment_pressure is not None else [] + self.experiment_pressure = [v if isinstance(v, float) else float(v) for v in self.experiment_pressure] + + if not isinstance(self.feed_composition_range, list): + self.feed_composition_range = [self.feed_composition_range] if self.feed_composition_range is not None else [] + self.feed_composition_range = [v if isinstance(v, str) else str(v) for v in self.feed_composition_range] + + if not isinstance(self.experiment_duration, list): + self.experiment_duration = [self.experiment_duration] if self.experiment_duration is not None else [] + self.experiment_duration = [v if isinstance(v, float) else float(v) for v in self.experiment_duration] + + if self.rdf_type is not None and not isinstance(self.rdf_type, DefinedTerm): + self.rdf_type = DefinedTerm(**as_dict(self.rdf_type)) + + self._normalize_inlined_as_list(slot_name="had_input_entity", slot_type=EvaluatedEntity, key_name="id", keyed=True) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class EvaluatedEntity(Entity): + """ + An Entity that is being evaluated in a DataGeneratingActivity. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Entity"] + class_class_curie: ClassVar[str] = "prov:Entity" + class_name: ClassVar[str] = "EvaluatedEntity" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.EvaluatedEntity + + id: Union[str, EvaluatedEntityId] = None + was_generated_by: Optional[Union[dict[Union[str, ActivityId], Union[dict, Activity]], list[Union[dict, Activity]]]] = empty_dict() + title: Optional[str] = None + description: Optional[str] = None + other_identifier: Optional[Union[Union[dict, "Identifier"], list[Union[dict, "Identifier"]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, EvaluatedEntityId): + self.id = EvaluatedEntityId(self.id) + + self._normalize_inlined_as_list(slot_name="was_generated_by", slot_type=Activity, key_name="id", keyed=True) + + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + if not isinstance(self.other_identifier, list): + self.other_identifier = [self.other_identifier] if self.other_identifier is not None else [] + self.other_identifier = [v if isinstance(v, Identifier) else Identifier(**as_dict(v)) for v in self.other_identifier] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class AnalysisSourceData(EvaluatedEntity): + """ + Information that was evaluated within a DataAnalysis. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Entity"] + class_class_curie: ClassVar[str] = "prov:Entity" + class_name: ClassVar[str] = "AnalysisSourceData" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.AnalysisSourceData + + id: Union[str, AnalysisSourceDataId] = None + was_generated_by: Optional[Union[dict[Union[str, DataGeneratingActivityId], Union[dict, DataGeneratingActivity]], list[Union[dict, DataGeneratingActivity]]]] = empty_dict() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, AnalysisSourceDataId): + self.id = AnalysisSourceDataId(self.id) + + self._normalize_inlined_as_list(slot_name="was_generated_by", slot_type=DataGeneratingActivity, key_name="id", keyed=True) + + super().__post_init__(**kwargs) + + +class Kind(YAMLRoot): + """ + See [DCAT-AP specs:Kind](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Kind) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = VCARD["Kind"] + class_class_curie: ClassVar[str] = "vcard:Kind" + class_name: ClassVar[str] = "Kind" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Kind + + +@dataclass(repr=False) +class Location(YAMLRoot): + """ + See [DCAT-AP specs:Location](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Location) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCTERMS["Location"] + class_class_curie: ClassVar[str] = "dcterms:Location" + class_name: ClassVar[str] = "Location" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Location + + bbox: Optional[str] = None + centroid: Optional[str] = None + geometry: Optional[Union[dict, "Geometry"]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.bbox is not None and not isinstance(self.bbox, str): + self.bbox = str(self.bbox) + + if self.centroid is not None and not isinstance(self.centroid, str): + self.centroid = str(self.centroid) + + if self.geometry is not None and not isinstance(self.geometry, Geometry): + self.geometry = Geometry(**as_dict(self.geometry)) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Plan(YAMLRoot): + """ + A piece of information that specifies how an activity has to be carried out by its agents including what kind of + steps have to be taken and what kind of parameters have to be met/set. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Plan"] + class_class_curie: ClassVar[str] = "prov:Plan" + class_name: ClassVar[str] = "Plan" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Plan + + title: Optional[str] = None + description: Optional[str] = None + type: Optional[Union[dict, DefinedTerm]] = None + rdf_type: Optional[Union[dict, DefinedTerm]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + if self.type is not None and not isinstance(self.type, DefinedTerm): + self.type = DefinedTerm(**as_dict(self.type)) + + if self.rdf_type is not None and not isinstance(self.rdf_type, DefinedTerm): + self.rdf_type = DefinedTerm(**as_dict(self.rdf_type)) + + super().__post_init__(**kwargs) + + +class PreparationMethod(Plan): + """ + An abstract Plan describing the protocol used to prepare a catalyst. + Concrete subclasses (Impregnation, CoPrecipitation, …) specify the + method-specific parameters. Linked from Synthesis via realized_plan. + + The specific preparation method type should additionally be expressed + via rdf_type on the Synthesis activity using a voc4cat term + (e.g. VOC4CAT:0007016 for preparation method). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = OBI["0000272"] + class_class_curie: ClassVar[str] = "OBI:0000272" + class_name: ClassVar[str] = "PreparationMethod" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.PreparationMethod + + +@dataclass(repr=False) +class Impregnation(PreparationMethod): + """ + Catalyst preparation by impregnation: a solution of the active phase + precursor is brought into contact with the support material. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["Impregnation"] + class_class_curie: ClassVar[str] = "coremeta4cat:Impregnation" + class_name: ClassVar[str] = "Impregnation" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Impregnation + + impregnation_type: Optional[Union[Union[str, "ImpregnationTypeEnum"], list[Union[str, "ImpregnationTypeEnum"]]]] = empty_list() + impregnation_duration: Optional[Union[float, list[float]]] = empty_list() + impregnation_temperature: Optional[Union[float, list[float]]] = empty_list() + drying_device: Optional[Union[str, list[str]]] = empty_list() + drying_temperature: Optional[Union[float, list[float]]] = empty_list() + drying_time: Optional[Union[float, list[float]]] = empty_list() + drying_atmosphere: Optional[Union[str, list[str]]] = empty_list() + calcination_initial_temperature: Optional[Union[float, list[float]]] = empty_list() + calcination_final_temperature: Optional[Union[float, list[float]]] = empty_list() + calcination_dwelling_time: Optional[Union[float, list[float]]] = empty_list() + number_of_cycles: Optional[Union[int, list[int]]] = empty_list() + calcination_gaseous_environment: Optional[Union[str, list[str]]] = empty_list() + calcination_heating_rate: Optional[Union[float, list[float]]] = empty_list() + calcination_gas_flow_rate: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.impregnation_type, list): + self.impregnation_type = [self.impregnation_type] if self.impregnation_type is not None else [] + self.impregnation_type = [v if isinstance(v, ImpregnationTypeEnum) else ImpregnationTypeEnum(v) for v in self.impregnation_type] + + if not isinstance(self.impregnation_duration, list): + self.impregnation_duration = [self.impregnation_duration] if self.impregnation_duration is not None else [] + self.impregnation_duration = [v if isinstance(v, float) else float(v) for v in self.impregnation_duration] + + if not isinstance(self.impregnation_temperature, list): + self.impregnation_temperature = [self.impregnation_temperature] if self.impregnation_temperature is not None else [] + self.impregnation_temperature = [v if isinstance(v, float) else float(v) for v in self.impregnation_temperature] + + if not isinstance(self.drying_device, list): + self.drying_device = [self.drying_device] if self.drying_device is not None else [] + self.drying_device = [v if isinstance(v, str) else str(v) for v in self.drying_device] + + if not isinstance(self.drying_temperature, list): + self.drying_temperature = [self.drying_temperature] if self.drying_temperature is not None else [] + self.drying_temperature = [v if isinstance(v, float) else float(v) for v in self.drying_temperature] + + if not isinstance(self.drying_time, list): + self.drying_time = [self.drying_time] if self.drying_time is not None else [] + self.drying_time = [v if isinstance(v, float) else float(v) for v in self.drying_time] + + if not isinstance(self.drying_atmosphere, list): + self.drying_atmosphere = [self.drying_atmosphere] if self.drying_atmosphere is not None else [] + self.drying_atmosphere = [v if isinstance(v, str) else str(v) for v in self.drying_atmosphere] + + if not isinstance(self.calcination_initial_temperature, list): + self.calcination_initial_temperature = [self.calcination_initial_temperature] if self.calcination_initial_temperature is not None else [] + self.calcination_initial_temperature = [v if isinstance(v, float) else float(v) for v in self.calcination_initial_temperature] + + if not isinstance(self.calcination_final_temperature, list): + self.calcination_final_temperature = [self.calcination_final_temperature] if self.calcination_final_temperature is not None else [] + self.calcination_final_temperature = [v if isinstance(v, float) else float(v) for v in self.calcination_final_temperature] + + if not isinstance(self.calcination_dwelling_time, list): + self.calcination_dwelling_time = [self.calcination_dwelling_time] if self.calcination_dwelling_time is not None else [] + self.calcination_dwelling_time = [v if isinstance(v, float) else float(v) for v in self.calcination_dwelling_time] + + if not isinstance(self.number_of_cycles, list): + self.number_of_cycles = [self.number_of_cycles] if self.number_of_cycles is not None else [] + self.number_of_cycles = [v if isinstance(v, int) else int(v) for v in self.number_of_cycles] + + if not isinstance(self.calcination_gaseous_environment, list): + self.calcination_gaseous_environment = [self.calcination_gaseous_environment] if self.calcination_gaseous_environment is not None else [] + self.calcination_gaseous_environment = [v if isinstance(v, str) else str(v) for v in self.calcination_gaseous_environment] + + if not isinstance(self.calcination_heating_rate, list): + self.calcination_heating_rate = [self.calcination_heating_rate] if self.calcination_heating_rate is not None else [] + self.calcination_heating_rate = [v if isinstance(v, float) else float(v) for v in self.calcination_heating_rate] + + if not isinstance(self.calcination_gas_flow_rate, list): + self.calcination_gas_flow_rate = [self.calcination_gas_flow_rate] if self.calcination_gas_flow_rate is not None else [] + self.calcination_gas_flow_rate = [v if isinstance(v, float) else float(v) for v in self.calcination_gas_flow_rate] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class CoPrecipitation(PreparationMethod): + """ + Catalyst preparation by co-precipitation: precursor salts are + simultaneously precipitated from solution by a precipitating agent. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["CoPrecipitation"] + class_class_curie: ClassVar[str] = "coremeta4cat:CoPrecipitation" + class_name: ClassVar[str] = "CoPrecipitation" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.CoPrecipitation + + precipitating_agent: Optional[Union[str, list[str]]] = empty_list() + precipitating_concentration: Optional[Union[float, list[float]]] = empty_list() + synthesis_ph: Optional[Union[float, list[float]]] = empty_list() + mixing_rate: Optional[Union[float, list[float]]] = empty_list() + mixing_time: Optional[Union[float, list[float]]] = empty_list() + mixing_temperature: Optional[Union[float, list[float]]] = empty_list() + order_of_addition: Optional[Union[str, list[str]]] = empty_list() + filtration: Optional[Union[str, list[str]]] = empty_list() + purification: Optional[Union[str, list[str]]] = empty_list() + aging_temperature: Optional[Union[float, list[float]]] = empty_list() + aging_time: Optional[Union[float, list[float]]] = empty_list() + drying_device: Optional[Union[str, list[str]]] = empty_list() + drying_temperature: Optional[Union[float, list[float]]] = empty_list() + drying_time: Optional[Union[float, list[float]]] = empty_list() + drying_atmosphere: Optional[Union[str, list[str]]] = empty_list() + calcination_initial_temperature: Optional[Union[float, list[float]]] = empty_list() + calcination_final_temperature: Optional[Union[float, list[float]]] = empty_list() + calcination_dwelling_time: Optional[Union[float, list[float]]] = empty_list() + number_of_cycles: Optional[Union[int, list[int]]] = empty_list() + calcination_gaseous_environment: Optional[Union[str, list[str]]] = empty_list() + calcination_heating_rate: Optional[Union[float, list[float]]] = empty_list() + calcination_gas_flow_rate: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.precipitating_agent, list): + self.precipitating_agent = [self.precipitating_agent] if self.precipitating_agent is not None else [] + self.precipitating_agent = [v if isinstance(v, str) else str(v) for v in self.precipitating_agent] + + if not isinstance(self.precipitating_concentration, list): + self.precipitating_concentration = [self.precipitating_concentration] if self.precipitating_concentration is not None else [] + self.precipitating_concentration = [v if isinstance(v, float) else float(v) for v in self.precipitating_concentration] + + if not isinstance(self.synthesis_ph, list): + self.synthesis_ph = [self.synthesis_ph] if self.synthesis_ph is not None else [] + self.synthesis_ph = [v if isinstance(v, float) else float(v) for v in self.synthesis_ph] + + if not isinstance(self.mixing_rate, list): + self.mixing_rate = [self.mixing_rate] if self.mixing_rate is not None else [] + self.mixing_rate = [v if isinstance(v, float) else float(v) for v in self.mixing_rate] + + if not isinstance(self.mixing_time, list): + self.mixing_time = [self.mixing_time] if self.mixing_time is not None else [] + self.mixing_time = [v if isinstance(v, float) else float(v) for v in self.mixing_time] + + if not isinstance(self.mixing_temperature, list): + self.mixing_temperature = [self.mixing_temperature] if self.mixing_temperature is not None else [] + self.mixing_temperature = [v if isinstance(v, float) else float(v) for v in self.mixing_temperature] + + if not isinstance(self.order_of_addition, list): + self.order_of_addition = [self.order_of_addition] if self.order_of_addition is not None else [] + self.order_of_addition = [v if isinstance(v, str) else str(v) for v in self.order_of_addition] + + if not isinstance(self.filtration, list): + self.filtration = [self.filtration] if self.filtration is not None else [] + self.filtration = [v if isinstance(v, str) else str(v) for v in self.filtration] + + if not isinstance(self.purification, list): + self.purification = [self.purification] if self.purification is not None else [] + self.purification = [v if isinstance(v, str) else str(v) for v in self.purification] + + if not isinstance(self.aging_temperature, list): + self.aging_temperature = [self.aging_temperature] if self.aging_temperature is not None else [] + self.aging_temperature = [v if isinstance(v, float) else float(v) for v in self.aging_temperature] + + if not isinstance(self.aging_time, list): + self.aging_time = [self.aging_time] if self.aging_time is not None else [] + self.aging_time = [v if isinstance(v, float) else float(v) for v in self.aging_time] + + if not isinstance(self.drying_device, list): + self.drying_device = [self.drying_device] if self.drying_device is not None else [] + self.drying_device = [v if isinstance(v, str) else str(v) for v in self.drying_device] + + if not isinstance(self.drying_temperature, list): + self.drying_temperature = [self.drying_temperature] if self.drying_temperature is not None else [] + self.drying_temperature = [v if isinstance(v, float) else float(v) for v in self.drying_temperature] + + if not isinstance(self.drying_time, list): + self.drying_time = [self.drying_time] if self.drying_time is not None else [] + self.drying_time = [v if isinstance(v, float) else float(v) for v in self.drying_time] + + if not isinstance(self.drying_atmosphere, list): + self.drying_atmosphere = [self.drying_atmosphere] if self.drying_atmosphere is not None else [] + self.drying_atmosphere = [v if isinstance(v, str) else str(v) for v in self.drying_atmosphere] + + if not isinstance(self.calcination_initial_temperature, list): + self.calcination_initial_temperature = [self.calcination_initial_temperature] if self.calcination_initial_temperature is not None else [] + self.calcination_initial_temperature = [v if isinstance(v, float) else float(v) for v in self.calcination_initial_temperature] + + if not isinstance(self.calcination_final_temperature, list): + self.calcination_final_temperature = [self.calcination_final_temperature] if self.calcination_final_temperature is not None else [] + self.calcination_final_temperature = [v if isinstance(v, float) else float(v) for v in self.calcination_final_temperature] + + if not isinstance(self.calcination_dwelling_time, list): + self.calcination_dwelling_time = [self.calcination_dwelling_time] if self.calcination_dwelling_time is not None else [] + self.calcination_dwelling_time = [v if isinstance(v, float) else float(v) for v in self.calcination_dwelling_time] + + if not isinstance(self.number_of_cycles, list): + self.number_of_cycles = [self.number_of_cycles] if self.number_of_cycles is not None else [] + self.number_of_cycles = [v if isinstance(v, int) else int(v) for v in self.number_of_cycles] + + if not isinstance(self.calcination_gaseous_environment, list): + self.calcination_gaseous_environment = [self.calcination_gaseous_environment] if self.calcination_gaseous_environment is not None else [] + self.calcination_gaseous_environment = [v if isinstance(v, str) else str(v) for v in self.calcination_gaseous_environment] + + if not isinstance(self.calcination_heating_rate, list): + self.calcination_heating_rate = [self.calcination_heating_rate] if self.calcination_heating_rate is not None else [] + self.calcination_heating_rate = [v if isinstance(v, float) else float(v) for v in self.calcination_heating_rate] + + if not isinstance(self.calcination_gas_flow_rate, list): + self.calcination_gas_flow_rate = [self.calcination_gas_flow_rate] if self.calcination_gas_flow_rate is not None else [] + self.calcination_gas_flow_rate = [v if isinstance(v, float) else float(v) for v in self.calcination_gas_flow_rate] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class SolGel(PreparationMethod): + """ + Catalyst preparation by the sol-gel process: hydrolysis and condensation + of precursor molecules to form a colloidal network (gel). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["SolGel"] + class_class_curie: ClassVar[str] = "coremeta4cat:SolGel" + class_name: ClassVar[str] = "SolGel" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.SolGel + + hydrolysis_ratio: Optional[Union[float, list[float]]] = empty_list() + aging_time: Optional[Union[float, list[float]]] = empty_list() + drying: Optional[Union[str, list[str]]] = empty_list() + surfactant_template: Optional[Union[str, list[str]]] = empty_list() + drying_device: Optional[Union[str, list[str]]] = empty_list() + drying_temperature: Optional[Union[float, list[float]]] = empty_list() + drying_time: Optional[Union[float, list[float]]] = empty_list() + drying_atmosphere: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.hydrolysis_ratio, list): + self.hydrolysis_ratio = [self.hydrolysis_ratio] if self.hydrolysis_ratio is not None else [] + self.hydrolysis_ratio = [v if isinstance(v, float) else float(v) for v in self.hydrolysis_ratio] + + if not isinstance(self.aging_time, list): + self.aging_time = [self.aging_time] if self.aging_time is not None else [] + self.aging_time = [v if isinstance(v, float) else float(v) for v in self.aging_time] + + if not isinstance(self.drying, list): + self.drying = [self.drying] if self.drying is not None else [] + self.drying = [v if isinstance(v, str) else str(v) for v in self.drying] + + if not isinstance(self.surfactant_template, list): + self.surfactant_template = [self.surfactant_template] if self.surfactant_template is not None else [] + self.surfactant_template = [v if isinstance(v, str) else str(v) for v in self.surfactant_template] + + if not isinstance(self.drying_device, list): + self.drying_device = [self.drying_device] if self.drying_device is not None else [] + self.drying_device = [v if isinstance(v, str) else str(v) for v in self.drying_device] + + if not isinstance(self.drying_temperature, list): + self.drying_temperature = [self.drying_temperature] if self.drying_temperature is not None else [] + self.drying_temperature = [v if isinstance(v, float) else float(v) for v in self.drying_temperature] + + if not isinstance(self.drying_time, list): + self.drying_time = [self.drying_time] if self.drying_time is not None else [] + self.drying_time = [v if isinstance(v, float) else float(v) for v in self.drying_time] + + if not isinstance(self.drying_atmosphere, list): + self.drying_atmosphere = [self.drying_atmosphere] if self.drying_atmosphere is not None else [] + self.drying_atmosphere = [v if isinstance(v, str) else str(v) for v in self.drying_atmosphere] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Solvothermal(PreparationMethod): + """ + Catalyst preparation under elevated temperature and pressure in a + sealed vessel using a non-aqueous solvent. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["Solvothermal"] + class_class_curie: ClassVar[str] = "coremeta4cat:Solvothermal" + class_name: ClassVar[str] = "Solvothermal" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Solvothermal + + filling_volume: Optional[Union[float, list[float]]] = empty_list() + stirrer_type: Optional[Union[str, list[str]]] = empty_list() + cooling_rate: Optional[Union[float, list[float]]] = empty_list() + synthesis_temperature: Optional[Union[float, list[float]]] = empty_list() + synthesis_duration: Optional[Union[float, list[float]]] = empty_list() + equipment: Optional[Union[str, list[str]]] = empty_list() + vessel_type: Optional[Union[str, list[str]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.filling_volume, list): + self.filling_volume = [self.filling_volume] if self.filling_volume is not None else [] + self.filling_volume = [v if isinstance(v, float) else float(v) for v in self.filling_volume] + + if not isinstance(self.stirrer_type, list): + self.stirrer_type = [self.stirrer_type] if self.stirrer_type is not None else [] + self.stirrer_type = [v if isinstance(v, str) else str(v) for v in self.stirrer_type] + + if not isinstance(self.cooling_rate, list): + self.cooling_rate = [self.cooling_rate] if self.cooling_rate is not None else [] + self.cooling_rate = [v if isinstance(v, float) else float(v) for v in self.cooling_rate] + + if not isinstance(self.synthesis_temperature, list): + self.synthesis_temperature = [self.synthesis_temperature] if self.synthesis_temperature is not None else [] + self.synthesis_temperature = [v if isinstance(v, float) else float(v) for v in self.synthesis_temperature] + + if not isinstance(self.synthesis_duration, list): + self.synthesis_duration = [self.synthesis_duration] if self.synthesis_duration is not None else [] + self.synthesis_duration = [v if isinstance(v, float) else float(v) for v in self.synthesis_duration] + + if not isinstance(self.equipment, list): + self.equipment = [self.equipment] if self.equipment is not None else [] + self.equipment = [v if isinstance(v, str) else str(v) for v in self.equipment] + + if not isinstance(self.vessel_type, list): + self.vessel_type = [self.vessel_type] if self.vessel_type is not None else [] + self.vessel_type = [v if isinstance(v, str) else str(v) for v in self.vessel_type] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class PlasmaAssisted(PreparationMethod): + """ + Catalyst preparation using plasma treatment to modify surface + properties or deposit active components. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["PlasmaAssisted"] + class_class_curie: ClassVar[str] = "coremeta4cat:PlasmaAssisted" + class_name: ClassVar[str] = "PlasmaAssisted" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.PlasmaAssisted + + plasma_type: Optional[Union[str, list[str]]] = empty_list() + power_input: Optional[Union[float, list[float]]] = empty_list() + exposure_time: Optional[Union[float, list[float]]] = empty_list() + synthesis_pressure: Optional[Union[float, list[float]]] = empty_list() + synthesis_temperature: Optional[Union[float, list[float]]] = empty_list() + synthesis_duration: Optional[Union[float, list[float]]] = empty_list() + equipment: Optional[Union[str, list[str]]] = empty_list() + vessel_type: Optional[Union[str, list[str]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.plasma_type, list): + self.plasma_type = [self.plasma_type] if self.plasma_type is not None else [] + self.plasma_type = [v if isinstance(v, str) else str(v) for v in self.plasma_type] + + if not isinstance(self.power_input, list): + self.power_input = [self.power_input] if self.power_input is not None else [] + self.power_input = [v if isinstance(v, float) else float(v) for v in self.power_input] + + if not isinstance(self.exposure_time, list): + self.exposure_time = [self.exposure_time] if self.exposure_time is not None else [] + self.exposure_time = [v if isinstance(v, float) else float(v) for v in self.exposure_time] + + if not isinstance(self.synthesis_pressure, list): + self.synthesis_pressure = [self.synthesis_pressure] if self.synthesis_pressure is not None else [] + self.synthesis_pressure = [v if isinstance(v, float) else float(v) for v in self.synthesis_pressure] + + if not isinstance(self.synthesis_temperature, list): + self.synthesis_temperature = [self.synthesis_temperature] if self.synthesis_temperature is not None else [] + self.synthesis_temperature = [v if isinstance(v, float) else float(v) for v in self.synthesis_temperature] + + if not isinstance(self.synthesis_duration, list): + self.synthesis_duration = [self.synthesis_duration] if self.synthesis_duration is not None else [] + self.synthesis_duration = [v if isinstance(v, float) else float(v) for v in self.synthesis_duration] + + if not isinstance(self.equipment, list): + self.equipment = [self.equipment] if self.equipment is not None else [] + self.equipment = [v if isinstance(v, str) else str(v) for v in self.equipment] + + if not isinstance(self.vessel_type, list): + self.vessel_type = [self.vessel_type] if self.vessel_type is not None else [] + self.vessel_type = [v if isinstance(v, str) else str(v) for v in self.vessel_type] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class CombustionSynthesis(PreparationMethod): + """ + Catalyst preparation by combustion of a fuel/oxidizer mixture, + producing metal oxide catalysts in a single rapid step. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["CombustionSynthesis"] + class_class_curie: ClassVar[str] = "coremeta4cat:CombustionSynthesis" + class_name: ClassVar[str] = "CombustionSynthesis" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.CombustionSynthesis + + fuel: Optional[Union[str, list[str]]] = empty_list() + oxidizer: Optional[Union[str, list[str]]] = empty_list() + fuel_to_oxidizer_ratio: Optional[Union[float, list[float]]] = empty_list() + set_temperature: Optional[Union[float, list[float]]] = empty_list() + post_treatment: Optional[Union[str, list[str]]] = empty_list() + synthesis_temperature: Optional[Union[float, list[float]]] = empty_list() + synthesis_duration: Optional[Union[float, list[float]]] = empty_list() + equipment: Optional[Union[str, list[str]]] = empty_list() + vessel_type: Optional[Union[str, list[str]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.fuel, list): + self.fuel = [self.fuel] if self.fuel is not None else [] + self.fuel = [v if isinstance(v, str) else str(v) for v in self.fuel] + + if not isinstance(self.oxidizer, list): + self.oxidizer = [self.oxidizer] if self.oxidizer is not None else [] + self.oxidizer = [v if isinstance(v, str) else str(v) for v in self.oxidizer] + + if not isinstance(self.fuel_to_oxidizer_ratio, list): + self.fuel_to_oxidizer_ratio = [self.fuel_to_oxidizer_ratio] if self.fuel_to_oxidizer_ratio is not None else [] + self.fuel_to_oxidizer_ratio = [v if isinstance(v, float) else float(v) for v in self.fuel_to_oxidizer_ratio] + + if not isinstance(self.set_temperature, list): + self.set_temperature = [self.set_temperature] if self.set_temperature is not None else [] + self.set_temperature = [v if isinstance(v, float) else float(v) for v in self.set_temperature] + + if not isinstance(self.post_treatment, list): + self.post_treatment = [self.post_treatment] if self.post_treatment is not None else [] + self.post_treatment = [v if isinstance(v, str) else str(v) for v in self.post_treatment] + + if not isinstance(self.synthesis_temperature, list): + self.synthesis_temperature = [self.synthesis_temperature] if self.synthesis_temperature is not None else [] + self.synthesis_temperature = [v if isinstance(v, float) else float(v) for v in self.synthesis_temperature] + + if not isinstance(self.synthesis_duration, list): + self.synthesis_duration = [self.synthesis_duration] if self.synthesis_duration is not None else [] + self.synthesis_duration = [v if isinstance(v, float) else float(v) for v in self.synthesis_duration] + + if not isinstance(self.equipment, list): + self.equipment = [self.equipment] if self.equipment is not None else [] + self.equipment = [v if isinstance(v, str) else str(v) for v in self.equipment] + + if not isinstance(self.vessel_type, list): + self.vessel_type = [self.vessel_type] if self.vessel_type is not None else [] + self.vessel_type = [v if isinstance(v, str) else str(v) for v in self.vessel_type] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class AtomicLayerDeposition(PreparationMethod): + """ + Catalyst preparation by atomic layer deposition (ALD): sequential + self-limiting surface reactions deposit a conformal thin film + of active phase onto a substrate. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["AtomicLayerDeposition"] + class_class_curie: ClassVar[str] = "coremeta4cat:AtomicLayerDeposition" + class_name: ClassVar[str] = "AtomicLayerDeposition" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.AtomicLayerDeposition + + substrate: Optional[Union[str, list[str]]] = empty_list() + pulse_time: Optional[Union[float, list[float]]] = empty_list() + purging_duration: Optional[Union[float, list[float]]] = empty_list() + number_of_cycles: Optional[Union[int, list[int]]] = empty_list() + deposition_temperature: Optional[Union[float, list[float]]] = empty_list() + carrier_gas: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.substrate, list): + self.substrate = [self.substrate] if self.substrate is not None else [] + self.substrate = [v if isinstance(v, str) else str(v) for v in self.substrate] + + if not isinstance(self.pulse_time, list): + self.pulse_time = [self.pulse_time] if self.pulse_time is not None else [] + self.pulse_time = [v if isinstance(v, float) else float(v) for v in self.pulse_time] + + if not isinstance(self.purging_duration, list): + self.purging_duration = [self.purging_duration] if self.purging_duration is not None else [] + self.purging_duration = [v if isinstance(v, float) else float(v) for v in self.purging_duration] + + if not isinstance(self.number_of_cycles, list): + self.number_of_cycles = [self.number_of_cycles] if self.number_of_cycles is not None else [] + self.number_of_cycles = [v if isinstance(v, int) else int(v) for v in self.number_of_cycles] + + if not isinstance(self.deposition_temperature, list): + self.deposition_temperature = [self.deposition_temperature] if self.deposition_temperature is not None else [] + self.deposition_temperature = [v if isinstance(v, float) else float(v) for v in self.deposition_temperature] + + if not isinstance(self.carrier_gas, list): + self.carrier_gas = [self.carrier_gas] if self.carrier_gas is not None else [] + self.carrier_gas = [v if isinstance(v, str) else str(v) for v in self.carrier_gas] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class DepositionPrecipitation(PreparationMethod): + """ + Catalyst preparation by deposition-precipitation: the active phase + is precipitated directly onto the support surface. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["DepositionPrecipitation"] + class_class_curie: ClassVar[str] = "coremeta4cat:DepositionPrecipitation" + class_name: ClassVar[str] = "DepositionPrecipitation" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.DepositionPrecipitation + + deposition_temperature: Optional[Union[float, list[float]]] = empty_list() + deposition_time: Optional[Union[float, list[float]]] = empty_list() + precipitating_agent: Optional[Union[str, list[str]]] = empty_list() + precipitating_concentration: Optional[Union[float, list[float]]] = empty_list() + synthesis_ph: Optional[Union[float, list[float]]] = empty_list() + mixing_rate: Optional[Union[float, list[float]]] = empty_list() + mixing_time: Optional[Union[float, list[float]]] = empty_list() + mixing_temperature: Optional[Union[float, list[float]]] = empty_list() + order_of_addition: Optional[Union[str, list[str]]] = empty_list() + filtration: Optional[Union[str, list[str]]] = empty_list() + purification: Optional[Union[str, list[str]]] = empty_list() + aging_temperature: Optional[Union[float, list[float]]] = empty_list() + aging_time: Optional[Union[float, list[float]]] = empty_list() + drying_device: Optional[Union[str, list[str]]] = empty_list() + drying_temperature: Optional[Union[float, list[float]]] = empty_list() + drying_time: Optional[Union[float, list[float]]] = empty_list() + drying_atmosphere: Optional[Union[str, list[str]]] = empty_list() + calcination_initial_temperature: Optional[Union[float, list[float]]] = empty_list() + calcination_final_temperature: Optional[Union[float, list[float]]] = empty_list() + calcination_dwelling_time: Optional[Union[float, list[float]]] = empty_list() + number_of_cycles: Optional[Union[int, list[int]]] = empty_list() + calcination_gaseous_environment: Optional[Union[str, list[str]]] = empty_list() + calcination_heating_rate: Optional[Union[float, list[float]]] = empty_list() + calcination_gas_flow_rate: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.deposition_temperature, list): + self.deposition_temperature = [self.deposition_temperature] if self.deposition_temperature is not None else [] + self.deposition_temperature = [v if isinstance(v, float) else float(v) for v in self.deposition_temperature] + + if not isinstance(self.deposition_time, list): + self.deposition_time = [self.deposition_time] if self.deposition_time is not None else [] + self.deposition_time = [v if isinstance(v, float) else float(v) for v in self.deposition_time] + + if not isinstance(self.precipitating_agent, list): + self.precipitating_agent = [self.precipitating_agent] if self.precipitating_agent is not None else [] + self.precipitating_agent = [v if isinstance(v, str) else str(v) for v in self.precipitating_agent] + + if not isinstance(self.precipitating_concentration, list): + self.precipitating_concentration = [self.precipitating_concentration] if self.precipitating_concentration is not None else [] + self.precipitating_concentration = [v if isinstance(v, float) else float(v) for v in self.precipitating_concentration] + + if not isinstance(self.synthesis_ph, list): + self.synthesis_ph = [self.synthesis_ph] if self.synthesis_ph is not None else [] + self.synthesis_ph = [v if isinstance(v, float) else float(v) for v in self.synthesis_ph] + + if not isinstance(self.mixing_rate, list): + self.mixing_rate = [self.mixing_rate] if self.mixing_rate is not None else [] + self.mixing_rate = [v if isinstance(v, float) else float(v) for v in self.mixing_rate] + + if not isinstance(self.mixing_time, list): + self.mixing_time = [self.mixing_time] if self.mixing_time is not None else [] + self.mixing_time = [v if isinstance(v, float) else float(v) for v in self.mixing_time] + + if not isinstance(self.mixing_temperature, list): + self.mixing_temperature = [self.mixing_temperature] if self.mixing_temperature is not None else [] + self.mixing_temperature = [v if isinstance(v, float) else float(v) for v in self.mixing_temperature] + + if not isinstance(self.order_of_addition, list): + self.order_of_addition = [self.order_of_addition] if self.order_of_addition is not None else [] + self.order_of_addition = [v if isinstance(v, str) else str(v) for v in self.order_of_addition] + + if not isinstance(self.filtration, list): + self.filtration = [self.filtration] if self.filtration is not None else [] + self.filtration = [v if isinstance(v, str) else str(v) for v in self.filtration] + + if not isinstance(self.purification, list): + self.purification = [self.purification] if self.purification is not None else [] + self.purification = [v if isinstance(v, str) else str(v) for v in self.purification] + + if not isinstance(self.aging_temperature, list): + self.aging_temperature = [self.aging_temperature] if self.aging_temperature is not None else [] + self.aging_temperature = [v if isinstance(v, float) else float(v) for v in self.aging_temperature] + + if not isinstance(self.aging_time, list): + self.aging_time = [self.aging_time] if self.aging_time is not None else [] + self.aging_time = [v if isinstance(v, float) else float(v) for v in self.aging_time] + + if not isinstance(self.drying_device, list): + self.drying_device = [self.drying_device] if self.drying_device is not None else [] + self.drying_device = [v if isinstance(v, str) else str(v) for v in self.drying_device] + + if not isinstance(self.drying_temperature, list): + self.drying_temperature = [self.drying_temperature] if self.drying_temperature is not None else [] + self.drying_temperature = [v if isinstance(v, float) else float(v) for v in self.drying_temperature] + + if not isinstance(self.drying_time, list): + self.drying_time = [self.drying_time] if self.drying_time is not None else [] + self.drying_time = [v if isinstance(v, float) else float(v) for v in self.drying_time] + + if not isinstance(self.drying_atmosphere, list): + self.drying_atmosphere = [self.drying_atmosphere] if self.drying_atmosphere is not None else [] + self.drying_atmosphere = [v if isinstance(v, str) else str(v) for v in self.drying_atmosphere] + + if not isinstance(self.calcination_initial_temperature, list): + self.calcination_initial_temperature = [self.calcination_initial_temperature] if self.calcination_initial_temperature is not None else [] + self.calcination_initial_temperature = [v if isinstance(v, float) else float(v) for v in self.calcination_initial_temperature] + + if not isinstance(self.calcination_final_temperature, list): + self.calcination_final_temperature = [self.calcination_final_temperature] if self.calcination_final_temperature is not None else [] + self.calcination_final_temperature = [v if isinstance(v, float) else float(v) for v in self.calcination_final_temperature] + + if not isinstance(self.calcination_dwelling_time, list): + self.calcination_dwelling_time = [self.calcination_dwelling_time] if self.calcination_dwelling_time is not None else [] + self.calcination_dwelling_time = [v if isinstance(v, float) else float(v) for v in self.calcination_dwelling_time] + + if not isinstance(self.number_of_cycles, list): + self.number_of_cycles = [self.number_of_cycles] if self.number_of_cycles is not None else [] + self.number_of_cycles = [v if isinstance(v, int) else int(v) for v in self.number_of_cycles] + + if not isinstance(self.calcination_gaseous_environment, list): + self.calcination_gaseous_environment = [self.calcination_gaseous_environment] if self.calcination_gaseous_environment is not None else [] + self.calcination_gaseous_environment = [v if isinstance(v, str) else str(v) for v in self.calcination_gaseous_environment] + + if not isinstance(self.calcination_heating_rate, list): + self.calcination_heating_rate = [self.calcination_heating_rate] if self.calcination_heating_rate is not None else [] + self.calcination_heating_rate = [v if isinstance(v, float) else float(v) for v in self.calcination_heating_rate] + + if not isinstance(self.calcination_gas_flow_rate, list): + self.calcination_gas_flow_rate = [self.calcination_gas_flow_rate] if self.calcination_gas_flow_rate is not None else [] + self.calcination_gas_flow_rate = [v if isinstance(v, float) else float(v) for v in self.calcination_gas_flow_rate] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class MicrowaveAssisted(PreparationMethod): + """ + Catalyst preparation using microwave irradiation to rapidly and + uniformly heat the reaction mixture. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["MicrowaveAssisted"] + class_class_curie: ClassVar[str] = "coremeta4cat:MicrowaveAssisted" + class_name: ClassVar[str] = "MicrowaveAssisted" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.MicrowaveAssisted + + power: Optional[Union[float, list[float]]] = empty_list() + microwave_frequency: Optional[Union[float, list[float]]] = empty_list() + synthesis_temperature: Optional[Union[float, list[float]]] = empty_list() + synthesis_duration: Optional[Union[float, list[float]]] = empty_list() + equipment: Optional[Union[str, list[str]]] = empty_list() + vessel_type: Optional[Union[str, list[str]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.power, list): + self.power = [self.power] if self.power is not None else [] + self.power = [v if isinstance(v, float) else float(v) for v in self.power] + + if not isinstance(self.microwave_frequency, list): + self.microwave_frequency = [self.microwave_frequency] if self.microwave_frequency is not None else [] + self.microwave_frequency = [v if isinstance(v, float) else float(v) for v in self.microwave_frequency] + + if not isinstance(self.synthesis_temperature, list): + self.synthesis_temperature = [self.synthesis_temperature] if self.synthesis_temperature is not None else [] + self.synthesis_temperature = [v if isinstance(v, float) else float(v) for v in self.synthesis_temperature] + + if not isinstance(self.synthesis_duration, list): + self.synthesis_duration = [self.synthesis_duration] if self.synthesis_duration is not None else [] + self.synthesis_duration = [v if isinstance(v, float) else float(v) for v in self.synthesis_duration] + + if not isinstance(self.equipment, list): + self.equipment = [self.equipment] if self.equipment is not None else [] + self.equipment = [v if isinstance(v, str) else str(v) for v in self.equipment] + + if not isinstance(self.vessel_type, list): + self.vessel_type = [self.vessel_type] if self.vessel_type is not None else [] + self.vessel_type = [v if isinstance(v, str) else str(v) for v in self.vessel_type] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class SonochemicalSynthesis(PreparationMethod): + """ + Catalyst preparation using ultrasonic irradiation to drive chemical + reactions via acoustic cavitation. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["SonochemicalSynthesis"] + class_class_curie: ClassVar[str] = "coremeta4cat:SonochemicalSynthesis" + class_name: ClassVar[str] = "SonochemicalSynthesis" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.SonochemicalSynthesis + + sonication_power: Optional[Union[float, list[float]]] = empty_list() + sonication_duration: Optional[Union[float, list[float]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + drying_device: Optional[Union[str, list[str]]] = empty_list() + drying_temperature: Optional[Union[float, list[float]]] = empty_list() + drying_time: Optional[Union[float, list[float]]] = empty_list() + drying_atmosphere: Optional[Union[str, list[str]]] = empty_list() + calcination_initial_temperature: Optional[Union[float, list[float]]] = empty_list() + calcination_final_temperature: Optional[Union[float, list[float]]] = empty_list() + calcination_dwelling_time: Optional[Union[float, list[float]]] = empty_list() + number_of_cycles: Optional[Union[int, list[int]]] = empty_list() + calcination_gaseous_environment: Optional[Union[str, list[str]]] = empty_list() + calcination_heating_rate: Optional[Union[float, list[float]]] = empty_list() + calcination_gas_flow_rate: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.sonication_power, list): + self.sonication_power = [self.sonication_power] if self.sonication_power is not None else [] + self.sonication_power = [v if isinstance(v, float) else float(v) for v in self.sonication_power] + + if not isinstance(self.sonication_duration, list): + self.sonication_duration = [self.sonication_duration] if self.sonication_duration is not None else [] + self.sonication_duration = [v if isinstance(v, float) else float(v) for v in self.sonication_duration] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + if not isinstance(self.drying_device, list): + self.drying_device = [self.drying_device] if self.drying_device is not None else [] + self.drying_device = [v if isinstance(v, str) else str(v) for v in self.drying_device] + + if not isinstance(self.drying_temperature, list): + self.drying_temperature = [self.drying_temperature] if self.drying_temperature is not None else [] + self.drying_temperature = [v if isinstance(v, float) else float(v) for v in self.drying_temperature] + + if not isinstance(self.drying_time, list): + self.drying_time = [self.drying_time] if self.drying_time is not None else [] + self.drying_time = [v if isinstance(v, float) else float(v) for v in self.drying_time] + + if not isinstance(self.drying_atmosphere, list): + self.drying_atmosphere = [self.drying_atmosphere] if self.drying_atmosphere is not None else [] + self.drying_atmosphere = [v if isinstance(v, str) else str(v) for v in self.drying_atmosphere] + + if not isinstance(self.calcination_initial_temperature, list): + self.calcination_initial_temperature = [self.calcination_initial_temperature] if self.calcination_initial_temperature is not None else [] + self.calcination_initial_temperature = [v if isinstance(v, float) else float(v) for v in self.calcination_initial_temperature] + + if not isinstance(self.calcination_final_temperature, list): + self.calcination_final_temperature = [self.calcination_final_temperature] if self.calcination_final_temperature is not None else [] + self.calcination_final_temperature = [v if isinstance(v, float) else float(v) for v in self.calcination_final_temperature] + + if not isinstance(self.calcination_dwelling_time, list): + self.calcination_dwelling_time = [self.calcination_dwelling_time] if self.calcination_dwelling_time is not None else [] + self.calcination_dwelling_time = [v if isinstance(v, float) else float(v) for v in self.calcination_dwelling_time] + + if not isinstance(self.number_of_cycles, list): + self.number_of_cycles = [self.number_of_cycles] if self.number_of_cycles is not None else [] + self.number_of_cycles = [v if isinstance(v, int) else int(v) for v in self.number_of_cycles] + + if not isinstance(self.calcination_gaseous_environment, list): + self.calcination_gaseous_environment = [self.calcination_gaseous_environment] if self.calcination_gaseous_environment is not None else [] + self.calcination_gaseous_environment = [v if isinstance(v, str) else str(v) for v in self.calcination_gaseous_environment] + + if not isinstance(self.calcination_heating_rate, list): + self.calcination_heating_rate = [self.calcination_heating_rate] if self.calcination_heating_rate is not None else [] + self.calcination_heating_rate = [v if isinstance(v, float) else float(v) for v in self.calcination_heating_rate] + + if not isinstance(self.calcination_gas_flow_rate, list): + self.calcination_gas_flow_rate = [self.calcination_gas_flow_rate] if self.calcination_gas_flow_rate is not None else [] + self.calcination_gas_flow_rate = [v if isinstance(v, float) else float(v) for v in self.calcination_gas_flow_rate] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class FlameSprayPyrolysis(PreparationMethod): + """ + Catalyst preparation by flame spray pyrolysis (FSP): a liquid precursor + solution is atomised and combusted in a flame to produce nanoparticles. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = VOC4CAT["0007031"] + class_class_curie: ClassVar[str] = "VOC4CAT:0007031" + class_name: ClassVar[str] = "FlameSprayPyrolysis" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.FlameSprayPyrolysis + + flame_type: Optional[Union[str, list[str]]] = empty_list() + flow_rate: Optional[Union[float, list[float]]] = empty_list() + inlet_system: Optional[Union[str, list[str]]] = empty_list() + flame_ring: Optional[Union[str, list[str]]] = empty_list() + dispersant: Optional[Union[str, list[str]]] = empty_list() + capillary_pressure: Optional[Union[float, list[float]]] = empty_list() + fuel_dispersant_ratio: Optional[Union[float, list[float]]] = empty_list() + filtration_device: Optional[Union[str, list[str]]] = empty_list() + filter_type: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.flame_type, list): + self.flame_type = [self.flame_type] if self.flame_type is not None else [] + self.flame_type = [v if isinstance(v, str) else str(v) for v in self.flame_type] + + if not isinstance(self.flow_rate, list): + self.flow_rate = [self.flow_rate] if self.flow_rate is not None else [] + self.flow_rate = [v if isinstance(v, float) else float(v) for v in self.flow_rate] + + if not isinstance(self.inlet_system, list): + self.inlet_system = [self.inlet_system] if self.inlet_system is not None else [] + self.inlet_system = [v if isinstance(v, str) else str(v) for v in self.inlet_system] + + if not isinstance(self.flame_ring, list): + self.flame_ring = [self.flame_ring] if self.flame_ring is not None else [] + self.flame_ring = [v if isinstance(v, str) else str(v) for v in self.flame_ring] + + if not isinstance(self.dispersant, list): + self.dispersant = [self.dispersant] if self.dispersant is not None else [] + self.dispersant = [v if isinstance(v, str) else str(v) for v in self.dispersant] + + if not isinstance(self.capillary_pressure, list): + self.capillary_pressure = [self.capillary_pressure] if self.capillary_pressure is not None else [] + self.capillary_pressure = [v if isinstance(v, float) else float(v) for v in self.capillary_pressure] + + if not isinstance(self.fuel_dispersant_ratio, list): + self.fuel_dispersant_ratio = [self.fuel_dispersant_ratio] if self.fuel_dispersant_ratio is not None else [] + self.fuel_dispersant_ratio = [v if isinstance(v, float) else float(v) for v in self.fuel_dispersant_ratio] + + if not isinstance(self.filtration_device, list): + self.filtration_device = [self.filtration_device] if self.filtration_device is not None else [] + self.filtration_device = [v if isinstance(v, str) else str(v) for v in self.filtration_device] + + if not isinstance(self.filter_type, list): + self.filter_type = [self.filter_type] if self.filter_type is not None else [] + self.filter_type = [v if isinstance(v, str) else str(v) for v in self.filter_type] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class MechanochemicalSynthesis(PreparationMethod): + """ + Catalyst preparation by mechanical milling or grinding, optionally + combined with thermal treatment. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["MechanochemicalSynthesis"] + class_class_curie: ClassVar[str] = "coremeta4cat:MechanochemicalSynthesis" + class_name: ClassVar[str] = "MechanochemicalSynthesis" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.MechanochemicalSynthesis + + vessel_volume: Optional[Union[float, list[float]]] = empty_list() + size_and_material: Optional[Union[str, list[str]]] = empty_list() + milling_speed: Optional[Union[float, list[float]]] = empty_list() + milling_duration: Optional[Union[float, list[float]]] = empty_list() + ball_material: Optional[Union[str, list[str]]] = empty_list() + ball_size: Optional[Union[float, list[float]]] = empty_list() + ball_to_powder_ratio: Optional[Union[float, list[float]]] = empty_list() + synthesis_temperature: Optional[Union[float, list[float]]] = empty_list() + synthesis_duration: Optional[Union[float, list[float]]] = empty_list() + equipment: Optional[Union[str, list[str]]] = empty_list() + vessel_type: Optional[Union[str, list[str]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.vessel_volume, list): + self.vessel_volume = [self.vessel_volume] if self.vessel_volume is not None else [] + self.vessel_volume = [v if isinstance(v, float) else float(v) for v in self.vessel_volume] + + if not isinstance(self.size_and_material, list): + self.size_and_material = [self.size_and_material] if self.size_and_material is not None else [] + self.size_and_material = [v if isinstance(v, str) else str(v) for v in self.size_and_material] + + if not isinstance(self.milling_speed, list): + self.milling_speed = [self.milling_speed] if self.milling_speed is not None else [] + self.milling_speed = [v if isinstance(v, float) else float(v) for v in self.milling_speed] + + if not isinstance(self.milling_duration, list): + self.milling_duration = [self.milling_duration] if self.milling_duration is not None else [] + self.milling_duration = [v if isinstance(v, float) else float(v) for v in self.milling_duration] + + if not isinstance(self.ball_material, list): + self.ball_material = [self.ball_material] if self.ball_material is not None else [] + self.ball_material = [v if isinstance(v, str) else str(v) for v in self.ball_material] + + if not isinstance(self.ball_size, list): + self.ball_size = [self.ball_size] if self.ball_size is not None else [] + self.ball_size = [v if isinstance(v, float) else float(v) for v in self.ball_size] + + if not isinstance(self.ball_to_powder_ratio, list): + self.ball_to_powder_ratio = [self.ball_to_powder_ratio] if self.ball_to_powder_ratio is not None else [] + self.ball_to_powder_ratio = [v if isinstance(v, float) else float(v) for v in self.ball_to_powder_ratio] + + if not isinstance(self.synthesis_temperature, list): + self.synthesis_temperature = [self.synthesis_temperature] if self.synthesis_temperature is not None else [] + self.synthesis_temperature = [v if isinstance(v, float) else float(v) for v in self.synthesis_temperature] + + if not isinstance(self.synthesis_duration, list): + self.synthesis_duration = [self.synthesis_duration] if self.synthesis_duration is not None else [] + self.synthesis_duration = [v if isinstance(v, float) else float(v) for v in self.synthesis_duration] + + if not isinstance(self.equipment, list): + self.equipment = [self.equipment] if self.equipment is not None else [] + self.equipment = [v if isinstance(v, str) else str(v) for v in self.equipment] + + if not isinstance(self.vessel_type, list): + self.vessel_type = [self.vessel_type] if self.vessel_type is not None else [] + self.vessel_type = [v if isinstance(v, str) else str(v) for v in self.vessel_type] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Sublimation(PreparationMethod): + """ + Catalyst preparation by sublimation: a solid precursor is vaporised + and deposited onto a substrate without passing through a liquid phase. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["Sublimation"] + class_class_curie: ClassVar[str] = "coremeta4cat:Sublimation" + class_name: ClassVar[str] = "Sublimation" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Sublimation + + synthesis_pressure: Optional[Union[float, list[float]]] = empty_list() + synthesis_temperature: Optional[Union[float, list[float]]] = empty_list() + synthesis_duration: Optional[Union[float, list[float]]] = empty_list() + equipment: Optional[Union[str, list[str]]] = empty_list() + vessel_type: Optional[Union[str, list[str]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.synthesis_pressure, list): + self.synthesis_pressure = [self.synthesis_pressure] if self.synthesis_pressure is not None else [] + self.synthesis_pressure = [v if isinstance(v, float) else float(v) for v in self.synthesis_pressure] + + if not isinstance(self.synthesis_temperature, list): + self.synthesis_temperature = [self.synthesis_temperature] if self.synthesis_temperature is not None else [] + self.synthesis_temperature = [v if isinstance(v, float) else float(v) for v in self.synthesis_temperature] + + if not isinstance(self.synthesis_duration, list): + self.synthesis_duration = [self.synthesis_duration] if self.synthesis_duration is not None else [] + self.synthesis_duration = [v if isinstance(v, float) else float(v) for v in self.synthesis_duration] + + if not isinstance(self.equipment, list): + self.equipment = [self.equipment] if self.equipment is not None else [] + self.equipment = [v if isinstance(v, str) else str(v) for v in self.equipment] + + if not isinstance(self.vessel_type, list): + self.vessel_type = [self.vessel_type] if self.vessel_type is not None else [] + self.vessel_type = [v if isinstance(v, str) else str(v) for v in self.vessel_type] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class MolecularSynthesis(PreparationMethod): + """ + Catalyst preparation by molecular (organometallic or coordination) + chemistry routes, including crystallisation and purification steps. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["MolecularSynthesis"] + class_class_curie: ClassVar[str] = "coremeta4cat:MolecularSynthesis" + class_name: ClassVar[str] = "MolecularSynthesis" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.MolecularSynthesis + + reaction_vessel: Optional[Union[str, list[str]]] = empty_list() + mixing_device: Optional[Union[str, list[str]]] = empty_list() + stirring_duration: Optional[Union[float, list[float]]] = empty_list() + stirring_speed: Optional[Union[float, list[float]]] = empty_list() + mixing_temperature: Optional[Union[float, list[float]]] = empty_list() + filtration_device: Optional[Union[str, list[str]]] = empty_list() + filter_type: Optional[Union[str, list[str]]] = empty_list() + crystallisation_solvents: Optional[Union[str, list[str]]] = empty_list() + precipitation_agent: Optional[Union[str, list[str]]] = empty_list() + crystallisation_duration: Optional[Union[float, list[float]]] = empty_list() + purification_solvent: Optional[Union[str, list[str]]] = empty_list() + number_of_cycles: Optional[Union[int, list[int]]] = empty_list() + temperature_ramp: Optional[Union[float, list[float]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + drying_device: Optional[Union[str, list[str]]] = empty_list() + drying_temperature: Optional[Union[float, list[float]]] = empty_list() + drying_time: Optional[Union[float, list[float]]] = empty_list() + drying_atmosphere: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.reaction_vessel, list): + self.reaction_vessel = [self.reaction_vessel] if self.reaction_vessel is not None else [] + self.reaction_vessel = [v if isinstance(v, str) else str(v) for v in self.reaction_vessel] + + if not isinstance(self.mixing_device, list): + self.mixing_device = [self.mixing_device] if self.mixing_device is not None else [] + self.mixing_device = [v if isinstance(v, str) else str(v) for v in self.mixing_device] + + if not isinstance(self.stirring_duration, list): + self.stirring_duration = [self.stirring_duration] if self.stirring_duration is not None else [] + self.stirring_duration = [v if isinstance(v, float) else float(v) for v in self.stirring_duration] + + if not isinstance(self.stirring_speed, list): + self.stirring_speed = [self.stirring_speed] if self.stirring_speed is not None else [] + self.stirring_speed = [v if isinstance(v, float) else float(v) for v in self.stirring_speed] + + if not isinstance(self.mixing_temperature, list): + self.mixing_temperature = [self.mixing_temperature] if self.mixing_temperature is not None else [] + self.mixing_temperature = [v if isinstance(v, float) else float(v) for v in self.mixing_temperature] + + if not isinstance(self.filtration_device, list): + self.filtration_device = [self.filtration_device] if self.filtration_device is not None else [] + self.filtration_device = [v if isinstance(v, str) else str(v) for v in self.filtration_device] + + if not isinstance(self.filter_type, list): + self.filter_type = [self.filter_type] if self.filter_type is not None else [] + self.filter_type = [v if isinstance(v, str) else str(v) for v in self.filter_type] + + if not isinstance(self.crystallisation_solvents, list): + self.crystallisation_solvents = [self.crystallisation_solvents] if self.crystallisation_solvents is not None else [] + self.crystallisation_solvents = [v if isinstance(v, str) else str(v) for v in self.crystallisation_solvents] + + if not isinstance(self.precipitation_agent, list): + self.precipitation_agent = [self.precipitation_agent] if self.precipitation_agent is not None else [] + self.precipitation_agent = [v if isinstance(v, str) else str(v) for v in self.precipitation_agent] + + if not isinstance(self.crystallisation_duration, list): + self.crystallisation_duration = [self.crystallisation_duration] if self.crystallisation_duration is not None else [] + self.crystallisation_duration = [v if isinstance(v, float) else float(v) for v in self.crystallisation_duration] + + if not isinstance(self.purification_solvent, list): + self.purification_solvent = [self.purification_solvent] if self.purification_solvent is not None else [] + self.purification_solvent = [v if isinstance(v, str) else str(v) for v in self.purification_solvent] + + if not isinstance(self.number_of_cycles, list): + self.number_of_cycles = [self.number_of_cycles] if self.number_of_cycles is not None else [] + self.number_of_cycles = [v if isinstance(v, int) else int(v) for v in self.number_of_cycles] + + if not isinstance(self.temperature_ramp, list): + self.temperature_ramp = [self.temperature_ramp] if self.temperature_ramp is not None else [] + self.temperature_ramp = [v if isinstance(v, float) else float(v) for v in self.temperature_ramp] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + if not isinstance(self.drying_device, list): + self.drying_device = [self.drying_device] if self.drying_device is not None else [] + self.drying_device = [v if isinstance(v, str) else str(v) for v in self.drying_device] + + if not isinstance(self.drying_temperature, list): + self.drying_temperature = [self.drying_temperature] if self.drying_temperature is not None else [] + self.drying_temperature = [v if isinstance(v, float) else float(v) for v in self.drying_temperature] + + if not isinstance(self.drying_time, list): + self.drying_time = [self.drying_time] if self.drying_time is not None else [] + self.drying_time = [v if isinstance(v, float) else float(v) for v in self.drying_time] + + if not isinstance(self.drying_atmosphere, list): + self.drying_atmosphere = [self.drying_atmosphere] if self.drying_atmosphere is not None else [] + self.drying_atmosphere = [v if isinstance(v, str) else str(v) for v in self.drying_atmosphere] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ExsolutionSynthesis(PreparationMethod): + """ + Catalyst preparation by exsolution: metal nanoparticles are grown on + a perovskite oxide surface by reduction/oxidation cycling. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["ExsolutionSynthesis"] + class_class_curie: ClassVar[str] = "coremeta4cat:ExsolutionSynthesis" + class_name: ClassVar[str] = "ExsolutionSynthesis" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ExsolutionSynthesis + + calcination_initial_temperature: Optional[Union[float, list[float]]] = empty_list() + calcination_final_temperature: Optional[Union[float, list[float]]] = empty_list() + calcination_dwelling_time: Optional[Union[float, list[float]]] = empty_list() + number_of_cycles: Optional[Union[int, list[int]]] = empty_list() + calcination_gaseous_environment: Optional[Union[str, list[str]]] = empty_list() + calcination_heating_rate: Optional[Union[float, list[float]]] = empty_list() + calcination_gas_flow_rate: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.calcination_initial_temperature, list): + self.calcination_initial_temperature = [self.calcination_initial_temperature] if self.calcination_initial_temperature is not None else [] + self.calcination_initial_temperature = [v if isinstance(v, float) else float(v) for v in self.calcination_initial_temperature] + + if not isinstance(self.calcination_final_temperature, list): + self.calcination_final_temperature = [self.calcination_final_temperature] if self.calcination_final_temperature is not None else [] + self.calcination_final_temperature = [v if isinstance(v, float) else float(v) for v in self.calcination_final_temperature] + + if not isinstance(self.calcination_dwelling_time, list): + self.calcination_dwelling_time = [self.calcination_dwelling_time] if self.calcination_dwelling_time is not None else [] + self.calcination_dwelling_time = [v if isinstance(v, float) else float(v) for v in self.calcination_dwelling_time] + + if not isinstance(self.number_of_cycles, list): + self.number_of_cycles = [self.number_of_cycles] if self.number_of_cycles is not None else [] + self.number_of_cycles = [v if isinstance(v, int) else int(v) for v in self.number_of_cycles] + + if not isinstance(self.calcination_gaseous_environment, list): + self.calcination_gaseous_environment = [self.calcination_gaseous_environment] if self.calcination_gaseous_environment is not None else [] + self.calcination_gaseous_environment = [v if isinstance(v, str) else str(v) for v in self.calcination_gaseous_environment] + + if not isinstance(self.calcination_heating_rate, list): + self.calcination_heating_rate = [self.calcination_heating_rate] if self.calcination_heating_rate is not None else [] + self.calcination_heating_rate = [v if isinstance(v, float) else float(v) for v in self.calcination_heating_rate] + + if not isinstance(self.calcination_gas_flow_rate, list): + self.calcination_gas_flow_rate = [self.calcination_gas_flow_rate] if self.calcination_gas_flow_rate is not None else [] + self.calcination_gas_flow_rate = [v if isinstance(v, float) else float(v) for v in self.calcination_gas_flow_rate] + + super().__post_init__(**kwargs) + + +class CharacterizationTechnique(Plan): + """ + An abstract Plan describing the analytical protocol used to characterize + a catalyst. Concrete subclasses specify technique-specific parameters. + Linked from Characterization via realized_plan. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = OBI["0000272"] + class_class_curie: ClassVar[str] = "OBI:0000272" + class_name: ClassVar[str] = "CharacterizationTechnique" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.CharacterizationTechnique + + +@dataclass(repr=False) +class PowderXRD(CharacterizationTechnique): + """ + Powder X-ray diffraction for phase identification and structural analysis. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHMO["0000158"] + class_class_curie: ClassVar[str] = "CHMO:0000158" + class_name: ClassVar[str] = "PowderXRD" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.PowderXRD + + minimum_2theta: Optional[Union[float, list[float]]] = empty_list() + maximum_2theta: Optional[Union[float, list[float]]] = empty_list() + step_size: Optional[Union[float, list[float]]] = empty_list() + operation_mode: Optional[Union[str, list[str]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + sample_spinning_speed: Optional[Union[float, list[float]]] = empty_list() + experiment_duration: Optional[Union[float, list[float]]] = empty_list() + xray_source: Optional[Union[str, list[str]]] = empty_list() + monochromator: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.minimum_2theta, list): + self.minimum_2theta = [self.minimum_2theta] if self.minimum_2theta is not None else [] + self.minimum_2theta = [v if isinstance(v, float) else float(v) for v in self.minimum_2theta] + + if not isinstance(self.maximum_2theta, list): + self.maximum_2theta = [self.maximum_2theta] if self.maximum_2theta is not None else [] + self.maximum_2theta = [v if isinstance(v, float) else float(v) for v in self.maximum_2theta] + + if not isinstance(self.step_size, list): + self.step_size = [self.step_size] if self.step_size is not None else [] + self.step_size = [v if isinstance(v, float) else float(v) for v in self.step_size] + + if not isinstance(self.operation_mode, list): + self.operation_mode = [self.operation_mode] if self.operation_mode is not None else [] + self.operation_mode = [v if isinstance(v, str) else str(v) for v in self.operation_mode] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + if not isinstance(self.sample_spinning_speed, list): + self.sample_spinning_speed = [self.sample_spinning_speed] if self.sample_spinning_speed is not None else [] + self.sample_spinning_speed = [v if isinstance(v, float) else float(v) for v in self.sample_spinning_speed] + + if not isinstance(self.experiment_duration, list): + self.experiment_duration = [self.experiment_duration] if self.experiment_duration is not None else [] + self.experiment_duration = [v if isinstance(v, float) else float(v) for v in self.experiment_duration] + + if not isinstance(self.xray_source, list): + self.xray_source = [self.xray_source] if self.xray_source is not None else [] + self.xray_source = [v if isinstance(v, str) else str(v) for v in self.xray_source] + + if not isinstance(self.monochromator, list): + self.monochromator = [self.monochromator] if self.monochromator is not None else [] + self.monochromator = [v if isinstance(v, str) else str(v) for v in self.monochromator] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class SingleCrystalXRD(CharacterizationTechnique): + """ + Single crystal X-ray diffraction for structure determination. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHMO["0000852"] + class_class_curie: ClassVar[str] = "CHMO:0000852" + class_name: ClassVar[str] = "SingleCrystalXRD" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.SingleCrystalXRD + + temperature: Optional[Union[float, list[float]]] = empty_list() + xray_source: Optional[Union[str, list[str]]] = empty_list() + monochromator: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + if not isinstance(self.xray_source, list): + self.xray_source = [self.xray_source] if self.xray_source is not None else [] + self.xray_source = [v if isinstance(v, str) else str(v) for v in self.xray_source] + + if not isinstance(self.monochromator, list): + self.monochromator = [self.monochromator] if self.monochromator is not None else [] + self.monochromator = [v if isinstance(v, str) else str(v) for v in self.monochromator] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class XRayAbsorptionSpectroscopy(CharacterizationTechnique): + """ + X-ray absorption spectroscopy (XAS/XANES/EXAFS) for electronic and local structure analysis. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = VOC4CAT["0000286"] + class_class_curie: ClassVar[str] = "VOC4CAT:0000286" + class_name: ClassVar[str] = "XRayAbsorptionSpectroscopy" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.XRayAbsorptionSpectroscopy + + operation_mode: Optional[Union[str, list[str]]] = empty_list() + element_analyzed: Optional[Union[str, list[str]]] = empty_list() + absorption_edge: Optional[Union[str, list[str]]] = empty_list() + energy_resolution: Optional[Union[float, list[float]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + beamline_source: Optional[Union[str, list[str]]] = empty_list() + noise_of_measurement: Optional[Union[float, list[float]]] = empty_list() + number_of_cycles: Optional[Union[int, list[int]]] = empty_list() + xray_source: Optional[Union[str, list[str]]] = empty_list() + monochromator: Optional[Union[str, list[str]]] = empty_list() + minimum_energy: Optional[Union[float, list[float]]] = empty_list() + maximum_energy: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.operation_mode, list): + self.operation_mode = [self.operation_mode] if self.operation_mode is not None else [] + self.operation_mode = [v if isinstance(v, str) else str(v) for v in self.operation_mode] + + if not isinstance(self.element_analyzed, list): + self.element_analyzed = [self.element_analyzed] if self.element_analyzed is not None else [] + self.element_analyzed = [v if isinstance(v, str) else str(v) for v in self.element_analyzed] + + if not isinstance(self.absorption_edge, list): + self.absorption_edge = [self.absorption_edge] if self.absorption_edge is not None else [] + self.absorption_edge = [v if isinstance(v, str) else str(v) for v in self.absorption_edge] + + if not isinstance(self.energy_resolution, list): + self.energy_resolution = [self.energy_resolution] if self.energy_resolution is not None else [] + self.energy_resolution = [v if isinstance(v, float) else float(v) for v in self.energy_resolution] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + if not isinstance(self.beamline_source, list): + self.beamline_source = [self.beamline_source] if self.beamline_source is not None else [] + self.beamline_source = [v if isinstance(v, str) else str(v) for v in self.beamline_source] + + if not isinstance(self.noise_of_measurement, list): + self.noise_of_measurement = [self.noise_of_measurement] if self.noise_of_measurement is not None else [] + self.noise_of_measurement = [v if isinstance(v, float) else float(v) for v in self.noise_of_measurement] + + if not isinstance(self.number_of_cycles, list): + self.number_of_cycles = [self.number_of_cycles] if self.number_of_cycles is not None else [] + self.number_of_cycles = [v if isinstance(v, int) else int(v) for v in self.number_of_cycles] + + if not isinstance(self.xray_source, list): + self.xray_source = [self.xray_source] if self.xray_source is not None else [] + self.xray_source = [v if isinstance(v, str) else str(v) for v in self.xray_source] + + if not isinstance(self.monochromator, list): + self.monochromator = [self.monochromator] if self.monochromator is not None else [] + self.monochromator = [v if isinstance(v, str) else str(v) for v in self.monochromator] + + if not isinstance(self.minimum_energy, list): + self.minimum_energy = [self.minimum_energy] if self.minimum_energy is not None else [] + self.minimum_energy = [v if isinstance(v, float) else float(v) for v in self.minimum_energy] + + if not isinstance(self.maximum_energy, list): + self.maximum_energy = [self.maximum_energy] if self.maximum_energy is not None else [] + self.maximum_energy = [v if isinstance(v, float) else float(v) for v in self.maximum_energy] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class XPS(CharacterizationTechnique): + """ + X-ray photoelectron spectroscopy for surface elemental and chemical state analysis. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHMO["0000404"] + class_class_curie: ClassVar[str] = "CHMO:0000404" + class_name: ClassVar[str] = "XPS" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.XPS + + total_acquisition_time: Optional[Union[float, list[float]]] = empty_list() + number_of_scans: Optional[Union[int, list[int]]] = empty_list() + step_size: Optional[Union[float, list[float]]] = empty_list() + pass_energy: Optional[Union[float, list[float]]] = empty_list() + spot_size: Optional[Union[float, list[float]]] = empty_list() + lense_mode: Optional[Union[str, list[str]]] = empty_list() + charge_compensation: Optional[Union[str, list[str]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + xray_source: Optional[Union[str, list[str]]] = empty_list() + monochromator: Optional[Union[str, list[str]]] = empty_list() + minimum_energy: Optional[Union[float, list[float]]] = empty_list() + maximum_energy: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.total_acquisition_time, list): + self.total_acquisition_time = [self.total_acquisition_time] if self.total_acquisition_time is not None else [] + self.total_acquisition_time = [v if isinstance(v, float) else float(v) for v in self.total_acquisition_time] + + if not isinstance(self.number_of_scans, list): + self.number_of_scans = [self.number_of_scans] if self.number_of_scans is not None else [] + self.number_of_scans = [v if isinstance(v, int) else int(v) for v in self.number_of_scans] + + if not isinstance(self.step_size, list): + self.step_size = [self.step_size] if self.step_size is not None else [] + self.step_size = [v if isinstance(v, float) else float(v) for v in self.step_size] + + if not isinstance(self.pass_energy, list): + self.pass_energy = [self.pass_energy] if self.pass_energy is not None else [] + self.pass_energy = [v if isinstance(v, float) else float(v) for v in self.pass_energy] + + if not isinstance(self.spot_size, list): + self.spot_size = [self.spot_size] if self.spot_size is not None else [] + self.spot_size = [v if isinstance(v, float) else float(v) for v in self.spot_size] + + if not isinstance(self.lense_mode, list): + self.lense_mode = [self.lense_mode] if self.lense_mode is not None else [] + self.lense_mode = [v if isinstance(v, str) else str(v) for v in self.lense_mode] + + if not isinstance(self.charge_compensation, list): + self.charge_compensation = [self.charge_compensation] if self.charge_compensation is not None else [] + self.charge_compensation = [v if isinstance(v, str) else str(v) for v in self.charge_compensation] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + if not isinstance(self.xray_source, list): + self.xray_source = [self.xray_source] if self.xray_source is not None else [] + self.xray_source = [v if isinstance(v, str) else str(v) for v in self.xray_source] + + if not isinstance(self.monochromator, list): + self.monochromator = [self.monochromator] if self.monochromator is not None else [] + self.monochromator = [v if isinstance(v, str) else str(v) for v in self.monochromator] + + if not isinstance(self.minimum_energy, list): + self.minimum_energy = [self.minimum_energy] if self.minimum_energy is not None else [] + self.minimum_energy = [v if isinstance(v, float) else float(v) for v in self.minimum_energy] + + if not isinstance(self.maximum_energy, list): + self.maximum_energy = [self.maximum_energy] if self.maximum_energy is not None else [] + self.maximum_energy = [v if isinstance(v, float) else float(v) for v in self.maximum_energy] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class EDX(CharacterizationTechnique): + """ + Energy-dispersive X-ray spectroscopy for elemental mapping and quantification. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHMO["0000309"] + class_class_curie: ClassVar[str] = "CHMO:0000309" + class_name: ClassVar[str] = "EDX" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.EDX + + primary_energy: Optional[Union[float, list[float]]] = empty_list() + counting_time: Optional[Union[float, list[float]]] = empty_list() + resolution: Optional[Union[float, list[float]]] = empty_list() + calibration_method: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.primary_energy, list): + self.primary_energy = [self.primary_energy] if self.primary_energy is not None else [] + self.primary_energy = [v if isinstance(v, float) else float(v) for v in self.primary_energy] + + if not isinstance(self.counting_time, list): + self.counting_time = [self.counting_time] if self.counting_time is not None else [] + self.counting_time = [v if isinstance(v, float) else float(v) for v in self.counting_time] + + if not isinstance(self.resolution, list): + self.resolution = [self.resolution] if self.resolution is not None else [] + self.resolution = [v if isinstance(v, float) else float(v) for v in self.resolution] + + if not isinstance(self.calibration_method, list): + self.calibration_method = [self.calibration_method] if self.calibration_method is not None else [] + self.calibration_method = [v if isinstance(v, str) else str(v) for v in self.calibration_method] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class InfraredSpectroscopy(CharacterizationTechnique): + """ + Infrared spectroscopy (FTIR/ATR) for functional group and surface species identification. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["InfraredSpectroscopy"] + class_class_curie: ClassVar[str] = "coremeta4cat:InfraredSpectroscopy" + class_name: ClassVar[str] = "InfraredSpectroscopy" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.InfraredSpectroscopy + + operation_mode: Optional[Union[str, list[str]]] = empty_list() + minimum_wavenumber: Optional[Union[float, list[float]]] = empty_list() + maximum_wavenumber: Optional[Union[float, list[float]]] = empty_list() + step_size: Optional[Union[float, list[float]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + background_correction: Optional[Union[str, list[str]]] = empty_list() + number_of_scans: Optional[Union[int, list[int]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.operation_mode, list): + self.operation_mode = [self.operation_mode] if self.operation_mode is not None else [] + self.operation_mode = [v if isinstance(v, str) else str(v) for v in self.operation_mode] + + if not isinstance(self.minimum_wavenumber, list): + self.minimum_wavenumber = [self.minimum_wavenumber] if self.minimum_wavenumber is not None else [] + self.minimum_wavenumber = [v if isinstance(v, float) else float(v) for v in self.minimum_wavenumber] + + if not isinstance(self.maximum_wavenumber, list): + self.maximum_wavenumber = [self.maximum_wavenumber] if self.maximum_wavenumber is not None else [] + self.maximum_wavenumber = [v if isinstance(v, float) else float(v) for v in self.maximum_wavenumber] + + if not isinstance(self.step_size, list): + self.step_size = [self.step_size] if self.step_size is not None else [] + self.step_size = [v if isinstance(v, float) else float(v) for v in self.step_size] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + if not isinstance(self.background_correction, list): + self.background_correction = [self.background_correction] if self.background_correction is not None else [] + self.background_correction = [v if isinstance(v, str) else str(v) for v in self.background_correction] + + if not isinstance(self.number_of_scans, list): + self.number_of_scans = [self.number_of_scans] if self.number_of_scans is not None else [] + self.number_of_scans = [v if isinstance(v, int) else int(v) for v in self.number_of_scans] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class DRIFTS(CharacterizationTechnique): + """ + Diffuse reflectance infrared Fourier transform spectroscopy for in-situ + surface species identification under reactive gas conditions. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHMO["0000645"] + class_class_curie: ClassVar[str] = "CHMO:0000645" + class_name: ClassVar[str] = "DRIFTS" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.DRIFTS + + adsorption_gas: Optional[Union[str, list[str]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + flow_rate: Optional[Union[float, list[float]]] = empty_list() + diluting_reference: Optional[Union[str, list[str]]] = empty_list() + ratio_reference_sample: Optional[Union[float, list[float]]] = empty_list() + step_size: Optional[Union[float, list[float]]] = empty_list() + resolution: Optional[Union[float, list[float]]] = empty_list() + background_correction_method: Optional[Union[str, list[str]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + number_of_scans: Optional[Union[int, list[int]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.adsorption_gas, list): + self.adsorption_gas = [self.adsorption_gas] if self.adsorption_gas is not None else [] + self.adsorption_gas = [v if isinstance(v, str) else str(v) for v in self.adsorption_gas] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + if not isinstance(self.flow_rate, list): + self.flow_rate = [self.flow_rate] if self.flow_rate is not None else [] + self.flow_rate = [v if isinstance(v, float) else float(v) for v in self.flow_rate] + + if not isinstance(self.diluting_reference, list): + self.diluting_reference = [self.diluting_reference] if self.diluting_reference is not None else [] + self.diluting_reference = [v if isinstance(v, str) else str(v) for v in self.diluting_reference] + + if not isinstance(self.ratio_reference_sample, list): + self.ratio_reference_sample = [self.ratio_reference_sample] if self.ratio_reference_sample is not None else [] + self.ratio_reference_sample = [v if isinstance(v, float) else float(v) for v in self.ratio_reference_sample] + + if not isinstance(self.step_size, list): + self.step_size = [self.step_size] if self.step_size is not None else [] + self.step_size = [v if isinstance(v, float) else float(v) for v in self.step_size] + + if not isinstance(self.resolution, list): + self.resolution = [self.resolution] if self.resolution is not None else [] + self.resolution = [v if isinstance(v, float) else float(v) for v in self.resolution] + + if not isinstance(self.background_correction_method, list): + self.background_correction_method = [self.background_correction_method] if self.background_correction_method is not None else [] + self.background_correction_method = [v if isinstance(v, str) else str(v) for v in self.background_correction_method] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + if not isinstance(self.number_of_scans, list): + self.number_of_scans = [self.number_of_scans] if self.number_of_scans is not None else [] + self.number_of_scans = [v if isinstance(v, int) else int(v) for v in self.number_of_scans] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class RamanSpectroscopy(CharacterizationTechnique): + """ + Raman spectroscopy for vibrational and structural characterization. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = VOC4CAT["0000069"] + class_class_curie: ClassVar[str] = "VOC4CAT:0000069" + class_name: ClassVar[str] = "RamanSpectroscopy" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.RamanSpectroscopy + + excitation_laser_wavelength: Optional[Union[float, list[float]]] = empty_list() + excitation_laser_power: Optional[Union[float, list[float]]] = empty_list() + magnification_setting: Optional[Union[float, list[float]]] = empty_list() + integration_time: Optional[Union[float, list[float]]] = empty_list() + number_of_scans: Optional[Union[int, list[int]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + filter_or_grating: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.excitation_laser_wavelength, list): + self.excitation_laser_wavelength = [self.excitation_laser_wavelength] if self.excitation_laser_wavelength is not None else [] + self.excitation_laser_wavelength = [v if isinstance(v, float) else float(v) for v in self.excitation_laser_wavelength] + + if not isinstance(self.excitation_laser_power, list): + self.excitation_laser_power = [self.excitation_laser_power] if self.excitation_laser_power is not None else [] + self.excitation_laser_power = [v if isinstance(v, float) else float(v) for v in self.excitation_laser_power] + + if not isinstance(self.magnification_setting, list): + self.magnification_setting = [self.magnification_setting] if self.magnification_setting is not None else [] + self.magnification_setting = [v if isinstance(v, float) else float(v) for v in self.magnification_setting] + + if not isinstance(self.integration_time, list): + self.integration_time = [self.integration_time] if self.integration_time is not None else [] + self.integration_time = [v if isinstance(v, float) else float(v) for v in self.integration_time] + + if not isinstance(self.number_of_scans, list): + self.number_of_scans = [self.number_of_scans] if self.number_of_scans is not None else [] + self.number_of_scans = [v if isinstance(v, int) else int(v) for v in self.number_of_scans] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + if not isinstance(self.filter_or_grating, list): + self.filter_or_grating = [self.filter_or_grating] if self.filter_or_grating is not None else [] + self.filter_or_grating = [v if isinstance(v, str) else str(v) for v in self.filter_or_grating] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class NMRSpectroscopy(CharacterizationTechnique): + """ + Nuclear magnetic resonance spectroscopy for structure elucidation. + Note: for detailed liquid-state NMR minimum information, the dedicated + nmr_dcat_ap profile (MARGARITAS) should be used in combination with + this subprofile. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = VOC4CAT["0000073"] + class_class_curie: ClassVar[str] = "VOC4CAT:0000073" + class_name: ClassVar[str] = "NMRSpectroscopy" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.NMRSpectroscopy + + nucleus: Optional[Union[str, list[str]]] = empty_list() + solvent: Optional[Union[str, list[str]]] = empty_list() + irradiation_frequency: Optional[Union[float, list[float]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + nmr_pulse_sequence: Optional[Union[str, list[str]]] = empty_list() + nmr_sample_tube: Optional[Union[str, list[str]]] = empty_list() + number_of_scans: Optional[Union[int, list[int]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.nucleus, list): + self.nucleus = [self.nucleus] if self.nucleus is not None else [] + self.nucleus = [v if isinstance(v, str) else str(v) for v in self.nucleus] + + if not isinstance(self.solvent, list): + self.solvent = [self.solvent] if self.solvent is not None else [] + self.solvent = [v if isinstance(v, str) else str(v) for v in self.solvent] + + if not isinstance(self.irradiation_frequency, list): + self.irradiation_frequency = [self.irradiation_frequency] if self.irradiation_frequency is not None else [] + self.irradiation_frequency = [v if isinstance(v, float) else float(v) for v in self.irradiation_frequency] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + if not isinstance(self.nmr_pulse_sequence, list): + self.nmr_pulse_sequence = [self.nmr_pulse_sequence] if self.nmr_pulse_sequence is not None else [] + self.nmr_pulse_sequence = [v if isinstance(v, str) else str(v) for v in self.nmr_pulse_sequence] + + if not isinstance(self.nmr_sample_tube, list): + self.nmr_sample_tube = [self.nmr_sample_tube] if self.nmr_sample_tube is not None else [] + self.nmr_sample_tube = [v if isinstance(v, str) else str(v) for v in self.nmr_sample_tube] + + if not isinstance(self.number_of_scans, list): + self.number_of_scans = [self.number_of_scans] if self.number_of_scans is not None else [] + self.number_of_scans = [v if isinstance(v, int) else int(v) for v in self.number_of_scans] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class TransmissionElectronMicroscopy(CharacterizationTechnique): + """ + TEM for atomic-resolution imaging and diffraction of catalyst particles. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = VOC4CAT["0000078"] + class_class_curie: ClassVar[str] = "VOC4CAT:0000078" + class_name: ClassVar[str] = "TransmissionElectronMicroscopy" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.TransmissionElectronMicroscopy + + operation_mode: Optional[Union[str, list[str]]] = empty_list() + gun_type: Optional[Union[str, list[str]]] = empty_list() + acceleration_voltage: Optional[Union[float, list[float]]] = empty_list() + magnification_setting: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.operation_mode, list): + self.operation_mode = [self.operation_mode] if self.operation_mode is not None else [] + self.operation_mode = [v if isinstance(v, str) else str(v) for v in self.operation_mode] + + if not isinstance(self.gun_type, list): + self.gun_type = [self.gun_type] if self.gun_type is not None else [] + self.gun_type = [v if isinstance(v, str) else str(v) for v in self.gun_type] + + if not isinstance(self.acceleration_voltage, list): + self.acceleration_voltage = [self.acceleration_voltage] if self.acceleration_voltage is not None else [] + self.acceleration_voltage = [v if isinstance(v, float) else float(v) for v in self.acceleration_voltage] + + if not isinstance(self.magnification_setting, list): + self.magnification_setting = [self.magnification_setting] if self.magnification_setting is not None else [] + self.magnification_setting = [v if isinstance(v, float) else float(v) for v in self.magnification_setting] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ScanningElectronMicroscopy(CharacterizationTechnique): + """ + SEM for surface morphology and particle size/shape imaging. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = VOC4CAT["0000075"] + class_class_curie: ClassVar[str] = "VOC4CAT:0000075" + class_name: ClassVar[str] = "ScanningElectronMicroscopy" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ScanningElectronMicroscopy + + image_resolution: Optional[Union[float, list[float]]] = empty_list() + field_emitter: Optional[Union[str, list[str]]] = empty_list() + gun_type: Optional[Union[str, list[str]]] = empty_list() + acceleration_voltage: Optional[Union[float, list[float]]] = empty_list() + magnification_setting: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.image_resolution, list): + self.image_resolution = [self.image_resolution] if self.image_resolution is not None else [] + self.image_resolution = [v if isinstance(v, float) else float(v) for v in self.image_resolution] + + if not isinstance(self.field_emitter, list): + self.field_emitter = [self.field_emitter] if self.field_emitter is not None else [] + self.field_emitter = [v if isinstance(v, str) else str(v) for v in self.field_emitter] + + if not isinstance(self.gun_type, list): + self.gun_type = [self.gun_type] if self.gun_type is not None else [] + self.gun_type = [v if isinstance(v, str) else str(v) for v in self.gun_type] + + if not isinstance(self.acceleration_voltage, list): + self.acceleration_voltage = [self.acceleration_voltage] if self.acceleration_voltage is not None else [] + self.acceleration_voltage = [v if isinstance(v, float) else float(v) for v in self.acceleration_voltage] + + if not isinstance(self.magnification_setting, list): + self.magnification_setting = [self.magnification_setting] if self.magnification_setting is not None else [] + self.magnification_setting = [v if isinstance(v, float) else float(v) for v in self.magnification_setting] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Thermogravimetry(CharacterizationTechnique): + """ + Thermogravimetric analysis (TGA/DTG) for mass loss, decomposition, and oxidation state characterization. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHMO["0000690"] + class_class_curie: ClassVar[str] = "CHMO:0000690" + class_name: ClassVar[str] = "Thermogravimetry" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Thermogravimetry + + operation_mode: Optional[Union[str, list[str]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + initial_temperature: Optional[Union[float, list[float]]] = empty_list() + final_temperature: Optional[Union[float, list[float]]] = empty_list() + sample_mass: Optional[Union[float, list[float]]] = empty_list() + minimum_temperature: Optional[Union[float, list[float]]] = empty_list() + maximum_temperature: Optional[Union[float, list[float]]] = empty_list() + heating_rate: Optional[Union[float, list[float]]] = empty_list() + heating_procedure: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.operation_mode, list): + self.operation_mode = [self.operation_mode] if self.operation_mode is not None else [] + self.operation_mode = [v if isinstance(v, str) else str(v) for v in self.operation_mode] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + if not isinstance(self.initial_temperature, list): + self.initial_temperature = [self.initial_temperature] if self.initial_temperature is not None else [] + self.initial_temperature = [v if isinstance(v, float) else float(v) for v in self.initial_temperature] + + if not isinstance(self.final_temperature, list): + self.final_temperature = [self.final_temperature] if self.final_temperature is not None else [] + self.final_temperature = [v if isinstance(v, float) else float(v) for v in self.final_temperature] + + if not isinstance(self.sample_mass, list): + self.sample_mass = [self.sample_mass] if self.sample_mass is not None else [] + self.sample_mass = [v if isinstance(v, float) else float(v) for v in self.sample_mass] + + if not isinstance(self.minimum_temperature, list): + self.minimum_temperature = [self.minimum_temperature] if self.minimum_temperature is not None else [] + self.minimum_temperature = [v if isinstance(v, float) else float(v) for v in self.minimum_temperature] + + if not isinstance(self.maximum_temperature, list): + self.maximum_temperature = [self.maximum_temperature] if self.maximum_temperature is not None else [] + self.maximum_temperature = [v if isinstance(v, float) else float(v) for v in self.maximum_temperature] + + if not isinstance(self.heating_rate, list): + self.heating_rate = [self.heating_rate] if self.heating_rate is not None else [] + self.heating_rate = [v if isinstance(v, float) else float(v) for v in self.heating_rate] + + if not isinstance(self.heating_procedure, list): + self.heating_procedure = [self.heating_procedure] if self.heating_procedure is not None else [] + self.heating_procedure = [v if isinstance(v, str) else str(v) for v in self.heating_procedure] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class TPR(CharacterizationTechnique): + """ + Temperature-programmed reduction for reducibility and metal-support interaction characterization. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHMO["0002908"] + class_class_curie: ClassVar[str] = "CHMO:0002908" + class_name: ClassVar[str] = "TPR" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.TPR + + reducing_gas_composition: Optional[Union[str, list[str]]] = empty_list() + minimum_temperature: Optional[Union[float, list[float]]] = empty_list() + maximum_temperature: Optional[Union[float, list[float]]] = empty_list() + heating_rate: Optional[Union[float, list[float]]] = empty_list() + heating_procedure: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.reducing_gas_composition, list): + self.reducing_gas_composition = [self.reducing_gas_composition] if self.reducing_gas_composition is not None else [] + self.reducing_gas_composition = [v if isinstance(v, str) else str(v) for v in self.reducing_gas_composition] + + if not isinstance(self.minimum_temperature, list): + self.minimum_temperature = [self.minimum_temperature] if self.minimum_temperature is not None else [] + self.minimum_temperature = [v if isinstance(v, float) else float(v) for v in self.minimum_temperature] + + if not isinstance(self.maximum_temperature, list): + self.maximum_temperature = [self.maximum_temperature] if self.maximum_temperature is not None else [] + self.maximum_temperature = [v if isinstance(v, float) else float(v) for v in self.maximum_temperature] + + if not isinstance(self.heating_rate, list): + self.heating_rate = [self.heating_rate] if self.heating_rate is not None else [] + self.heating_rate = [v if isinstance(v, float) else float(v) for v in self.heating_rate] + + if not isinstance(self.heating_procedure, list): + self.heating_procedure = [self.heating_procedure] if self.heating_procedure is not None else [] + self.heating_procedure = [v if isinstance(v, str) else str(v) for v in self.heating_procedure] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class TPO(CharacterizationTechnique): + """ + Temperature-programmed oxidation for coke quantification and reoxidation characterization. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHMO["0002907"] + class_class_curie: ClassVar[str] = "CHMO:0002907" + class_name: ClassVar[str] = "TPO" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.TPO + + oxidizing_gas_composition: Optional[Union[str, list[str]]] = empty_list() + minimum_temperature: Optional[Union[float, list[float]]] = empty_list() + maximum_temperature: Optional[Union[float, list[float]]] = empty_list() + heating_rate: Optional[Union[float, list[float]]] = empty_list() + heating_procedure: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.oxidizing_gas_composition, list): + self.oxidizing_gas_composition = [self.oxidizing_gas_composition] if self.oxidizing_gas_composition is not None else [] + self.oxidizing_gas_composition = [v if isinstance(v, str) else str(v) for v in self.oxidizing_gas_composition] + + if not isinstance(self.minimum_temperature, list): + self.minimum_temperature = [self.minimum_temperature] if self.minimum_temperature is not None else [] + self.minimum_temperature = [v if isinstance(v, float) else float(v) for v in self.minimum_temperature] + + if not isinstance(self.maximum_temperature, list): + self.maximum_temperature = [self.maximum_temperature] if self.maximum_temperature is not None else [] + self.maximum_temperature = [v if isinstance(v, float) else float(v) for v in self.maximum_temperature] + + if not isinstance(self.heating_rate, list): + self.heating_rate = [self.heating_rate] if self.heating_rate is not None else [] + self.heating_rate = [v if isinstance(v, float) else float(v) for v in self.heating_rate] + + if not isinstance(self.heating_procedure, list): + self.heating_procedure = [self.heating_procedure] if self.heating_procedure is not None else [] + self.heating_procedure = [v if isinstance(v, str) else str(v) for v in self.heating_procedure] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class BET(CharacterizationTechnique): + """ + Brunauer-Emmett-Teller analysis for specific surface area and pore size distribution. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["BET"] + class_class_curie: ClassVar[str] = "coremeta4cat:BET" + class_name: ClassVar[str] = "BET" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.BET + + adsorbate_gas: Optional[Union[str, list[str]]] = empty_list() + degassing_temperature: Optional[Union[float, list[float]]] = empty_list() + measurement_temperature: Optional[Union[float, list[float]]] = empty_list() + pore_size_distribution_method: Optional[Union[str, list[str]]] = empty_list() + sample_mass: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.adsorbate_gas, list): + self.adsorbate_gas = [self.adsorbate_gas] if self.adsorbate_gas is not None else [] + self.adsorbate_gas = [v if isinstance(v, str) else str(v) for v in self.adsorbate_gas] + + if not isinstance(self.degassing_temperature, list): + self.degassing_temperature = [self.degassing_temperature] if self.degassing_temperature is not None else [] + self.degassing_temperature = [v if isinstance(v, float) else float(v) for v in self.degassing_temperature] + + if not isinstance(self.measurement_temperature, list): + self.measurement_temperature = [self.measurement_temperature] if self.measurement_temperature is not None else [] + self.measurement_temperature = [v if isinstance(v, float) else float(v) for v in self.measurement_temperature] + + if not isinstance(self.pore_size_distribution_method, list): + self.pore_size_distribution_method = [self.pore_size_distribution_method] if self.pore_size_distribution_method is not None else [] + self.pore_size_distribution_method = [v if isinstance(v, str) else str(v) for v in self.pore_size_distribution_method] + + if not isinstance(self.sample_mass, list): + self.sample_mass = [self.sample_mass] if self.sample_mass is not None else [] + self.sample_mass = [v if isinstance(v, float) else float(v) for v in self.sample_mass] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ICPAES(CharacterizationTechnique): + """ + Inductively coupled plasma atomic emission spectroscopy for bulk elemental composition. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHMO["0000267"] + class_class_curie: ClassVar[str] = "CHMO:0000267" + class_name: ClassVar[str] = "ICPAES" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ICPAES + + element_analyzed: Optional[Union[str, list[str]]] = empty_list() + calibration_method: Optional[Union[str, list[str]]] = empty_list() + detection_limit: Optional[Union[float, list[float]]] = empty_list() + matrix_effect_correction: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.element_analyzed, list): + self.element_analyzed = [self.element_analyzed] if self.element_analyzed is not None else [] + self.element_analyzed = [v if isinstance(v, str) else str(v) for v in self.element_analyzed] + + if not isinstance(self.calibration_method, list): + self.calibration_method = [self.calibration_method] if self.calibration_method is not None else [] + self.calibration_method = [v if isinstance(v, str) else str(v) for v in self.calibration_method] + + if not isinstance(self.detection_limit, list): + self.detection_limit = [self.detection_limit] if self.detection_limit is not None else [] + self.detection_limit = [v if isinstance(v, float) else float(v) for v in self.detection_limit] + + if not isinstance(self.matrix_effect_correction, list): + self.matrix_effect_correction = [self.matrix_effect_correction] if self.matrix_effect_correction is not None else [] + self.matrix_effect_correction = [v if isinstance(v, str) else str(v) for v in self.matrix_effect_correction] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ElementalAnalysis(CharacterizationTechnique): + """ + Combustion elemental analysis (CHNS/O) for carbon, hydrogen, nitrogen, sulfur content. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHMO["0001075"] + class_class_curie: ClassVar[str] = "CHMO:0001075" + class_name: ClassVar[str] = "ElementalAnalysis" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ElementalAnalysis + + elements_analyzed: Optional[Union[str, list[str]]] = empty_list() + combustion_temperature: Optional[Union[float, list[float]]] = empty_list() + carrier_gas: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.elements_analyzed, list): + self.elements_analyzed = [self.elements_analyzed] if self.elements_analyzed is not None else [] + self.elements_analyzed = [v if isinstance(v, str) else str(v) for v in self.elements_analyzed] + + if not isinstance(self.combustion_temperature, list): + self.combustion_temperature = [self.combustion_temperature] if self.combustion_temperature is not None else [] + self.combustion_temperature = [v if isinstance(v, float) else float(v) for v in self.combustion_temperature] + + if not isinstance(self.carrier_gas, list): + self.carrier_gas = [self.carrier_gas] if self.carrier_gas is not None else [] + self.carrier_gas = [v if isinstance(v, str) else str(v) for v in self.carrier_gas] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class UVVisSpectroscopy(CharacterizationTechnique): + """ + UV-Vis spectroscopy for electronic transitions, band gap, and concentration determination. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = VOC4CAT["0000079"] + class_class_curie: ClassVar[str] = "VOC4CAT:0000079" + class_name: ClassVar[str] = "UVVisSpectroscopy" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.UVVisSpectroscopy + + minimum_wavelength: Optional[Union[float, list[float]]] = empty_list() + maximum_wavelength: Optional[Union[float, list[float]]] = empty_list() + path_length: Optional[Union[float, list[float]]] = empty_list() + solvent: Optional[Union[str, list[str]]] = empty_list() + concentration: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.minimum_wavelength, list): + self.minimum_wavelength = [self.minimum_wavelength] if self.minimum_wavelength is not None else [] + self.minimum_wavelength = [v if isinstance(v, float) else float(v) for v in self.minimum_wavelength] + + if not isinstance(self.maximum_wavelength, list): + self.maximum_wavelength = [self.maximum_wavelength] if self.maximum_wavelength is not None else [] + self.maximum_wavelength = [v if isinstance(v, float) else float(v) for v in self.maximum_wavelength] + + if not isinstance(self.path_length, list): + self.path_length = [self.path_length] if self.path_length is not None else [] + self.path_length = [v if isinstance(v, float) else float(v) for v in self.path_length] + + if not isinstance(self.solvent, list): + self.solvent = [self.solvent] if self.solvent is not None else [] + self.solvent = [v if isinstance(v, str) else str(v) for v in self.solvent] + + if not isinstance(self.concentration, list): + self.concentration = [self.concentration] if self.concentration is not None else [] + self.concentration = [v if isinstance(v, float) else float(v) for v in self.concentration] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class PhotoluminescenceSpectroscopy(CharacterizationTechnique): + """ + Photoluminescence spectroscopy for defect and charge carrier characterization. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["PhotoluminescenceSpectroscopy"] + class_class_curie: ClassVar[str] = "coremeta4cat:PhotoluminescenceSpectroscopy" + class_name: ClassVar[str] = "PhotoluminescenceSpectroscopy" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.PhotoluminescenceSpectroscopy + + emission_range: Optional[Union[str, list[str]]] = empty_list() + slit_width: Optional[Union[float, list[float]]] = empty_list() + step_size: Optional[Union[float, list[float]]] = empty_list() + integration_time: Optional[Union[float, list[float]]] = empty_list() + excitation_wavelength: Optional[Union[float, list[float]]] = empty_list() + emission_wavelength: Optional[Union[float, list[float]]] = empty_list() + optical_filter: Optional[Union[str, list[str]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.emission_range, list): + self.emission_range = [self.emission_range] if self.emission_range is not None else [] + self.emission_range = [v if isinstance(v, str) else str(v) for v in self.emission_range] + + if not isinstance(self.slit_width, list): + self.slit_width = [self.slit_width] if self.slit_width is not None else [] + self.slit_width = [v if isinstance(v, float) else float(v) for v in self.slit_width] + + if not isinstance(self.step_size, list): + self.step_size = [self.step_size] if self.step_size is not None else [] + self.step_size = [v if isinstance(v, float) else float(v) for v in self.step_size] + + if not isinstance(self.integration_time, list): + self.integration_time = [self.integration_time] if self.integration_time is not None else [] + self.integration_time = [v if isinstance(v, float) else float(v) for v in self.integration_time] + + if not isinstance(self.excitation_wavelength, list): + self.excitation_wavelength = [self.excitation_wavelength] if self.excitation_wavelength is not None else [] + self.excitation_wavelength = [v if isinstance(v, float) else float(v) for v in self.excitation_wavelength] + + if not isinstance(self.emission_wavelength, list): + self.emission_wavelength = [self.emission_wavelength] if self.emission_wavelength is not None else [] + self.emission_wavelength = [v if isinstance(v, float) else float(v) for v in self.emission_wavelength] + + if not isinstance(self.optical_filter, list): + self.optical_filter = [self.optical_filter] if self.optical_filter is not None else [] + self.optical_filter = [v if isinstance(v, str) else str(v) for v in self.optical_filter] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class PhotoluminescenceLifetime(CharacterizationTechnique): + """ + Time-resolved photoluminescence for charge carrier lifetime and recombination dynamics. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["PhotoluminescenceLifetime"] + class_class_curie: ClassVar[str] = "coremeta4cat:PhotoluminescenceLifetime" + class_name: ClassVar[str] = "PhotoluminescenceLifetime" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.PhotoluminescenceLifetime + + lifetime_fitting_model: Optional[Union[str, list[str]]] = empty_list() + number_of_shots: Optional[Union[int, list[int]]] = empty_list() + excitation_wavelength: Optional[Union[float, list[float]]] = empty_list() + emission_wavelength: Optional[Union[float, list[float]]] = empty_list() + optical_filter: Optional[Union[str, list[str]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.lifetime_fitting_model, list): + self.lifetime_fitting_model = [self.lifetime_fitting_model] if self.lifetime_fitting_model is not None else [] + self.lifetime_fitting_model = [v if isinstance(v, str) else str(v) for v in self.lifetime_fitting_model] + + if not isinstance(self.number_of_shots, list): + self.number_of_shots = [self.number_of_shots] if self.number_of_shots is not None else [] + self.number_of_shots = [v if isinstance(v, int) else int(v) for v in self.number_of_shots] + + if not isinstance(self.excitation_wavelength, list): + self.excitation_wavelength = [self.excitation_wavelength] if self.excitation_wavelength is not None else [] + self.excitation_wavelength = [v if isinstance(v, float) else float(v) for v in self.excitation_wavelength] + + if not isinstance(self.emission_wavelength, list): + self.emission_wavelength = [self.emission_wavelength] if self.emission_wavelength is not None else [] + self.emission_wavelength = [v if isinstance(v, float) else float(v) for v in self.emission_wavelength] + + if not isinstance(self.optical_filter, list): + self.optical_filter = [self.optical_filter] if self.optical_filter is not None else [] + self.optical_filter = [v if isinstance(v, str) else str(v) for v in self.optical_filter] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class CyclicVoltammetry(CharacterizationTechnique): + """ + Cyclic voltammetry for electrochemical activity, redox potential, and capacitance characterization. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHMO["0000025"] + class_class_curie: ClassVar[str] = "CHMO:0000025" + class_name: ClassVar[str] = "CyclicVoltammetry" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.CyclicVoltammetry + + scan_rate: Optional[Union[float, list[float]]] = empty_list() + minimum_potential: Optional[Union[float, list[float]]] = empty_list() + maximum_potential: Optional[Union[float, list[float]]] = empty_list() + step_size_potential: Optional[Union[float, list[float]]] = empty_list() + number_of_cycles: Optional[Union[int, list[int]]] = empty_list() + reference_electrode: Optional[Union[str, list[str]]] = empty_list() + working_electrode: Optional[Union[str, list[str]]] = empty_list() + counter_electrode: Optional[Union[str, list[str]]] = empty_list() + electrolyte_composition: Optional[Union[str, list[str]]] = empty_list() + electrolyte_concentration: Optional[Union[float, list[float]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.scan_rate, list): + self.scan_rate = [self.scan_rate] if self.scan_rate is not None else [] + self.scan_rate = [v if isinstance(v, float) else float(v) for v in self.scan_rate] + + if not isinstance(self.minimum_potential, list): + self.minimum_potential = [self.minimum_potential] if self.minimum_potential is not None else [] + self.minimum_potential = [v if isinstance(v, float) else float(v) for v in self.minimum_potential] + + if not isinstance(self.maximum_potential, list): + self.maximum_potential = [self.maximum_potential] if self.maximum_potential is not None else [] + self.maximum_potential = [v if isinstance(v, float) else float(v) for v in self.maximum_potential] + + if not isinstance(self.step_size_potential, list): + self.step_size_potential = [self.step_size_potential] if self.step_size_potential is not None else [] + self.step_size_potential = [v if isinstance(v, float) else float(v) for v in self.step_size_potential] + + if not isinstance(self.number_of_cycles, list): + self.number_of_cycles = [self.number_of_cycles] if self.number_of_cycles is not None else [] + self.number_of_cycles = [v if isinstance(v, int) else int(v) for v in self.number_of_cycles] + + if not isinstance(self.reference_electrode, list): + self.reference_electrode = [self.reference_electrode] if self.reference_electrode is not None else [] + self.reference_electrode = [v if isinstance(v, str) else str(v) for v in self.reference_electrode] + + if not isinstance(self.working_electrode, list): + self.working_electrode = [self.working_electrode] if self.working_electrode is not None else [] + self.working_electrode = [v if isinstance(v, str) else str(v) for v in self.working_electrode] + + if not isinstance(self.counter_electrode, list): + self.counter_electrode = [self.counter_electrode] if self.counter_electrode is not None else [] + self.counter_electrode = [v if isinstance(v, str) else str(v) for v in self.counter_electrode] + + if not isinstance(self.electrolyte_composition, list): + self.electrolyte_composition = [self.electrolyte_composition] if self.electrolyte_composition is not None else [] + self.electrolyte_composition = [v if isinstance(v, str) else str(v) for v in self.electrolyte_composition] + + if not isinstance(self.electrolyte_concentration, list): + self.electrolyte_concentration = [self.electrolyte_concentration] if self.electrolyte_concentration is not None else [] + self.electrolyte_concentration = [v if isinstance(v, float) else float(v) for v in self.electrolyte_concentration] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ConductivityMeasurement(CharacterizationTechnique): + """ + Electrical conductivity measurement for ionic and electronic transport characterization. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["ConductivityMeasurement"] + class_class_curie: ClassVar[str] = "coremeta4cat:ConductivityMeasurement" + class_name: ClassVar[str] = "ConductivityMeasurement" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ConductivityMeasurement + + electrode_configuration: Optional[Union[str, list[str]]] = empty_list() + ac_frequency: Optional[Union[float, list[float]]] = empty_list() + ac_dc_mode: Optional[Union[str, list[str]]] = empty_list() + sample_geometry: Optional[Union[str, list[str]]] = empty_list() + reference_electrode: Optional[Union[str, list[str]]] = empty_list() + working_electrode: Optional[Union[str, list[str]]] = empty_list() + counter_electrode: Optional[Union[str, list[str]]] = empty_list() + electrolyte_composition: Optional[Union[str, list[str]]] = empty_list() + electrolyte_concentration: Optional[Union[float, list[float]]] = empty_list() + atmosphere: Optional[Union[str, list[str]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.electrode_configuration, list): + self.electrode_configuration = [self.electrode_configuration] if self.electrode_configuration is not None else [] + self.electrode_configuration = [v if isinstance(v, str) else str(v) for v in self.electrode_configuration] + + if not isinstance(self.ac_frequency, list): + self.ac_frequency = [self.ac_frequency] if self.ac_frequency is not None else [] + self.ac_frequency = [v if isinstance(v, float) else float(v) for v in self.ac_frequency] + + if not isinstance(self.ac_dc_mode, list): + self.ac_dc_mode = [self.ac_dc_mode] if self.ac_dc_mode is not None else [] + self.ac_dc_mode = [v if isinstance(v, str) else str(v) for v in self.ac_dc_mode] + + if not isinstance(self.sample_geometry, list): + self.sample_geometry = [self.sample_geometry] if self.sample_geometry is not None else [] + self.sample_geometry = [v if isinstance(v, str) else str(v) for v in self.sample_geometry] + + if not isinstance(self.reference_electrode, list): + self.reference_electrode = [self.reference_electrode] if self.reference_electrode is not None else [] + self.reference_electrode = [v if isinstance(v, str) else str(v) for v in self.reference_electrode] + + if not isinstance(self.working_electrode, list): + self.working_electrode = [self.working_electrode] if self.working_electrode is not None else [] + self.working_electrode = [v if isinstance(v, str) else str(v) for v in self.working_electrode] + + if not isinstance(self.counter_electrode, list): + self.counter_electrode = [self.counter_electrode] if self.counter_electrode is not None else [] + self.counter_electrode = [v if isinstance(v, str) else str(v) for v in self.counter_electrode] + + if not isinstance(self.electrolyte_composition, list): + self.electrolyte_composition = [self.electrolyte_composition] if self.electrolyte_composition is not None else [] + self.electrolyte_composition = [v if isinstance(v, str) else str(v) for v in self.electrolyte_composition] + + if not isinstance(self.electrolyte_concentration, list): + self.electrolyte_concentration = [self.electrolyte_concentration] if self.electrolyte_concentration is not None else [] + self.electrolyte_concentration = [v if isinstance(v, float) else float(v) for v in self.electrolyte_concentration] + + if not isinstance(self.atmosphere, list): + self.atmosphere = [self.atmosphere] if self.atmosphere is not None else [] + self.atmosphere = [v if isinstance(v, str) else str(v) for v in self.atmosphere] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class DynamicLightScattering(CharacterizationTechnique): + """ + Dynamic light scattering for hydrodynamic particle size distribution in suspension. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHMO["0000167"] + class_class_curie: ClassVar[str] = "CHMO:0000167" + class_name: ClassVar[str] = "DynamicLightScattering" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.DynamicLightScattering + + solvent: Optional[Union[str, list[str]]] = empty_list() + concentration: Optional[Union[float, list[float]]] = empty_list() + light_wavelength: Optional[Union[float, list[float]]] = empty_list() + scattering_angle: Optional[Union[float, list[float]]] = empty_list() + refractive_index: Optional[Union[float, list[float]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + dispersant: Optional[Union[str, list[str]]] = empty_list() + measurement_duration: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.solvent, list): + self.solvent = [self.solvent] if self.solvent is not None else [] + self.solvent = [v if isinstance(v, str) else str(v) for v in self.solvent] + + if not isinstance(self.concentration, list): + self.concentration = [self.concentration] if self.concentration is not None else [] + self.concentration = [v if isinstance(v, float) else float(v) for v in self.concentration] + + if not isinstance(self.light_wavelength, list): + self.light_wavelength = [self.light_wavelength] if self.light_wavelength is not None else [] + self.light_wavelength = [v if isinstance(v, float) else float(v) for v in self.light_wavelength] + + if not isinstance(self.scattering_angle, list): + self.scattering_angle = [self.scattering_angle] if self.scattering_angle is not None else [] + self.scattering_angle = [v if isinstance(v, float) else float(v) for v in self.scattering_angle] + + if not isinstance(self.refractive_index, list): + self.refractive_index = [self.refractive_index] if self.refractive_index is not None else [] + self.refractive_index = [v if isinstance(v, float) else float(v) for v in self.refractive_index] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + if not isinstance(self.dispersant, list): + self.dispersant = [self.dispersant] if self.dispersant is not None else [] + self.dispersant = [v if isinstance(v, str) else str(v) for v in self.dispersant] + + if not isinstance(self.measurement_duration, list): + self.measurement_duration = [self.measurement_duration] if self.measurement_duration is not None else [] + self.measurement_duration = [v if isinstance(v, float) else float(v) for v in self.measurement_duration] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ElectroSprayIonizationMassSpectrometry(CharacterizationTechnique): + """ + Electrospray ionisation mass spectrometry for molecular mass and identity determination. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHMO["0000482"] + class_class_curie: ClassVar[str] = "CHMO:0000482" + class_name: ClassVar[str] = "ElectroSprayIonizationMassSpectrometry" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ElectroSprayIonizationMassSpectrometry + + operation_mode: Optional[Union[str, list[str]]] = empty_list() + spray_voltage: Optional[Union[float, list[float]]] = empty_list() + capillary_temperature: Optional[Union[float, list[float]]] = empty_list() + solvent_composition: Optional[Union[str, list[str]]] = empty_list() + flow_rate: Optional[Union[float, list[float]]] = empty_list() + carrier_gas: Optional[Union[str, list[str]]] = empty_list() + concentration: Optional[Union[float, list[float]]] = empty_list() + mz_minimum: Optional[Union[float, list[float]]] = empty_list() + mz_maximum: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.operation_mode, list): + self.operation_mode = [self.operation_mode] if self.operation_mode is not None else [] + self.operation_mode = [v if isinstance(v, str) else str(v) for v in self.operation_mode] + + if not isinstance(self.spray_voltage, list): + self.spray_voltage = [self.spray_voltage] if self.spray_voltage is not None else [] + self.spray_voltage = [v if isinstance(v, float) else float(v) for v in self.spray_voltage] + + if not isinstance(self.capillary_temperature, list): + self.capillary_temperature = [self.capillary_temperature] if self.capillary_temperature is not None else [] + self.capillary_temperature = [v if isinstance(v, float) else float(v) for v in self.capillary_temperature] + + if not isinstance(self.solvent_composition, list): + self.solvent_composition = [self.solvent_composition] if self.solvent_composition is not None else [] + self.solvent_composition = [v if isinstance(v, str) else str(v) for v in self.solvent_composition] + + if not isinstance(self.flow_rate, list): + self.flow_rate = [self.flow_rate] if self.flow_rate is not None else [] + self.flow_rate = [v if isinstance(v, float) else float(v) for v in self.flow_rate] + + if not isinstance(self.carrier_gas, list): + self.carrier_gas = [self.carrier_gas] if self.carrier_gas is not None else [] + self.carrier_gas = [v if isinstance(v, str) else str(v) for v in self.carrier_gas] + + if not isinstance(self.concentration, list): + self.concentration = [self.concentration] if self.concentration is not None else [] + self.concentration = [v if isinstance(v, float) else float(v) for v in self.concentration] + + if not isinstance(self.mz_minimum, list): + self.mz_minimum = [self.mz_minimum] if self.mz_minimum is not None else [] + self.mz_minimum = [v if isinstance(v, float) else float(v) for v in self.mz_minimum] + + if not isinstance(self.mz_maximum, list): + self.mz_maximum = [self.mz_maximum] if self.mz_maximum is not None else [] + self.mz_maximum = [v if isinstance(v, float) else float(v) for v in self.mz_maximum] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class GCMS(CharacterizationTechnique): + """ + Gas chromatography-mass spectrometry for volatile compound identification and quantification. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHMO["0000497"] + class_class_curie: ClassVar[str] = "CHMO:0000497" + class_name: ClassVar[str] = "GCMS" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.GCMS + + carrier_gas: Optional[Union[str, list[str]]] = empty_list() + carrier_gas_purity: Optional[Union[str, list[str]]] = empty_list() + inlet_temperature: Optional[Union[float, list[float]]] = empty_list() + minimum_oven_temperature: Optional[Union[float, list[float]]] = empty_list() + maximum_oven_temperature: Optional[Union[float, list[float]]] = empty_list() + heating_ramp: Optional[Union[float, list[float]]] = empty_list() + heating_procedure: Optional[Union[str, list[str]]] = empty_list() + acquisition_mode: Optional[Union[str, list[str]]] = empty_list() + solvent_delay: Optional[Union[float, list[float]]] = empty_list() + trace_ion_detection: Optional[Union[str, list[str]]] = empty_list() + split_ratio: Optional[Union[float, list[float]]] = empty_list() + column_type: Optional[Union[str, list[str]]] = empty_list() + eluent: Optional[Union[str, list[str]]] = empty_list() + flow_rate: Optional[Union[float, list[float]]] = empty_list() + injection_volume: Optional[Union[float, list[float]]] = empty_list() + external_standard: Optional[Union[str, list[str]]] = empty_list() + internal_standard: Optional[Union[str, list[str]]] = empty_list() + mz_minimum: Optional[Union[float, list[float]]] = empty_list() + mz_maximum: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.carrier_gas, list): + self.carrier_gas = [self.carrier_gas] if self.carrier_gas is not None else [] + self.carrier_gas = [v if isinstance(v, str) else str(v) for v in self.carrier_gas] + + if not isinstance(self.carrier_gas_purity, list): + self.carrier_gas_purity = [self.carrier_gas_purity] if self.carrier_gas_purity is not None else [] + self.carrier_gas_purity = [v if isinstance(v, str) else str(v) for v in self.carrier_gas_purity] + + if not isinstance(self.inlet_temperature, list): + self.inlet_temperature = [self.inlet_temperature] if self.inlet_temperature is not None else [] + self.inlet_temperature = [v if isinstance(v, float) else float(v) for v in self.inlet_temperature] + + if not isinstance(self.minimum_oven_temperature, list): + self.minimum_oven_temperature = [self.minimum_oven_temperature] if self.minimum_oven_temperature is not None else [] + self.minimum_oven_temperature = [v if isinstance(v, float) else float(v) for v in self.minimum_oven_temperature] + + if not isinstance(self.maximum_oven_temperature, list): + self.maximum_oven_temperature = [self.maximum_oven_temperature] if self.maximum_oven_temperature is not None else [] + self.maximum_oven_temperature = [v if isinstance(v, float) else float(v) for v in self.maximum_oven_temperature] + + if not isinstance(self.heating_ramp, list): + self.heating_ramp = [self.heating_ramp] if self.heating_ramp is not None else [] + self.heating_ramp = [v if isinstance(v, float) else float(v) for v in self.heating_ramp] + + if not isinstance(self.heating_procedure, list): + self.heating_procedure = [self.heating_procedure] if self.heating_procedure is not None else [] + self.heating_procedure = [v if isinstance(v, str) else str(v) for v in self.heating_procedure] + + if not isinstance(self.acquisition_mode, list): + self.acquisition_mode = [self.acquisition_mode] if self.acquisition_mode is not None else [] + self.acquisition_mode = [v if isinstance(v, str) else str(v) for v in self.acquisition_mode] + + if not isinstance(self.solvent_delay, list): + self.solvent_delay = [self.solvent_delay] if self.solvent_delay is not None else [] + self.solvent_delay = [v if isinstance(v, float) else float(v) for v in self.solvent_delay] + + if not isinstance(self.trace_ion_detection, list): + self.trace_ion_detection = [self.trace_ion_detection] if self.trace_ion_detection is not None else [] + self.trace_ion_detection = [v if isinstance(v, str) else str(v) for v in self.trace_ion_detection] + + if not isinstance(self.split_ratio, list): + self.split_ratio = [self.split_ratio] if self.split_ratio is not None else [] + self.split_ratio = [v if isinstance(v, float) else float(v) for v in self.split_ratio] + + if not isinstance(self.column_type, list): + self.column_type = [self.column_type] if self.column_type is not None else [] + self.column_type = [v if isinstance(v, str) else str(v) for v in self.column_type] + + if not isinstance(self.eluent, list): + self.eluent = [self.eluent] if self.eluent is not None else [] + self.eluent = [v if isinstance(v, str) else str(v) for v in self.eluent] + + if not isinstance(self.flow_rate, list): + self.flow_rate = [self.flow_rate] if self.flow_rate is not None else [] + self.flow_rate = [v if isinstance(v, float) else float(v) for v in self.flow_rate] + + if not isinstance(self.injection_volume, list): + self.injection_volume = [self.injection_volume] if self.injection_volume is not None else [] + self.injection_volume = [v if isinstance(v, float) else float(v) for v in self.injection_volume] + + if not isinstance(self.external_standard, list): + self.external_standard = [self.external_standard] if self.external_standard is not None else [] + self.external_standard = [v if isinstance(v, str) else str(v) for v in self.external_standard] + + if not isinstance(self.internal_standard, list): + self.internal_standard = [self.internal_standard] if self.internal_standard is not None else [] + self.internal_standard = [v if isinstance(v, str) else str(v) for v in self.internal_standard] + + if not isinstance(self.mz_minimum, list): + self.mz_minimum = [self.mz_minimum] if self.mz_minimum is not None else [] + self.mz_minimum = [v if isinstance(v, float) else float(v) for v in self.mz_minimum] + + if not isinstance(self.mz_maximum, list): + self.mz_maximum = [self.mz_maximum] if self.mz_maximum is not None else [] + self.mz_maximum = [v if isinstance(v, float) else float(v) for v in self.mz_maximum] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class SizeExclusionChromatography(CharacterizationTechnique): + """ + Size exclusion chromatography for molecular weight distribution determination. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = AFP["0000843"] + class_class_curie: ClassVar[str] = "AFP:0000843" + class_name: ClassVar[str] = "SizeExclusionChromatography" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.SizeExclusionChromatography + + temperature: Optional[Union[float, list[float]]] = empty_list() + calibration_standard: Optional[Union[str, list[str]]] = empty_list() + column_type: Optional[Union[str, list[str]]] = empty_list() + eluent: Optional[Union[str, list[str]]] = empty_list() + flow_rate: Optional[Union[float, list[float]]] = empty_list() + injection_volume: Optional[Union[float, list[float]]] = empty_list() + external_standard: Optional[Union[str, list[str]]] = empty_list() + internal_standard: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + if not isinstance(self.calibration_standard, list): + self.calibration_standard = [self.calibration_standard] if self.calibration_standard is not None else [] + self.calibration_standard = [v if isinstance(v, str) else str(v) for v in self.calibration_standard] + + if not isinstance(self.column_type, list): + self.column_type = [self.column_type] if self.column_type is not None else [] + self.column_type = [v if isinstance(v, str) else str(v) for v in self.column_type] + + if not isinstance(self.eluent, list): + self.eluent = [self.eluent] if self.eluent is not None else [] + self.eluent = [v if isinstance(v, str) else str(v) for v in self.eluent] + + if not isinstance(self.flow_rate, list): + self.flow_rate = [self.flow_rate] if self.flow_rate is not None else [] + self.flow_rate = [v if isinstance(v, float) else float(v) for v in self.flow_rate] + + if not isinstance(self.injection_volume, list): + self.injection_volume = [self.injection_volume] if self.injection_volume is not None else [] + self.injection_volume = [v if isinstance(v, float) else float(v) for v in self.injection_volume] + + if not isinstance(self.external_standard, list): + self.external_standard = [self.external_standard] if self.external_standard is not None else [] + self.external_standard = [v if isinstance(v, str) else str(v) for v in self.external_standard] + + if not isinstance(self.internal_standard, list): + self.internal_standard = [self.internal_standard] if self.internal_standard is not None else [] + self.internal_standard = [v if isinstance(v, str) else str(v) for v in self.internal_standard] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class HighPerformanceLiquidChromatographyMassSpectrometry(CharacterizationTechnique): + """ + High-performance liquid chromatography-mass spectrometry for compound identification and quantification. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHMO["0000796"] + class_class_curie: ClassVar[str] = "CHMO:0000796" + class_name: ClassVar[str] = "HighPerformanceLiquidChromatographyMassSpectrometry" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.HighPerformanceLiquidChromatographyMassSpectrometry + + gradient_program: Optional[Union[str, list[str]]] = empty_list() + ionization_mode: Optional[Union[str, list[str]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + column_type: Optional[Union[str, list[str]]] = empty_list() + eluent: Optional[Union[str, list[str]]] = empty_list() + flow_rate: Optional[Union[float, list[float]]] = empty_list() + injection_volume: Optional[Union[float, list[float]]] = empty_list() + external_standard: Optional[Union[str, list[str]]] = empty_list() + internal_standard: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.gradient_program, list): + self.gradient_program = [self.gradient_program] if self.gradient_program is not None else [] + self.gradient_program = [v if isinstance(v, str) else str(v) for v in self.gradient_program] + + if not isinstance(self.ionization_mode, list): + self.ionization_mode = [self.ionization_mode] if self.ionization_mode is not None else [] + self.ionization_mode = [v if isinstance(v, str) else str(v) for v in self.ionization_mode] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + if not isinstance(self.column_type, list): + self.column_type = [self.column_type] if self.column_type is not None else [] + self.column_type = [v if isinstance(v, str) else str(v) for v in self.column_type] + + if not isinstance(self.eluent, list): + self.eluent = [self.eluent] if self.eluent is not None else [] + self.eluent = [v if isinstance(v, str) else str(v) for v in self.eluent] + + if not isinstance(self.flow_rate, list): + self.flow_rate = [self.flow_rate] if self.flow_rate is not None else [] + self.flow_rate = [v if isinstance(v, float) else float(v) for v in self.flow_rate] + + if not isinstance(self.injection_volume, list): + self.injection_volume = [self.injection_volume] if self.injection_volume is not None else [] + self.injection_volume = [v if isinstance(v, float) else float(v) for v in self.injection_volume] + + if not isinstance(self.external_standard, list): + self.external_standard = [self.external_standard] if self.external_standard is not None else [] + self.external_standard = [v if isinstance(v, str) else str(v) for v in self.external_standard] + + if not isinstance(self.internal_standard, list): + self.internal_standard = [self.internal_standard] if self.internal_standard is not None else [] + self.internal_standard = [v if isinstance(v, str) else str(v) for v in self.internal_standard] + + super().__post_init__(**kwargs) + + +class ProductIdentificationMethod(Plan): + """ + Abstract Plan representing the method used to identify and quantify reaction + products. In practice, users should reference a concrete CharacterizationTechnique + subclass from coremeta4cat_characterization_ap (e.g. GCMS, HPLC_MS, NMRSpectroscopy). + + This abstract class is retained for backward compatibility with the original + CoreMeta4Cat monolith. It is a subclass of Plan (prov:Plan / OBI:0000272) so that + it can participate in the realized_plan slot if needed. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = OBI["0000272"] + class_class_curie: ClassVar[str] = "OBI:0000272" + class_name: ClassVar[str] = "ProductIdentificationMethod" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ProductIdentificationMethod + + +class SimulationMethod(Plan): + """ + Abstract Plan describing the computational method (protocol) used in a + Simulation. Concrete subclasses carry method-specific parameter slots. + Linked from Simulation via realized_plan. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = OBI["0000272"] + class_class_curie: ClassVar[str] = "OBI:0000272" + class_name: ClassVar[str] = "SimulationMethod" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.SimulationMethod + + +@dataclass(repr=False) +class DFT(SimulationMethod): + """ + Density functional theory — a quantum mechanical method for calculating + the electronic structure of atoms, molecules, and periodic solids. + The most widely used ab initio method in computational catalysis. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["DFT"] + class_class_curie: ClassVar[str] = "coremeta4cat:DFT" + class_name: ClassVar[str] = "DFT" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.DFT + + exchange_correlation_functional: Optional[Union[str, list[str]]] = empty_list() + energy_cutoff: Optional[Union[float, list[float]]] = empty_list() + convergence_criteria: Optional[Union[str, list[str]]] = empty_list() + dft_u_parameters: Optional[Union[str, list[str]]] = empty_list() + spin_polarization: Optional[Union[Union[bool, Bool], list[Union[bool, Bool]]]] = empty_list() + total_energy_per_atom: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.exchange_correlation_functional, list): + self.exchange_correlation_functional = [self.exchange_correlation_functional] if self.exchange_correlation_functional is not None else [] + self.exchange_correlation_functional = [v if isinstance(v, str) else str(v) for v in self.exchange_correlation_functional] + + if not isinstance(self.energy_cutoff, list): + self.energy_cutoff = [self.energy_cutoff] if self.energy_cutoff is not None else [] + self.energy_cutoff = [v if isinstance(v, float) else float(v) for v in self.energy_cutoff] + + if not isinstance(self.convergence_criteria, list): + self.convergence_criteria = [self.convergence_criteria] if self.convergence_criteria is not None else [] + self.convergence_criteria = [v if isinstance(v, str) else str(v) for v in self.convergence_criteria] + + if not isinstance(self.dft_u_parameters, list): + self.dft_u_parameters = [self.dft_u_parameters] if self.dft_u_parameters is not None else [] + self.dft_u_parameters = [v if isinstance(v, str) else str(v) for v in self.dft_u_parameters] + + if not isinstance(self.spin_polarization, list): + self.spin_polarization = [self.spin_polarization] if self.spin_polarization is not None else [] + self.spin_polarization = [v if isinstance(v, Bool) else Bool(v) for v in self.spin_polarization] + + if not isinstance(self.total_energy_per_atom, list): + self.total_energy_per_atom = [self.total_energy_per_atom] if self.total_energy_per_atom is not None else [] + self.total_energy_per_atom = [v if isinstance(v, float) else float(v) for v in self.total_energy_per_atom] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class MolecularDynamics(SimulationMethod): + """ + Molecular dynamics simulation — a method for computing the time evolution + of a system of interacting particles by integrating the equations of motion. + Used to study diffusion, reaction kinetics, and thermal properties. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = NCIT["C18097"] + class_class_curie: ClassVar[str] = "NCIT:C18097" + class_name: ClassVar[str] = "MolecularDynamics" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.MolecularDynamics + + force_field: Optional[Union[str, list[str]]] = empty_list() + simulation_timestep: Optional[Union[float, list[float]]] = empty_list() + simulation_time: Optional[Union[float, list[float]]] = empty_list() + ensemble_type: Optional[Union[str, list[str]]] = empty_list() + number_of_atoms: Optional[Union[int, list[int]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.force_field, list): + self.force_field = [self.force_field] if self.force_field is not None else [] + self.force_field = [v if isinstance(v, str) else str(v) for v in self.force_field] + + if not isinstance(self.simulation_timestep, list): + self.simulation_timestep = [self.simulation_timestep] if self.simulation_timestep is not None else [] + self.simulation_timestep = [v if isinstance(v, float) else float(v) for v in self.simulation_timestep] + + if not isinstance(self.simulation_time, list): + self.simulation_time = [self.simulation_time] if self.simulation_time is not None else [] + self.simulation_time = [v if isinstance(v, float) else float(v) for v in self.simulation_time] + + if not isinstance(self.ensemble_type, list): + self.ensemble_type = [self.ensemble_type] if self.ensemble_type is not None else [] + self.ensemble_type = [v if isinstance(v, str) else str(v) for v in self.ensemble_type] + + if not isinstance(self.number_of_atoms, list): + self.number_of_atoms = [self.number_of_atoms] if self.number_of_atoms is not None else [] + self.number_of_atoms = [v if isinstance(v, int) else int(v) for v in self.number_of_atoms] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Microkinetics(SimulationMethod): + """ + Microkinetic modelling — a mean-field kinetic approach that integrates + elementary reaction steps and their rate constants to predict catalytic + activity and selectivity under reaction conditions. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["Microkinetics"] + class_class_curie: ClassVar[str] = "coremeta4cat:Microkinetics" + class_name: ClassVar[str] = "Microkinetics" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Microkinetics + + rate_constants: Optional[Union[str, list[str]]] = empty_list() + solver_type: Optional[Union[str, list[str]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + pressure: Optional[Union[float, list[float]]] = empty_list() + surface_coverage: Optional[Union[float, list[float]]] = empty_list() + activation_energy: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.rate_constants, list): + self.rate_constants = [self.rate_constants] if self.rate_constants is not None else [] + self.rate_constants = [v if isinstance(v, str) else str(v) for v in self.rate_constants] + + if not isinstance(self.solver_type, list): + self.solver_type = [self.solver_type] if self.solver_type is not None else [] + self.solver_type = [v if isinstance(v, str) else str(v) for v in self.solver_type] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + if not isinstance(self.pressure, list): + self.pressure = [self.pressure] if self.pressure is not None else [] + self.pressure = [v if isinstance(v, float) else float(v) for v in self.pressure] + + if not isinstance(self.surface_coverage, list): + self.surface_coverage = [self.surface_coverage] if self.surface_coverage is not None else [] + self.surface_coverage = [v if isinstance(v, float) else float(v) for v in self.surface_coverage] + + if not isinstance(self.activation_energy, list): + self.activation_energy = [self.activation_energy] if self.activation_energy is not None else [] + self.activation_energy = [v if isinstance(v, float) else float(v) for v in self.activation_energy] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class MonteCarlo(SimulationMethod): + """ + Monte Carlo simulation — a stochastic method that samples configuration + space using random moves accepted or rejected according to a statistical + criterion (e.g. Metropolis). Used for adsorption isotherms, phase diagrams, + and lattice-based kinetics. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["MonteCarlo"] + class_class_curie: ClassVar[str] = "coremeta4cat:MonteCarlo" + class_name: ClassVar[str] = "MonteCarlo" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.MonteCarlo + + interaction_potential: Optional[Union[str, list[str]]] = empty_list() + number_of_steps: Optional[Union[int, list[int]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + lattice_size_type: Optional[Union[str, list[str]]] = empty_list() + acceptance_criteria: Optional[Union[str, list[str]]] = empty_list() + equilibration_steps: Optional[Union[int, list[int]]] = empty_list() + sampling_interval: Optional[Union[int, list[int]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.interaction_potential, list): + self.interaction_potential = [self.interaction_potential] if self.interaction_potential is not None else [] + self.interaction_potential = [v if isinstance(v, str) else str(v) for v in self.interaction_potential] + + if not isinstance(self.number_of_steps, list): + self.number_of_steps = [self.number_of_steps] if self.number_of_steps is not None else [] + self.number_of_steps = [v if isinstance(v, int) else int(v) for v in self.number_of_steps] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + if not isinstance(self.lattice_size_type, list): + self.lattice_size_type = [self.lattice_size_type] if self.lattice_size_type is not None else [] + self.lattice_size_type = [v if isinstance(v, str) else str(v) for v in self.lattice_size_type] + + if not isinstance(self.acceptance_criteria, list): + self.acceptance_criteria = [self.acceptance_criteria] if self.acceptance_criteria is not None else [] + self.acceptance_criteria = [v if isinstance(v, str) else str(v) for v in self.acceptance_criteria] + + if not isinstance(self.equilibration_steps, list): + self.equilibration_steps = [self.equilibration_steps] if self.equilibration_steps is not None else [] + self.equilibration_steps = [v if isinstance(v, int) else int(v) for v in self.equilibration_steps] + + if not isinstance(self.sampling_interval, list): + self.sampling_interval = [self.sampling_interval] if self.sampling_interval is not None else [] + self.sampling_interval = [v if isinstance(v, int) else int(v) for v in self.sampling_interval] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class QualitativeAttribute(YAMLRoot): + """ + A piece of information that is attributed to an Entity, Activity or AgenticEntity. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Entity"] + class_class_curie: ClassVar[str] = "prov:Entity" + class_name: ClassVar[str] = "QualitativeAttribute" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.QualitativeAttribute + + value: str = None + title: Optional[str] = None + description: Optional[str] = None + type: Optional[Union[dict, DefinedTerm]] = None + rdf_type: Optional[Union[dict, DefinedTerm]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.value): + self.MissingRequiredField("value") + if not isinstance(self.value, str): + self.value = str(self.value) + + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + if self.type is not None and not isinstance(self.type, DefinedTerm): + self.type = DefinedTerm(**as_dict(self.type)) + + if self.rdf_type is not None and not isinstance(self.rdf_type, DefinedTerm): + self.rdf_type = DefinedTerm(**as_dict(self.rdf_type)) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class CalculatedProperty(QualitativeAttribute): + """ + Abstract QualitativeAttribute representing a property computed by a + Simulation. Concrete subclasses carry the property-specific output + values and the computational settings used to produce them. + Linked from Simulation via the calculated_property slot. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["CalculatedProperty"] + class_class_curie: ClassVar[str] = "coremeta4cat:CalculatedProperty" + class_name: ClassVar[str] = "CalculatedProperty" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.CalculatedProperty + + value: str = None + +@dataclass(repr=False) +class ThermodynamicStability(CalculatedProperty): + """ + Thermodynamic stability of a material or phase, characterised by formation + energy, convex hull distance, and competing phases. Used to screen catalyst + stability and predict synthesis feasibility. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["ThermodynamicStability"] + class_class_curie: ClassVar[str] = "coremeta4cat:ThermodynamicStability" + class_name: ClassVar[str] = "ThermodynamicStability" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ThermodynamicStability + + value: str = None + formation_energy: Optional[Union[float, list[float]]] = empty_list() + reference_energies: Optional[Union[str, list[str]]] = empty_list() + energy_above_hull: Optional[Union[float, list[float]]] = empty_list() + phase_diagram_type: Optional[Union[str, list[str]]] = empty_list() + competing_phases: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.formation_energy, list): + self.formation_energy = [self.formation_energy] if self.formation_energy is not None else [] + self.formation_energy = [v if isinstance(v, float) else float(v) for v in self.formation_energy] + + if not isinstance(self.reference_energies, list): + self.reference_energies = [self.reference_energies] if self.reference_energies is not None else [] + self.reference_energies = [v if isinstance(v, str) else str(v) for v in self.reference_energies] + + if not isinstance(self.energy_above_hull, list): + self.energy_above_hull = [self.energy_above_hull] if self.energy_above_hull is not None else [] + self.energy_above_hull = [v if isinstance(v, float) else float(v) for v in self.energy_above_hull] + + if not isinstance(self.phase_diagram_type, list): + self.phase_diagram_type = [self.phase_diagram_type] if self.phase_diagram_type is not None else [] + self.phase_diagram_type = [v if isinstance(v, str) else str(v) for v in self.phase_diagram_type] + + if not isinstance(self.competing_phases, list): + self.competing_phases = [self.competing_phases] if self.competing_phases is not None else [] + self.competing_phases = [v if isinstance(v, str) else str(v) for v in self.competing_phases] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Piezoelectricity(CalculatedProperty): + """ + Piezoelectric response of a non-centrosymmetric material, described by the + piezoelectric tensor. Relevant for piezocatalysis applications. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["Piezoelectricity"] + class_class_curie: ClassVar[str] = "coremeta4cat:Piezoelectricity" + class_name: ClassVar[str] = "Piezoelectricity" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Piezoelectricity + + value: str = None + piezoelectric_tensor: Optional[Union[str, list[str]]] = empty_list() + crystal_symmetry: Optional[Union[str, list[str]]] = empty_list() + strain_applied: Optional[Union[float, list[float]]] = empty_list() + ionic_electronic_contributions: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.piezoelectric_tensor, list): + self.piezoelectric_tensor = [self.piezoelectric_tensor] if self.piezoelectric_tensor is not None else [] + self.piezoelectric_tensor = [v if isinstance(v, str) else str(v) for v in self.piezoelectric_tensor] + + if not isinstance(self.crystal_symmetry, list): + self.crystal_symmetry = [self.crystal_symmetry] if self.crystal_symmetry is not None else [] + self.crystal_symmetry = [v if isinstance(v, str) else str(v) for v in self.crystal_symmetry] + + if not isinstance(self.strain_applied, list): + self.strain_applied = [self.strain_applied] if self.strain_applied is not None else [] + self.strain_applied = [v if isinstance(v, float) else float(v) for v in self.strain_applied] + + if not isinstance(self.ionic_electronic_contributions, list): + self.ionic_electronic_contributions = [self.ionic_electronic_contributions] if self.ionic_electronic_contributions is not None else [] + self.ionic_electronic_contributions = [v if isinstance(v, str) else str(v) for v in self.ionic_electronic_contributions] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ElasticConstants(CalculatedProperty): + """ + Elastic mechanical properties of a material derived from the elastic tensor, + including bulk modulus, shear modulus, and Young's modulus. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["ElasticConstants"] + class_class_curie: ClassVar[str] = "coremeta4cat:ElasticConstants" + class_name: ClassVar[str] = "ElasticConstants" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ElasticConstants + + value: str = None + elastic_tensor: Optional[Union[str, list[str]]] = empty_list() + bulk_modulus: Optional[Union[float, list[float]]] = empty_list() + shear_modulus: Optional[Union[float, list[float]]] = empty_list() + poisson_ratio: Optional[Union[float, list[float]]] = empty_list() + young_modulus: Optional[Union[float, list[float]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.elastic_tensor, list): + self.elastic_tensor = [self.elastic_tensor] if self.elastic_tensor is not None else [] + self.elastic_tensor = [v if isinstance(v, str) else str(v) for v in self.elastic_tensor] + + if not isinstance(self.bulk_modulus, list): + self.bulk_modulus = [self.bulk_modulus] if self.bulk_modulus is not None else [] + self.bulk_modulus = [v if isinstance(v, float) else float(v) for v in self.bulk_modulus] + + if not isinstance(self.shear_modulus, list): + self.shear_modulus = [self.shear_modulus] if self.shear_modulus is not None else [] + self.shear_modulus = [v if isinstance(v, float) else float(v) for v in self.shear_modulus] + + if not isinstance(self.poisson_ratio, list): + self.poisson_ratio = [self.poisson_ratio] if self.poisson_ratio is not None else [] + self.poisson_ratio = [v if isinstance(v, float) else float(v) for v in self.poisson_ratio] + + if not isinstance(self.young_modulus, list): + self.young_modulus = [self.young_modulus] if self.young_modulus is not None else [] + self.young_modulus = [v if isinstance(v, float) else float(v) for v in self.young_modulus] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Surfaces(CalculatedProperty): + """ + Surface properties of a catalyst computed from a periodic slab model, + including surface energy, Miller index, slab thickness, and vacuum spacing. + Central to heterogeneous catalysis modelling. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["Surfaces"] + class_class_curie: ClassVar[str] = "coremeta4cat:Surfaces" + class_name: ClassVar[str] = "Surfaces" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Surfaces + + value: str = None + surface_energy: Optional[Union[float, list[float]]] = empty_list() + miller_indices: Optional[Union[str, list[str]]] = empty_list() + slab_thickness: Optional[Union[float, list[float]]] = empty_list() + vacuum_spacing: Optional[Union[float, list[float]]] = empty_list() + surface_termination_method: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.surface_energy, list): + self.surface_energy = [self.surface_energy] if self.surface_energy is not None else [] + self.surface_energy = [v if isinstance(v, float) else float(v) for v in self.surface_energy] + + if not isinstance(self.miller_indices, list): + self.miller_indices = [self.miller_indices] if self.miller_indices is not None else [] + self.miller_indices = [v if isinstance(v, str) else str(v) for v in self.miller_indices] + + if not isinstance(self.slab_thickness, list): + self.slab_thickness = [self.slab_thickness] if self.slab_thickness is not None else [] + self.slab_thickness = [v if isinstance(v, float) else float(v) for v in self.slab_thickness] + + if not isinstance(self.vacuum_spacing, list): + self.vacuum_spacing = [self.vacuum_spacing] if self.vacuum_spacing is not None else [] + self.vacuum_spacing = [v if isinstance(v, float) else float(v) for v in self.vacuum_spacing] + + if not isinstance(self.surface_termination_method, list): + self.surface_termination_method = [self.surface_termination_method] if self.surface_termination_method is not None else [] + self.surface_termination_method = [v if isinstance(v, str) else str(v) for v in self.surface_termination_method] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class DielectricTensors(CalculatedProperty): + """ + Dielectric tensor computed from density functional perturbation theory (DFPT). + Characterises the optical and static dielectric response of a material. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["DielectricTensors"] + class_class_curie: ClassVar[str] = "coremeta4cat:DielectricTensors" + class_name: ClassVar[str] = "DielectricTensors" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.DielectricTensors + + value: str = None + dielectric_tensor: Optional[Union[str, list[str]]] = empty_list() + born_effective_charges: Optional[Union[str, list[str]]] = empty_list() + material_composition: Optional[Union[str, list[str]]] = empty_list() + crystal_structure: Optional[Union[str, list[str]]] = empty_list() + energy_cutoff: Optional[Union[float, list[float]]] = empty_list() + convergence_criteria: Optional[Union[str, list[str]]] = empty_list() + k_point_mesh: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.dielectric_tensor, list): + self.dielectric_tensor = [self.dielectric_tensor] if self.dielectric_tensor is not None else [] + self.dielectric_tensor = [v if isinstance(v, str) else str(v) for v in self.dielectric_tensor] + + if not isinstance(self.born_effective_charges, list): + self.born_effective_charges = [self.born_effective_charges] if self.born_effective_charges is not None else [] + self.born_effective_charges = [v if isinstance(v, str) else str(v) for v in self.born_effective_charges] + + if not isinstance(self.material_composition, list): + self.material_composition = [self.material_composition] if self.material_composition is not None else [] + self.material_composition = [v if isinstance(v, str) else str(v) for v in self.material_composition] + + if not isinstance(self.crystal_structure, list): + self.crystal_structure = [self.crystal_structure] if self.crystal_structure is not None else [] + self.crystal_structure = [v if isinstance(v, str) else str(v) for v in self.crystal_structure] + + if not isinstance(self.energy_cutoff, list): + self.energy_cutoff = [self.energy_cutoff] if self.energy_cutoff is not None else [] + self.energy_cutoff = [v if isinstance(v, float) else float(v) for v in self.energy_cutoff] + + if not isinstance(self.convergence_criteria, list): + self.convergence_criteria = [self.convergence_criteria] if self.convergence_criteria is not None else [] + self.convergence_criteria = [v if isinstance(v, str) else str(v) for v in self.convergence_criteria] + + if not isinstance(self.k_point_mesh, list): + self.k_point_mesh = [self.k_point_mesh] if self.k_point_mesh is not None else [] + self.k_point_mesh = [v if isinstance(v, str) else str(v) for v in self.k_point_mesh] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class PhononDispersion(CalculatedProperty): + """ + Phonon dispersion relations computed from interatomic force constants, + providing access to vibrational frequencies, thermodynamic quantities, + and dynamical stability (imaginary modes). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["PhononDispersion"] + class_class_curie: ClassVar[str] = "coremeta4cat:PhononDispersion" + class_name: ClassVar[str] = "PhononDispersion" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.PhononDispersion + + value: str = None + force_constant_method: Optional[Union[str, list[str]]] = empty_list() + kq_point_mesh: Optional[Union[str, list[str]]] = empty_list() + smearing_parameter: Optional[Union[float, list[float]]] = empty_list() + imaginary_modes: Optional[Union[Union[bool, Bool], list[Union[bool, Bool]]]] = empty_list() + material_composition: Optional[Union[str, list[str]]] = empty_list() + crystal_structure: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.force_constant_method, list): + self.force_constant_method = [self.force_constant_method] if self.force_constant_method is not None else [] + self.force_constant_method = [v if isinstance(v, str) else str(v) for v in self.force_constant_method] + + if not isinstance(self.kq_point_mesh, list): + self.kq_point_mesh = [self.kq_point_mesh] if self.kq_point_mesh is not None else [] + self.kq_point_mesh = [v if isinstance(v, str) else str(v) for v in self.kq_point_mesh] + + if not isinstance(self.smearing_parameter, list): + self.smearing_parameter = [self.smearing_parameter] if self.smearing_parameter is not None else [] + self.smearing_parameter = [v if isinstance(v, float) else float(v) for v in self.smearing_parameter] + + if not isinstance(self.imaginary_modes, list): + self.imaginary_modes = [self.imaginary_modes] if self.imaginary_modes is not None else [] + self.imaginary_modes = [v if isinstance(v, Bool) else Bool(v) for v in self.imaginary_modes] + + if not isinstance(self.material_composition, list): + self.material_composition = [self.material_composition] if self.material_composition is not None else [] + self.material_composition = [v if isinstance(v, str) else str(v) for v in self.material_composition] + + if not isinstance(self.crystal_structure, list): + self.crystal_structure = [self.crystal_structure] if self.crystal_structure is not None else [] + self.crystal_structure = [v if isinstance(v, str) else str(v) for v in self.crystal_structure] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class EquationsOfState(CalculatedProperty): + """ + Equation of state relating energy (or enthalpy) to volume, fitted to a + parametric model (e.g. Birch-Murnaghan). Used to extract equilibrium + volume, bulk modulus, and its pressure derivative. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["EquationsOfState"] + class_class_curie: ClassVar[str] = "coremeta4cat:EquationsOfState" + class_name: ClassVar[str] = "EquationsOfState" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.EquationsOfState + + value: str = None + fit_method: Optional[Union[str, list[str]]] = empty_list() + bulk_modulus: Optional[Union[float, list[float]]] = empty_list() + pressure_derivative: Optional[Union[float, list[float]]] = empty_list() + fit_residuals: Optional[Union[float, list[float]]] = empty_list() + material_composition: Optional[Union[str, list[str]]] = empty_list() + crystal_structure: Optional[Union[str, list[str]]] = empty_list() + energy_cutoff: Optional[Union[float, list[float]]] = empty_list() + convergence_criteria: Optional[Union[str, list[str]]] = empty_list() + k_point_mesh: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.fit_method, list): + self.fit_method = [self.fit_method] if self.fit_method is not None else [] + self.fit_method = [v if isinstance(v, str) else str(v) for v in self.fit_method] + + if not isinstance(self.bulk_modulus, list): + self.bulk_modulus = [self.bulk_modulus] if self.bulk_modulus is not None else [] + self.bulk_modulus = [v if isinstance(v, float) else float(v) for v in self.bulk_modulus] + + if not isinstance(self.pressure_derivative, list): + self.pressure_derivative = [self.pressure_derivative] if self.pressure_derivative is not None else [] + self.pressure_derivative = [v if isinstance(v, float) else float(v) for v in self.pressure_derivative] + + if not isinstance(self.fit_residuals, list): + self.fit_residuals = [self.fit_residuals] if self.fit_residuals is not None else [] + self.fit_residuals = [v if isinstance(v, float) else float(v) for v in self.fit_residuals] + + if not isinstance(self.material_composition, list): + self.material_composition = [self.material_composition] if self.material_composition is not None else [] + self.material_composition = [v if isinstance(v, str) else str(v) for v in self.material_composition] + + if not isinstance(self.crystal_structure, list): + self.crystal_structure = [self.crystal_structure] if self.crystal_structure is not None else [] + self.crystal_structure = [v if isinstance(v, str) else str(v) for v in self.crystal_structure] + + if not isinstance(self.energy_cutoff, list): + self.energy_cutoff = [self.energy_cutoff] if self.energy_cutoff is not None else [] + self.energy_cutoff = [v if isinstance(v, float) else float(v) for v in self.energy_cutoff] + + if not isinstance(self.convergence_criteria, list): + self.convergence_criteria = [self.convergence_criteria] if self.convergence_criteria is not None else [] + self.convergence_criteria = [v if isinstance(v, str) else str(v) for v in self.convergence_criteria] + + if not isinstance(self.k_point_mesh, list): + self.k_point_mesh = [self.k_point_mesh] if self.k_point_mesh is not None else [] + self.k_point_mesh = [v if isinstance(v, str) else str(v) for v in self.k_point_mesh] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class AqueousStability(CalculatedProperty): + """ + Electrochemical (Pourbaix) stability of a catalyst in aqueous solution as + a function of pH and electrode potential. Critical for electrocatalyst + stability screening. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["AqueousStability"] + class_class_curie: ClassVar[str] = "coremeta4cat:AqueousStability" + class_name: ClassVar[str] = "AqueousStability" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.AqueousStability + + value: str = None + ph_range: Optional[Union[str, list[str]]] = empty_list() + potential_range: Optional[Union[str, list[str]]] = empty_list() + solvation_model: Optional[Union[str, list[str]]] = empty_list() + ionic_strength: Optional[Union[float, list[float]]] = empty_list() + temperature: Optional[Union[float, list[float]]] = empty_list() + material_composition: Optional[Union[str, list[str]]] = empty_list() + crystal_structure: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.ph_range, list): + self.ph_range = [self.ph_range] if self.ph_range is not None else [] + self.ph_range = [v if isinstance(v, str) else str(v) for v in self.ph_range] + + if not isinstance(self.potential_range, list): + self.potential_range = [self.potential_range] if self.potential_range is not None else [] + self.potential_range = [v if isinstance(v, str) else str(v) for v in self.potential_range] + + if not isinstance(self.solvation_model, list): + self.solvation_model = [self.solvation_model] if self.solvation_model is not None else [] + self.solvation_model = [v if isinstance(v, str) else str(v) for v in self.solvation_model] + + if not isinstance(self.ionic_strength, list): + self.ionic_strength = [self.ionic_strength] if self.ionic_strength is not None else [] + self.ionic_strength = [v if isinstance(v, float) else float(v) for v in self.ionic_strength] + + if not isinstance(self.temperature, list): + self.temperature = [self.temperature] if self.temperature is not None else [] + self.temperature = [v if isinstance(v, float) else float(v) for v in self.temperature] + + if not isinstance(self.material_composition, list): + self.material_composition = [self.material_composition] if self.material_composition is not None else [] + self.material_composition = [v if isinstance(v, str) else str(v) for v in self.material_composition] + + if not isinstance(self.crystal_structure, list): + self.crystal_structure = [self.crystal_structure] if self.crystal_structure is not None else [] + self.crystal_structure = [v if isinstance(v, str) else str(v) for v in self.crystal_structure] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class GrainBoundaries(CalculatedProperty): + """ + Grain boundary structure and energetics from atomistic simulation. + Relevant for understanding polycrystalline catalyst behaviour, + sintering, and charge/defect segregation. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["GrainBoundaries"] + class_class_curie: ClassVar[str] = "coremeta4cat:GrainBoundaries" + class_name: ClassVar[str] = "GrainBoundaries" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.GrainBoundaries + + value: str = None + grain_boundary_plane: Optional[Union[str, list[str]]] = empty_list() + misorientation_angle: Optional[Union[float, list[float]]] = empty_list() + grain_boundary_energy: Optional[Union[float, list[float]]] = empty_list() + simulation_cell_size: Optional[Union[str, list[str]]] = empty_list() + gb_excess_volume: Optional[Union[float, list[float]]] = empty_list() + gb_structural_units: Optional[Union[str, list[str]]] = empty_list() + charge_defect_segregation: Optional[Union[str, list[str]]] = empty_list() + material_composition: Optional[Union[str, list[str]]] = empty_list() + crystal_structure: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.grain_boundary_plane, list): + self.grain_boundary_plane = [self.grain_boundary_plane] if self.grain_boundary_plane is not None else [] + self.grain_boundary_plane = [v if isinstance(v, str) else str(v) for v in self.grain_boundary_plane] + + if not isinstance(self.misorientation_angle, list): + self.misorientation_angle = [self.misorientation_angle] if self.misorientation_angle is not None else [] + self.misorientation_angle = [v if isinstance(v, float) else float(v) for v in self.misorientation_angle] + + if not isinstance(self.grain_boundary_energy, list): + self.grain_boundary_energy = [self.grain_boundary_energy] if self.grain_boundary_energy is not None else [] + self.grain_boundary_energy = [v if isinstance(v, float) else float(v) for v in self.grain_boundary_energy] + + if not isinstance(self.simulation_cell_size, list): + self.simulation_cell_size = [self.simulation_cell_size] if self.simulation_cell_size is not None else [] + self.simulation_cell_size = [v if isinstance(v, str) else str(v) for v in self.simulation_cell_size] + + if not isinstance(self.gb_excess_volume, list): + self.gb_excess_volume = [self.gb_excess_volume] if self.gb_excess_volume is not None else [] + self.gb_excess_volume = [v if isinstance(v, float) else float(v) for v in self.gb_excess_volume] + + if not isinstance(self.gb_structural_units, list): + self.gb_structural_units = [self.gb_structural_units] if self.gb_structural_units is not None else [] + self.gb_structural_units = [v if isinstance(v, str) else str(v) for v in self.gb_structural_units] + + if not isinstance(self.charge_defect_segregation, list): + self.charge_defect_segregation = [self.charge_defect_segregation] if self.charge_defect_segregation is not None else [] + self.charge_defect_segregation = [v if isinstance(v, str) else str(v) for v in self.charge_defect_segregation] + + if not isinstance(self.material_composition, list): + self.material_composition = [self.material_composition] if self.material_composition is not None else [] + self.material_composition = [v if isinstance(v, str) else str(v) for v in self.material_composition] + + if not isinstance(self.crystal_structure, list): + self.crystal_structure = [self.crystal_structure] if self.crystal_structure is not None else [] + self.crystal_structure = [v if isinstance(v, str) else str(v) for v in self.crystal_structure] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ElectronicStructure(CalculatedProperty): + """ + Electronic band structure and density of states, characterising the + electronic properties of a catalyst relevant to activity descriptors + (d-band centre, band gap, Fermi energy). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["ElectronicStructure"] + class_class_curie: ClassVar[str] = "coremeta4cat:ElectronicStructure" + class_name: ClassVar[str] = "ElectronicStructure" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ElectronicStructure + + value: str = None + smearing_method: Optional[Union[str, list[str]]] = empty_list() + spin_polarized: Optional[Union[Union[bool, Bool], list[Union[bool, Bool]]]] = empty_list() + band_path: Optional[Union[str, list[str]]] = empty_list() + fermi_energy: Optional[Union[float, list[float]]] = empty_list() + material_composition: Optional[Union[str, list[str]]] = empty_list() + crystal_structure: Optional[Union[str, list[str]]] = empty_list() + energy_cutoff: Optional[Union[float, list[float]]] = empty_list() + convergence_criteria: Optional[Union[str, list[str]]] = empty_list() + k_point_mesh: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.smearing_method, list): + self.smearing_method = [self.smearing_method] if self.smearing_method is not None else [] + self.smearing_method = [v if isinstance(v, str) else str(v) for v in self.smearing_method] + + if not isinstance(self.spin_polarized, list): + self.spin_polarized = [self.spin_polarized] if self.spin_polarized is not None else [] + self.spin_polarized = [v if isinstance(v, Bool) else Bool(v) for v in self.spin_polarized] + + if not isinstance(self.band_path, list): + self.band_path = [self.band_path] if self.band_path is not None else [] + self.band_path = [v if isinstance(v, str) else str(v) for v in self.band_path] + + if not isinstance(self.fermi_energy, list): + self.fermi_energy = [self.fermi_energy] if self.fermi_energy is not None else [] + self.fermi_energy = [v if isinstance(v, float) else float(v) for v in self.fermi_energy] + + if not isinstance(self.material_composition, list): + self.material_composition = [self.material_composition] if self.material_composition is not None else [] + self.material_composition = [v if isinstance(v, str) else str(v) for v in self.material_composition] + + if not isinstance(self.crystal_structure, list): + self.crystal_structure = [self.crystal_structure] if self.crystal_structure is not None else [] + self.crystal_structure = [v if isinstance(v, str) else str(v) for v in self.crystal_structure] + + if not isinstance(self.energy_cutoff, list): + self.energy_cutoff = [self.energy_cutoff] if self.energy_cutoff is not None else [] + self.energy_cutoff = [v if isinstance(v, float) else float(v) for v in self.energy_cutoff] + + if not isinstance(self.convergence_criteria, list): + self.convergence_criteria = [self.convergence_criteria] if self.convergence_criteria is not None else [] + self.convergence_criteria = [v if isinstance(v, str) else str(v) for v in self.convergence_criteria] + + if not isinstance(self.k_point_mesh, list): + self.k_point_mesh = [self.k_point_mesh] if self.k_point_mesh is not None else [] + self.k_point_mesh = [v if isinstance(v, str) else str(v) for v in self.k_point_mesh] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Ferroelectrics(CalculatedProperty): + """ + Ferroelectric properties computed from DFT, including spontaneous + polarization, switching barrier, and coercive field. Relevant for + ferroelectric-photocatalyst design. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["Ferroelectrics"] + class_class_curie: ClassVar[str] = "coremeta4cat:Ferroelectrics" + class_name: ClassVar[str] = "Ferroelectrics" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Ferroelectrics + + value: str = None + polarization_direction: Optional[Union[str, list[str]]] = empty_list() + spontaneous_polarization: Optional[Union[float, list[float]]] = empty_list() + reference_structure: Optional[Union[str, list[str]]] = empty_list() + switching_barrier: Optional[Union[float, list[float]]] = empty_list() + coercive_field: Optional[Union[float, list[float]]] = empty_list() + temperature_dependence: Optional[Union[str, list[str]]] = empty_list() + material_composition: Optional[Union[str, list[str]]] = empty_list() + crystal_structure: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.polarization_direction, list): + self.polarization_direction = [self.polarization_direction] if self.polarization_direction is not None else [] + self.polarization_direction = [v if isinstance(v, str) else str(v) for v in self.polarization_direction] + + if not isinstance(self.spontaneous_polarization, list): + self.spontaneous_polarization = [self.spontaneous_polarization] if self.spontaneous_polarization is not None else [] + self.spontaneous_polarization = [v if isinstance(v, float) else float(v) for v in self.spontaneous_polarization] + + if not isinstance(self.reference_structure, list): + self.reference_structure = [self.reference_structure] if self.reference_structure is not None else [] + self.reference_structure = [v if isinstance(v, str) else str(v) for v in self.reference_structure] + + if not isinstance(self.switching_barrier, list): + self.switching_barrier = [self.switching_barrier] if self.switching_barrier is not None else [] + self.switching_barrier = [v if isinstance(v, float) else float(v) for v in self.switching_barrier] + + if not isinstance(self.coercive_field, list): + self.coercive_field = [self.coercive_field] if self.coercive_field is not None else [] + self.coercive_field = [v if isinstance(v, float) else float(v) for v in self.coercive_field] + + if not isinstance(self.temperature_dependence, list): + self.temperature_dependence = [self.temperature_dependence] if self.temperature_dependence is not None else [] + self.temperature_dependence = [v if isinstance(v, str) else str(v) for v in self.temperature_dependence] + + if not isinstance(self.material_composition, list): + self.material_composition = [self.material_composition] if self.material_composition is not None else [] + self.material_composition = [v if isinstance(v, str) else str(v) for v in self.material_composition] + + if not isinstance(self.crystal_structure, list): + self.crystal_structure = [self.crystal_structure] if self.crystal_structure is not None else [] + self.crystal_structure = [v if isinstance(v, str) else str(v) for v in self.crystal_structure] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class BandGap(CalculatedProperty): + """ + Electronic band gap and its character (direct/indirect), with optional + many-body (GW) or excitonic corrections. Critical for photocatalyst + and semiconductor catalyst screening. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = COREMETA4CAT["BandGap"] + class_class_curie: ClassVar[str] = "coremeta4cat:BandGap" + class_name: ClassVar[str] = "BandGap" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.BandGap + + value: str = None + material_sample: Optional[Union[str, list[str]]] = empty_list() + structure_model: Optional[Union[str, list[str]]] = empty_list() + smearing_broadening: Optional[Union[float, list[float]]] = empty_list() + direct_indirect: Optional[Union[str, list[str]]] = empty_list() + experimental_reference: Optional[Union[float, list[float]]] = empty_list() + gw_hybrid_correction: Optional[Union[Union[bool, Bool], list[Union[bool, Bool]]]] = empty_list() + excitonic_correction: Optional[Union[float, list[float]]] = empty_list() + material_composition: Optional[Union[str, list[str]]] = empty_list() + crystal_structure: Optional[Union[str, list[str]]] = empty_list() + energy_cutoff: Optional[Union[float, list[float]]] = empty_list() + convergence_criteria: Optional[Union[str, list[str]]] = empty_list() + k_point_mesh: Optional[Union[str, list[str]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.material_sample, list): + self.material_sample = [self.material_sample] if self.material_sample is not None else [] + self.material_sample = [v if isinstance(v, str) else str(v) for v in self.material_sample] + + if not isinstance(self.structure_model, list): + self.structure_model = [self.structure_model] if self.structure_model is not None else [] + self.structure_model = [v if isinstance(v, str) else str(v) for v in self.structure_model] + + if not isinstance(self.smearing_broadening, list): + self.smearing_broadening = [self.smearing_broadening] if self.smearing_broadening is not None else [] + self.smearing_broadening = [v if isinstance(v, float) else float(v) for v in self.smearing_broadening] + + if not isinstance(self.direct_indirect, list): + self.direct_indirect = [self.direct_indirect] if self.direct_indirect is not None else [] + self.direct_indirect = [v if isinstance(v, str) else str(v) for v in self.direct_indirect] + + if not isinstance(self.experimental_reference, list): + self.experimental_reference = [self.experimental_reference] if self.experimental_reference is not None else [] + self.experimental_reference = [v if isinstance(v, float) else float(v) for v in self.experimental_reference] + + if not isinstance(self.gw_hybrid_correction, list): + self.gw_hybrid_correction = [self.gw_hybrid_correction] if self.gw_hybrid_correction is not None else [] + self.gw_hybrid_correction = [v if isinstance(v, Bool) else Bool(v) for v in self.gw_hybrid_correction] + + if not isinstance(self.excitonic_correction, list): + self.excitonic_correction = [self.excitonic_correction] if self.excitonic_correction is not None else [] + self.excitonic_correction = [v if isinstance(v, float) else float(v) for v in self.excitonic_correction] + + if not isinstance(self.material_composition, list): + self.material_composition = [self.material_composition] if self.material_composition is not None else [] + self.material_composition = [v if isinstance(v, str) else str(v) for v in self.material_composition] + + if not isinstance(self.crystal_structure, list): + self.crystal_structure = [self.crystal_structure] if self.crystal_structure is not None else [] + self.crystal_structure = [v if isinstance(v, str) else str(v) for v in self.crystal_structure] + + if not isinstance(self.energy_cutoff, list): + self.energy_cutoff = [self.energy_cutoff] if self.energy_cutoff is not None else [] + self.energy_cutoff = [v if isinstance(v, float) else float(v) for v in self.energy_cutoff] + + if not isinstance(self.convergence_criteria, list): + self.convergence_criteria = [self.convergence_criteria] if self.convergence_criteria is not None else [] + self.convergence_criteria = [v if isinstance(v, str) else str(v) for v in self.convergence_criteria] + + if not isinstance(self.k_point_mesh, list): + self.k_point_mesh = [self.k_point_mesh] if self.k_point_mesh is not None else [] + self.k_point_mesh = [v if isinstance(v, str) else str(v) for v in self.k_point_mesh] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class QuantitativeAttribute(YAMLRoot): + """ + A quantifiable piece of information that is attributed to an Entity, Activity or AgenticEntity. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = QUDT["Quantity"] + class_class_curie: ClassVar[str] = "qudt:Quantity" + class_name: ClassVar[str] = "QuantitativeAttribute" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.QuantitativeAttribute + + value: float = None + has_quantity_type: Union[str, DefinedTermId] = None + title: Optional[str] = None + description: Optional[str] = None + unit: Optional[Union[str, DefinedTermId]] = None + type: Optional[Union[dict, DefinedTerm]] = None + rdf_type: Optional[Union[dict, DefinedTerm]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.value): + self.MissingRequiredField("value") + if not isinstance(self.value, float): + self.value = float(self.value) + + if self._is_empty(self.has_quantity_type): + self.MissingRequiredField("has_quantity_type") + if not isinstance(self.has_quantity_type, DefinedTermId): + self.has_quantity_type = DefinedTermId(self.has_quantity_type) + + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + if self.unit is not None and not isinstance(self.unit, DefinedTermId): + self.unit = DefinedTermId(self.unit) + + if self.type is not None and not isinstance(self.type, DefinedTerm): + self.type = DefinedTerm(**as_dict(self.type)) + + if self.rdf_type is not None and not isinstance(self.rdf_type, DefinedTerm): + self.rdf_type = DefinedTerm(**as_dict(self.rdf_type)) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Relationship(YAMLRoot): + """ + See [DCAT-AP specs:Relationship](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Relationship) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCAT["Relationship"] + class_class_curie: ClassVar[str] = "dcat:Relationship" + class_name: ClassVar[str] = "Relationship" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Relationship + + had_role: Union[Union[dict, "Role"], list[Union[dict, "Role"]]] = None + relation: Union[dict[Union[str, ResourceId], Union[dict, "Resource"]], list[Union[dict, "Resource"]]] = empty_dict() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.had_role): + self.MissingRequiredField("had_role") + if not isinstance(self.had_role, list): + self.had_role = [self.had_role] if self.had_role is not None else [] + self.had_role = [v if isinstance(v, Role) else Role(**as_dict(v)) for v in self.had_role] + + if self._is_empty(self.relation): + self.MissingRequiredField("relation") + self._normalize_inlined_as_list(slot_name="relation", slot_type=Resource, key_name="id", keyed=True) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Software(AgenticEntity): + """ + An instrument composed of a series of instructions that can be interpreted by or directly executed by a computer. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["SoftwareAgent"] + class_class_curie: ClassVar[str] = "prov:SoftwareAgent" + class_name: ClassVar[str] = "Software" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Software + + id: Union[str, SoftwareId] = None + has_part: Optional[Union[dict[Union[str, SoftwareId], Union[dict, "Software"]], list[Union[dict, "Software"]]]] = empty_dict() + other_identifier: Optional[Union[Union[dict, "Identifier"], list[Union[dict, "Identifier"]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, SoftwareId): + self.id = SoftwareId(self.id) + + self._normalize_inlined_as_list(slot_name="has_part", slot_type=Software, key_name="id", keyed=True) + + if not isinstance(self.other_identifier, list): + self.other_identifier = [self.other_identifier] if self.other_identifier is not None else [] + self.other_identifier = [v if isinstance(v, Identifier) else Identifier(**as_dict(v)) for v in self.other_identifier] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class SupportiveEntity(YAMLRoot): + """ + The supportive entities are supporting the main entities in the Application Profile. They are included in the + Application Profile because they form the range of properties. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCATAPPLUS["SupportiveEntity"] + class_class_curie: ClassVar[str] = "dcatapplus:SupportiveEntity" + class_name: ClassVar[str] = "SupportiveEntity" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.SupportiveEntity + + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Attribution(SupportiveEntity): + """ + See [DCAT-AP specs:Attribution](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Attribution) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Attribution"] + class_class_curie: ClassVar[str] = "prov:Attribution" + class_name: ClassVar[str] = "Attribution" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Attribution + + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ChecksumAlgorithm(SupportiveEntity): + """ + See [DCAT-AP specs:ChecksumAlgorithm](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#ChecksumAlgorithm) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = SPDX["ChecksumAlgorithm"] + class_class_curie: ClassVar[str] = "spdx:ChecksumAlgorithm" + class_name: ClassVar[str] = "ChecksumAlgorithm" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ChecksumAlgorithm + + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Concept(SupportiveEntity): + """ + See [DCAT-AP specs:Concept](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Concept) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = SKOS["Concept"] + class_class_curie: ClassVar[str] = "skos:Concept" + class_name: ClassVar[str] = "Concept" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Concept + + preferred_label: Union[str, list[str]] = None + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.preferred_label): + self.MissingRequiredField("preferred_label") + if not isinstance(self.preferred_label, list): + self.preferred_label = [self.preferred_label] if self.preferred_label is not None else [] + self.preferred_label = [v if isinstance(v, str) else str(v) for v in self.preferred_label] + + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ConceptScheme(SupportiveEntity): + """ + See [DCAT-AP specs:ConceptScheme](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#ConceptScheme) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = SKOS["ConceptScheme"] + class_class_curie: ClassVar[str] = "skos:ConceptScheme" + class_name: ClassVar[str] = "ConceptScheme" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ConceptScheme + + title: Union[str, list[str]] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.title): + self.MissingRequiredField("title") + if not isinstance(self.title, list): + self.title = [self.title] if self.title is not None else [] + self.title = [v if isinstance(v, str) else str(v) for v in self.title] + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Document(SupportiveEntity): + """ + See [DCAT-AP specs:Document](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Document) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = FOAF["Document"] + class_class_curie: ClassVar[str] = "foaf:Document" + class_name: ClassVar[str] = "Document" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Document + + id: Union[str, DocumentId] = None + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, DocumentId): + self.id = DocumentId(self.id) + + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Frequency(SupportiveEntity): + """ + See [DCAT-AP specs:Frequency](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Frequency) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCTERMS["Frequency"] + class_class_curie: ClassVar[str] = "dcterms:Frequency" + class_name: ClassVar[str] = "Frequency" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Frequency + + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Geometry(SupportiveEntity): + """ + See [DCAT-AP specs:Geometry](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Geometry) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = LOCN["Geometry"] + class_class_curie: ClassVar[str] = "locn:Geometry" + class_name: ClassVar[str] = "Geometry" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Geometry + + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Identifier(SupportiveEntity): + """ + See [DCAT-AP specs:Identifier](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Identifier) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = ADMS["Identifier"] + class_class_curie: ClassVar[str] = "adms:Identifier" + class_name: ClassVar[str] = "Identifier" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Identifier + + notation: str = None + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.notation): + self.MissingRequiredField("notation") + if not isinstance(self.notation, str): + self.notation = str(self.notation) + + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class LegalResource(SupportiveEntity): + """ + See [DCAT-AP specs:LegalResource](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#LegalResource) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = ELI["LegalResource"] + class_class_curie: ClassVar[str] = "eli:LegalResource" + class_name: ClassVar[str] = "LegalResource" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.LegalResource + + id: Union[str, LegalResourceId] = None + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, LegalResourceId): + self.id = LegalResourceId(self.id) + + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class LicenseDocument(SupportiveEntity): + """ + See [DCAT-AP specs:LicenseDocument](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#LicenseDocument) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCTERMS["LicenseDocument"] + class_class_curie: ClassVar[str] = "dcterms:LicenseDocument" + class_name: ClassVar[str] = "LicenseDocument" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.LicenseDocument + + id: Union[str, LicenseDocumentId] = None + type: Optional[Union[Union[dict, Concept], list[Union[dict, Concept]]]] = empty_list() + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, LicenseDocumentId): + self.id = LicenseDocumentId(self.id) + + if not isinstance(self.type, list): + self.type = [self.type] if self.type is not None else [] + self.type = [v if isinstance(v, Concept) else Concept(**as_dict(v)) for v in self.type] + + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class LinguisticSystem(SupportiveEntity): + """ + See [DCAT-AP specs:LinguisticSystem](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#LinguisticSystem) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCTERMS["LinguisticSystem"] + class_class_curie: ClassVar[str] = "dcterms:LinguisticSystem" + class_name: ClassVar[str] = "LinguisticSystem" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.LinguisticSystem + + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class MediaType(SupportiveEntity): + """ + See [DCAT-AP specs:MediaType](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#MediaType) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCTERMS["MediaType"] + class_class_curie: ClassVar[str] = "dcterms:MediaType" + class_name: ClassVar[str] = "MediaType" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.MediaType + + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class MediaTypeOrExtent(SupportiveEntity): + """ + See [DCAT-AP specs:MediaTypeOrExtent](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#MediaTypeOrExtent) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCTERMS["MediaTypeOrExtent"] + class_class_curie: ClassVar[str] = "dcterms:MediaTypeOrExtent" + class_name: ClassVar[str] = "MediaTypeOrExtent" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.MediaTypeOrExtent + + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class PeriodOfTime(SupportiveEntity): + """ + See [DCAT-AP specs:PeriodOfTime](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#PeriodOfTime) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCTERMS["PeriodOfTime"] + class_class_curie: ClassVar[str] = "dcterms:PeriodOfTime" + class_name: ClassVar[str] = "PeriodOfTime" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.PeriodOfTime + + beginning: Optional[Union[dict, "TimeInstant"]] = None + end: Optional[Union[dict, "TimeInstant"]] = None + end_date: Optional[Union[str, XSDDate]] = None + start_date: Optional[Union[str, XSDDate]] = None + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.beginning is not None and not isinstance(self.beginning, TimeInstant): + self.beginning = TimeInstant(**as_dict(self.beginning)) + + if self.end is not None and not isinstance(self.end, TimeInstant): + self.end = TimeInstant(**as_dict(self.end)) + + if self.end_date is not None and not isinstance(self.end_date, XSDDate): + self.end_date = XSDDate(self.end_date) + + if self.start_date is not None and not isinstance(self.start_date, XSDDate): + self.start_date = XSDDate(self.start_date) + + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Policy(SupportiveEntity): + """ + See [DCAT-AP specs:Policy](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Policy) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = ODRL["Policy"] + class_class_curie: ClassVar[str] = "odrl:Policy" + class_name: ClassVar[str] = "Policy" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Policy + + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ProvenanceStatement(SupportiveEntity): + """ + See [DCAT-AP specs:ProvenanceStatement](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#ProvenanceStatement) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCTERMS["ProvenanceStatement"] + class_class_curie: ClassVar[str] = "dcterms:ProvenanceStatement" + class_name: ClassVar[str] = "ProvenanceStatement" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ProvenanceStatement + + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Resource(SupportiveEntity): + """ + See [DCAT-AP specs:Resource](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Resource) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = RDFS["Resource"] + class_class_curie: ClassVar[str] = "rdfs:Resource" + class_name: ClassVar[str] = "Resource" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Resource + + id: Union[str, ResourceId] = None + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, ResourceId): + self.id = ResourceId(self.id) + + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class RightsStatement(SupportiveEntity): + """ + See [DCAT-AP specs:RightsStatement](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#RightsStatement) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCTERMS["RightsStatement"] + class_class_curie: ClassVar[str] = "dcterms:RightsStatement" + class_name: ClassVar[str] = "RightsStatement" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.RightsStatement + + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Role(SupportiveEntity): + """ + See [DCAT-AP specs:Role](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Role) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCAT["Role"] + class_class_curie: ClassVar[str] = "dcat:Role" + class_name: ClassVar[str] = "Role" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Role + + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Standard(SupportiveEntity): + """ + See [DCAT-AP specs:Standard](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Standard) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = DCTERMS["Standard"] + class_class_curie: ClassVar[str] = "dcterms:Standard" + class_name: ClassVar[str] = "Standard" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Standard + + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Surrounding(YAMLRoot): + """ + The surrounding in which the dataset creating activity took place (e.g. a lab). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Location"] + class_class_curie: ClassVar[str] = "prov:Location" + class_name: ClassVar[str] = "Surrounding" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Surrounding + + title: Optional[str] = None + description: Optional[str] = None + type: Optional[Union[dict, DefinedTerm]] = None + rdf_type: Optional[Union[dict, DefinedTerm]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + if self.type is not None and not isinstance(self.type, DefinedTerm): + self.type = DefinedTerm(**as_dict(self.type)) + + if self.rdf_type is not None and not isinstance(self.rdf_type, DefinedTerm): + self.rdf_type = DefinedTerm(**as_dict(self.rdf_type)) + + super().__post_init__(**kwargs) + + +class Laboratory(Surrounding): + """ + A facility that provides controlled conditions in which scientific or technological research, experiments, and + measurement may be performed. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = ENVO["01001405"] + class_class_curie: ClassVar[str] = "ENVO:01001405" + class_name: ClassVar[str] = "Laboratory" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Laboratory + + +@dataclass(repr=False) +class TimeInstant(SupportiveEntity): + """ + See [DCAT-AP specs:TimeInstant](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#TimeInstant) + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = TIME["Instant"] + class_class_curie: ClassVar[str] = "time:Instant" + class_name: ClassVar[str] = "TimeInstant" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.TimeInstant + + title: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class InChIKey(QualitativeAttribute): + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHEMINF["000059"] + class_class_curie: ClassVar[str] = "CHEMINF:000059" + class_name: ClassVar[str] = "InChIKey" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.InChIKey + + value: str = None + +@dataclass(repr=False) +class InChi(QualitativeAttribute): + """ + A structure descriptor which conforms to the InChI format specification. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHEMINF["000113"] + class_class_curie: ClassVar[str] = "CHEMINF:000113" + class_name: ClassVar[str] = "InChi" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.InChi + + value: str = None + +@dataclass(repr=False) +class MolecularFormula(QualitativeAttribute): + """ + A structure descriptor which identifies each constituent element by its chemical symbol and indicates the number + of atoms of each element found in each discrete molecule of that compound. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHEMINF["000042"] + class_class_curie: ClassVar[str] = "CHEMINF:000042" + class_name: ClassVar[str] = "MolecularFormula" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.MolecularFormula + + value: str = None + +@dataclass(repr=False) +class IUPACName(QualitativeAttribute): + """ + A systematic name which is formulated according to the rules and recommendations for chemical nomenclature set out + by the International Union of Pure and Applied Chemistry (IUPAC). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHEMINF["000107"] + class_class_curie: ClassVar[str] = "CHEMINF:000107" + class_name: ClassVar[str] = "IUPACName" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.IUPACName + + value: str = None + +@dataclass(repr=False) +class SMILES(QualitativeAttribute): + """ + A structure descriptor that denotes a molecular structure as a graph and conforms to the SMILES format + specification. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHEMINF["000018"] + class_class_curie: ClassVar[str] = "CHEMINF:000018" + class_name: ClassVar[str] = "SMILES" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.SMILES + + value: str = None + +@dataclass(repr=False) +class Concentration(QuantitativeAttribute): + """ + A QuantitativeAttribute of a ChemicalSubstance that represents the amount of a constituent divided by the volume + of the mixture. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHMO["0002820"] + class_class_curie: ClassVar[str] = "CHMO:0002820" + class_name: ClassVar[str] = "Concentration" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Concentration + + value: float = None + has_quantity_type: Union[str, DefinedTermId] = None + +@dataclass(repr=False) +class AmountOfSubstance(QuantitativeAttribute): + """ + The total amount of substance used in a ChemicalReaction. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = QUDT["Quantity"] + class_class_curie: ClassVar[str] = "qudt:Quantity" + class_name: ClassVar[str] = "AmountOfSubstance" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.AmountOfSubstance + + value: float = None + has_quantity_type: Union[str, DefinedTermId] = None + +@dataclass(repr=False) +class PHValue(QuantitativeAttribute): + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = SIO["001089"] + class_class_curie: ClassVar[str] = "SIO:001089" + class_name: ClassVar[str] = "PHValue" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.PHValue + + value: float = None + has_quantity_type: Union[str, DefinedTermId] = None + +@dataclass(repr=False) +class ChemicalReaction(Activity): + """ + A process that leads to the transformation of one set of chemical substances to another. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = SIO["010345"] + class_class_curie: ClassVar[str] = "SIO:010345" + class_name: ClassVar[str] = "ChemicalReaction" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ChemicalReaction + + id: Union[str, ChemicalReactionId] = None + used_starting_material: Optional[Union[dict[Union[str, StartingMaterialId], Union[dict, "StartingMaterial"]], list[Union[dict, "StartingMaterial"]]]] = empty_dict() + used_reactant: Optional[Union[dict[Union[str, ReagentId], Union[dict, "Reagent"]], list[Union[dict, "Reagent"]]]] = empty_dict() + generated_product: Optional[Union[dict[Union[str, ChemicalProductId], Union[dict, "ChemicalProduct"]], list[Union[dict, "ChemicalProduct"]]]] = empty_dict() + used_catalyst: Optional[Union[dict[Union[str, CatalystId], Union[dict, "Catalyst"]], list[Union[dict, "Catalyst"]]]] = empty_dict() + used_solvent: Optional[Union[dict[Union[str, DissolvingSubstanceId], Union[dict, "DissolvingSubstance"]], list[Union[dict, "DissolvingSubstance"]]]] = empty_dict() + has_duration: Optional[str] = None + used_reactor: Optional[Union[dict[Union[str, ReactorId], Union[dict, "Reactor"]], list[Union[dict, "Reactor"]]]] = empty_dict() + has_temperature: Optional[Union[Union[dict, "Temperature"], list[Union[dict, "Temperature"]]]] = empty_list() + has_pressure: Optional[Union[Union[dict, "Pressure"], list[Union[dict, "Pressure"]]]] = empty_list() + has_yield: Optional[Union[Union[dict, "Yield"], list[Union[dict, "Yield"]]]] = empty_list() + has_reaction_step: Optional[Union[str, ChemicalReactionId]] = None + related_resource: Optional[Union[dict[Union[str, ResourceId], Union[dict, Resource]], list[Union[dict, Resource]]]] = empty_dict() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, ChemicalReactionId): + self.id = ChemicalReactionId(self.id) + + self._normalize_inlined_as_list(slot_name="used_starting_material", slot_type=StartingMaterial, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="used_reactant", slot_type=Reagent, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="generated_product", slot_type=ChemicalProduct, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="used_catalyst", slot_type=Catalyst, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="used_solvent", slot_type=DissolvingSubstance, key_name="id", keyed=True) + + if self.has_duration is not None and not isinstance(self.has_duration, str): + self.has_duration = str(self.has_duration) + + self._normalize_inlined_as_list(slot_name="used_reactor", slot_type=Reactor, key_name="id", keyed=True) + + if not isinstance(self.has_temperature, list): + self.has_temperature = [self.has_temperature] if self.has_temperature is not None else [] + self.has_temperature = [v if isinstance(v, Temperature) else Temperature(**as_dict(v)) for v in self.has_temperature] + + if not isinstance(self.has_pressure, list): + self.has_pressure = [self.has_pressure] if self.has_pressure is not None else [] + self.has_pressure = [v if isinstance(v, Pressure) else Pressure(**as_dict(v)) for v in self.has_pressure] + + if not isinstance(self.has_yield, list): + self.has_yield = [self.has_yield] if self.has_yield is not None else [] + self.has_yield = [v if isinstance(v, Yield) else Yield(**as_dict(v)) for v in self.has_yield] + + if self.has_reaction_step is not None and not isinstance(self.has_reaction_step, ChemicalReactionId): + self.has_reaction_step = ChemicalReactionId(self.has_reaction_step) + + self._normalize_inlined_as_list(slot_name="related_resource", slot_type=Resource, key_name="id", keyed=True) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class DissolvingSubstance(AgenticEntity): + """ + A liquid ChemicalSubstance that dissolves or that is capable of dissolving a ChemicalSubstance. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = SIO["010417"] + class_class_curie: ClassVar[str] = "SIO:010417" + class_name: ClassVar[str] = "DissolvingSubstance" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.DissolvingSubstance + + id: Union[str, DissolvingSubstanceId] = None + title: Optional[str] = None + description: Optional[str] = None + has_qualitative_attribute: Optional[Union[Union[dict, QualitativeAttribute], list[Union[dict, QualitativeAttribute]]]] = empty_list() + has_quantitative_attribute: Optional[Union[Union[dict, QuantitativeAttribute], list[Union[dict, QuantitativeAttribute]]]] = empty_list() + has_percentage_of_total: Optional[Union[Union[dict, "PercentageOfTotal"], list[Union[dict, "PercentageOfTotal"]]]] = empty_list() + alternative_label: Optional[str] = None + has_physical_state: Optional[Union[str, "PhysicalStateEnum"]] = None + has_temperature: Optional[Union[Union[dict, "Temperature"], list[Union[dict, "Temperature"]]]] = empty_list() + has_mass: Optional[Union[Union[dict, "Mass"], list[Union[dict, "Mass"]]]] = empty_list() + has_volume: Optional[Union[Union[dict, "Volume"], list[Union[dict, "Volume"]]]] = empty_list() + has_density: Optional[Union[Union[dict, "Density"], list[Union[dict, "Density"]]]] = empty_list() + has_pressure: Optional[Union[Union[dict, "Pressure"], list[Union[dict, "Pressure"]]]] = empty_list() + has_concentration: Optional[Union[Union[dict, Concentration], list[Union[dict, Concentration]]]] = empty_list() + has_ph_value: Optional[Union[Union[dict, PHValue], list[Union[dict, PHValue]]]] = empty_list() + composed_of: Optional[Union[dict[Union[str, ChemicalEntityId], Union[dict, "ChemicalEntity"]], list[Union[dict, "ChemicalEntity"]]]] = empty_dict() + has_molar_equivalent: Optional[Union[Union[dict, "MolarEquivalent"], list[Union[dict, "MolarEquivalent"]]]] = empty_list() + has_amount: Optional[Union[Union[dict, AmountOfSubstance], list[Union[dict, AmountOfSubstance]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, DissolvingSubstanceId): + self.id = DissolvingSubstanceId(self.id) + + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + if not isinstance(self.has_qualitative_attribute, list): + self.has_qualitative_attribute = [self.has_qualitative_attribute] if self.has_qualitative_attribute is not None else [] + self.has_qualitative_attribute = [v if isinstance(v, QualitativeAttribute) else QualitativeAttribute(**as_dict(v)) for v in self.has_qualitative_attribute] + + if not isinstance(self.has_quantitative_attribute, list): + self.has_quantitative_attribute = [self.has_quantitative_attribute] if self.has_quantitative_attribute is not None else [] + self.has_quantitative_attribute = [v if isinstance(v, QuantitativeAttribute) else QuantitativeAttribute(**as_dict(v)) for v in self.has_quantitative_attribute] + + if not isinstance(self.has_percentage_of_total, list): + self.has_percentage_of_total = [self.has_percentage_of_total] if self.has_percentage_of_total is not None else [] + self.has_percentage_of_total = [v if isinstance(v, PercentageOfTotal) else PercentageOfTotal(**as_dict(v)) for v in self.has_percentage_of_total] + + if self.alternative_label is not None and not isinstance(self.alternative_label, str): + self.alternative_label = str(self.alternative_label) + + if self.has_physical_state is not None and not isinstance(self.has_physical_state, PhysicalStateEnum): + self.has_physical_state = PhysicalStateEnum(self.has_physical_state) + + if not isinstance(self.has_temperature, list): + self.has_temperature = [self.has_temperature] if self.has_temperature is not None else [] + self.has_temperature = [v if isinstance(v, Temperature) else Temperature(**as_dict(v)) for v in self.has_temperature] + + if not isinstance(self.has_mass, list): + self.has_mass = [self.has_mass] if self.has_mass is not None else [] + self.has_mass = [v if isinstance(v, Mass) else Mass(**as_dict(v)) for v in self.has_mass] + + if not isinstance(self.has_volume, list): + self.has_volume = [self.has_volume] if self.has_volume is not None else [] + self.has_volume = [v if isinstance(v, Volume) else Volume(**as_dict(v)) for v in self.has_volume] + + if not isinstance(self.has_density, list): + self.has_density = [self.has_density] if self.has_density is not None else [] + self.has_density = [v if isinstance(v, Density) else Density(**as_dict(v)) for v in self.has_density] + + if not isinstance(self.has_pressure, list): + self.has_pressure = [self.has_pressure] if self.has_pressure is not None else [] + self.has_pressure = [v if isinstance(v, Pressure) else Pressure(**as_dict(v)) for v in self.has_pressure] + + if not isinstance(self.has_concentration, list): + self.has_concentration = [self.has_concentration] if self.has_concentration is not None else [] + self.has_concentration = [v if isinstance(v, Concentration) else Concentration(**as_dict(v)) for v in self.has_concentration] + + if not isinstance(self.has_ph_value, list): + self.has_ph_value = [self.has_ph_value] if self.has_ph_value is not None else [] + self.has_ph_value = [v if isinstance(v, PHValue) else PHValue(**as_dict(v)) for v in self.has_ph_value] + + self._normalize_inlined_as_list(slot_name="composed_of", slot_type=ChemicalEntity, key_name="id", keyed=True) + + if not isinstance(self.has_molar_equivalent, list): + self.has_molar_equivalent = [self.has_molar_equivalent] if self.has_molar_equivalent is not None else [] + self.has_molar_equivalent = [v if isinstance(v, MolarEquivalent) else MolarEquivalent(**as_dict(v)) for v in self.has_molar_equivalent] + + if not isinstance(self.has_amount, list): + self.has_amount = [self.has_amount] if self.has_amount is not None else [] + self.has_amount = [v if isinstance(v, AmountOfSubstance) else AmountOfSubstance(**as_dict(v)) for v in self.has_amount] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Catalyst(AgenticEntity): + """ + A ChemicalSubstance or MaterialEntity that initiates or accelerates a ChemicalReaction without itself being + affected. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = SIO["010344"] + class_class_curie: ClassVar[str] = "SIO:010344" + class_name: ClassVar[str] = "Catalyst" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Catalyst + + id: Union[str, CatalystId] = None + title: Optional[str] = None + description: Optional[str] = None + has_qualitative_attribute: Optional[Union[Union[dict, QualitativeAttribute], list[Union[dict, QualitativeAttribute]]]] = empty_list() + has_quantitative_attribute: Optional[Union[Union[dict, QuantitativeAttribute], list[Union[dict, QuantitativeAttribute]]]] = empty_list() + has_molar_equivalent: Optional[Union[Union[dict, "MolarEquivalent"], list[Union[dict, "MolarEquivalent"]]]] = empty_list() + alternative_label: Optional[str] = None + has_physical_state: Optional[Union[str, "PhysicalStateEnum"]] = None + has_temperature: Optional[Union[Union[dict, "Temperature"], list[Union[dict, "Temperature"]]]] = empty_list() + has_mass: Optional[Union[Union[dict, "Mass"], list[Union[dict, "Mass"]]]] = empty_list() + has_volume: Optional[Union[Union[dict, "Volume"], list[Union[dict, "Volume"]]]] = empty_list() + has_density: Optional[Union[Union[dict, "Density"], list[Union[dict, "Density"]]]] = empty_list() + has_pressure: Optional[Union[Union[dict, "Pressure"], list[Union[dict, "Pressure"]]]] = empty_list() + has_concentration: Optional[Union[Union[dict, Concentration], list[Union[dict, Concentration]]]] = empty_list() + has_ph_value: Optional[Union[Union[dict, PHValue], list[Union[dict, PHValue]]]] = empty_list() + composed_of: Optional[Union[dict[Union[str, ChemicalEntityId], Union[dict, "ChemicalEntity"]], list[Union[dict, "ChemicalEntity"]]]] = empty_dict() + has_amount: Optional[Union[Union[dict, AmountOfSubstance], list[Union[dict, AmountOfSubstance]]]] = empty_list() + has_percentage_of_total: Optional[Union[Union[dict, "PercentageOfTotal"], list[Union[dict, "PercentageOfTotal"]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, CatalystId): + self.id = CatalystId(self.id) + + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + if not isinstance(self.has_qualitative_attribute, list): + self.has_qualitative_attribute = [self.has_qualitative_attribute] if self.has_qualitative_attribute is not None else [] + self.has_qualitative_attribute = [v if isinstance(v, QualitativeAttribute) else QualitativeAttribute(**as_dict(v)) for v in self.has_qualitative_attribute] + + if not isinstance(self.has_quantitative_attribute, list): + self.has_quantitative_attribute = [self.has_quantitative_attribute] if self.has_quantitative_attribute is not None else [] + self.has_quantitative_attribute = [v if isinstance(v, QuantitativeAttribute) else QuantitativeAttribute(**as_dict(v)) for v in self.has_quantitative_attribute] + + if not isinstance(self.has_molar_equivalent, list): + self.has_molar_equivalent = [self.has_molar_equivalent] if self.has_molar_equivalent is not None else [] + self.has_molar_equivalent = [v if isinstance(v, MolarEquivalent) else MolarEquivalent(**as_dict(v)) for v in self.has_molar_equivalent] + + if self.alternative_label is not None and not isinstance(self.alternative_label, str): + self.alternative_label = str(self.alternative_label) + + if self.has_physical_state is not None and not isinstance(self.has_physical_state, PhysicalStateEnum): + self.has_physical_state = PhysicalStateEnum(self.has_physical_state) + + if not isinstance(self.has_temperature, list): + self.has_temperature = [self.has_temperature] if self.has_temperature is not None else [] + self.has_temperature = [v if isinstance(v, Temperature) else Temperature(**as_dict(v)) for v in self.has_temperature] + + if not isinstance(self.has_mass, list): + self.has_mass = [self.has_mass] if self.has_mass is not None else [] + self.has_mass = [v if isinstance(v, Mass) else Mass(**as_dict(v)) for v in self.has_mass] + + if not isinstance(self.has_volume, list): + self.has_volume = [self.has_volume] if self.has_volume is not None else [] + self.has_volume = [v if isinstance(v, Volume) else Volume(**as_dict(v)) for v in self.has_volume] + + if not isinstance(self.has_density, list): + self.has_density = [self.has_density] if self.has_density is not None else [] + self.has_density = [v if isinstance(v, Density) else Density(**as_dict(v)) for v in self.has_density] + + if not isinstance(self.has_pressure, list): + self.has_pressure = [self.has_pressure] if self.has_pressure is not None else [] + self.has_pressure = [v if isinstance(v, Pressure) else Pressure(**as_dict(v)) for v in self.has_pressure] + + if not isinstance(self.has_concentration, list): + self.has_concentration = [self.has_concentration] if self.has_concentration is not None else [] + self.has_concentration = [v if isinstance(v, Concentration) else Concentration(**as_dict(v)) for v in self.has_concentration] + + if not isinstance(self.has_ph_value, list): + self.has_ph_value = [self.has_ph_value] if self.has_ph_value is not None else [] + self.has_ph_value = [v if isinstance(v, PHValue) else PHValue(**as_dict(v)) for v in self.has_ph_value] + + self._normalize_inlined_as_list(slot_name="composed_of", slot_type=ChemicalEntity, key_name="id", keyed=True) + + if not isinstance(self.has_amount, list): + self.has_amount = [self.has_amount] if self.has_amount is not None else [] + self.has_amount = [v if isinstance(v, AmountOfSubstance) else AmountOfSubstance(**as_dict(v)) for v in self.has_amount] + + if not isinstance(self.has_percentage_of_total, list): + self.has_percentage_of_total = [self.has_percentage_of_total] if self.has_percentage_of_total is not None else [] + self.has_percentage_of_total = [v if isinstance(v, PercentageOfTotal) else PercentageOfTotal(**as_dict(v)) for v in self.has_percentage_of_total] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Reactor(Device): + """ + A reactor is a container for controlling a biological or chemical reaction or process. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = AFE["0000153"] + class_class_curie: ClassVar[str] = "AFE:0000153" + class_name: ClassVar[str] = "Reactor" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Reactor + + id: Union[str, ReactorId] = None + alternative_label: Optional[str] = None + has_physical_state: Optional[Union[str, "PhysicalStateEnum"]] = None + has_temperature: Optional[Union[Union[dict, "Temperature"], list[Union[dict, "Temperature"]]]] = empty_list() + has_mass: Optional[Union[Union[dict, "Mass"], list[Union[dict, "Mass"]]]] = empty_list() + has_volume: Optional[Union[Union[dict, "Volume"], list[Union[dict, "Volume"]]]] = empty_list() + has_density: Optional[Union[Union[dict, "Density"], list[Union[dict, "Density"]]]] = empty_list() + has_pressure: Optional[Union[Union[dict, "Pressure"], list[Union[dict, "Pressure"]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, ReactorId): + self.id = ReactorId(self.id) + + if self.alternative_label is not None and not isinstance(self.alternative_label, str): + self.alternative_label = str(self.alternative_label) + + if self.has_physical_state is not None and not isinstance(self.has_physical_state, PhysicalStateEnum): + self.has_physical_state = PhysicalStateEnum(self.has_physical_state) + + if not isinstance(self.has_temperature, list): + self.has_temperature = [self.has_temperature] if self.has_temperature is not None else [] + self.has_temperature = [v if isinstance(v, Temperature) else Temperature(**as_dict(v)) for v in self.has_temperature] + + if not isinstance(self.has_mass, list): + self.has_mass = [self.has_mass] if self.has_mass is not None else [] + self.has_mass = [v if isinstance(v, Mass) else Mass(**as_dict(v)) for v in self.has_mass] + + if not isinstance(self.has_volume, list): + self.has_volume = [self.has_volume] if self.has_volume is not None else [] + self.has_volume = [v if isinstance(v, Volume) else Volume(**as_dict(v)) for v in self.has_volume] + + if not isinstance(self.has_density, list): + self.has_density = [self.has_density] if self.has_density is not None else [] + self.has_density = [v if isinstance(v, Density) else Density(**as_dict(v)) for v in self.has_density] + + if not isinstance(self.has_pressure, list): + self.has_pressure = [self.has_pressure] if self.has_pressure is not None else [] + self.has_pressure = [v if isinstance(v, Pressure) else Pressure(**as_dict(v)) for v in self.has_pressure] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Yield(QuantitativeAttribute): + """ + A dimensionless physical quantity describing the fraction of a product B that is formed from a reactant A taking + into account the stoichiometry. If A fully reacts to B without side-reactions, the yield of product B is 1 (or 100 + %). + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = QUDT["Quantity"] + class_class_curie: ClassVar[str] = "qudt:Quantity" + class_name: ClassVar[str] = "Yield" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Yield + + value: float = None + has_quantity_type: Union[str, DefinedTermId] = None + +@dataclass(repr=False) +class MolarEquivalent(QuantitativeAttribute): + """ + A dimensionless ratio that quantifies the stoichiometric proportion of a chemical substance relative to a + reference substance in a chemical reaction. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = QUDT["Quantity"] + class_class_curie: ClassVar[str] = "qudt:Quantity" + class_name: ClassVar[str] = "MolarEquivalent" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.MolarEquivalent + + value: float = None + has_quantity_type: Union[str, DefinedTermId] = None + +@dataclass(repr=False) +class PercentageOfTotal(QuantitativeAttribute): + """ + A dimensionless ratio that quantifies the stoichiometric proportion of a chemical substance relative to a + reference substance in a chemical reaction. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = QUDT["Quantity"] + class_class_curie: ClassVar[str] = "qudt:Quantity" + class_name: ClassVar[str] = "PercentageOfTotal" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.PercentageOfTotal + + value: float = None + has_quantity_type: Union[str, DefinedTermId] = None + +@dataclass(repr=False) +class Materialistic(YAMLRoot): + """ + A LinkML mixin used to pass down properties common to all material entities. It is needed for example to have + MaterialSample have the same properties as MaterialEntity, although it is defined as a subclass of + EvaluatedEntity. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = MATERIAL_ENTITIES_AP["Materialistic"] + class_class_curie: ClassVar[str] = "material_entities_ap:Materialistic" + class_name: ClassVar[str] = "Materialistic" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Materialistic + + alternative_label: Optional[str] = None + has_physical_state: Optional[Union[str, "PhysicalStateEnum"]] = None + has_temperature: Optional[Union[Union[dict, "Temperature"], list[Union[dict, "Temperature"]]]] = empty_list() + has_mass: Optional[Union[Union[dict, "Mass"], list[Union[dict, "Mass"]]]] = empty_list() + has_volume: Optional[Union[Union[dict, "Volume"], list[Union[dict, "Volume"]]]] = empty_list() + has_density: Optional[Union[Union[dict, "Density"], list[Union[dict, "Density"]]]] = empty_list() + has_pressure: Optional[Union[Union[dict, "Pressure"], list[Union[dict, "Pressure"]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self.alternative_label is not None and not isinstance(self.alternative_label, str): + self.alternative_label = str(self.alternative_label) + + if self.has_physical_state is not None and not isinstance(self.has_physical_state, PhysicalStateEnum): + self.has_physical_state = PhysicalStateEnum(self.has_physical_state) + + if not isinstance(self.has_temperature, list): + self.has_temperature = [self.has_temperature] if self.has_temperature is not None else [] + self.has_temperature = [v if isinstance(v, Temperature) else Temperature(**as_dict(v)) for v in self.has_temperature] + + if not isinstance(self.has_mass, list): + self.has_mass = [self.has_mass] if self.has_mass is not None else [] + self.has_mass = [v if isinstance(v, Mass) else Mass(**as_dict(v)) for v in self.has_mass] + + if not isinstance(self.has_volume, list): + self.has_volume = [self.has_volume] if self.has_volume is not None else [] + self.has_volume = [v if isinstance(v, Volume) else Volume(**as_dict(v)) for v in self.has_volume] + + if not isinstance(self.has_density, list): + self.has_density = [self.has_density] if self.has_density is not None else [] + self.has_density = [v if isinstance(v, Density) else Density(**as_dict(v)) for v in self.has_density] + + if not isinstance(self.has_pressure, list): + self.has_pressure = [self.has_pressure] if self.has_pressure is not None else [] + self.has_pressure = [v if isinstance(v, Pressure) else Pressure(**as_dict(v)) for v in self.has_pressure] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class MaterialEntity(Entity): + """ + A material is an Entity that has some portion of matter as proper part. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = BFO["0000040"] + class_class_curie: ClassVar[str] = "BFO:0000040" + class_name: ClassVar[str] = "MaterialEntity" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.MaterialEntity + + id: Union[str, MaterialEntityId] = None + has_part: Optional[Union[dict[Union[str, MaterialEntityId], Union[dict, "MaterialEntity"]], list[Union[dict, "MaterialEntity"]]]] = empty_dict() + alternative_label: Optional[str] = None + has_physical_state: Optional[Union[str, "PhysicalStateEnum"]] = None + has_temperature: Optional[Union[Union[dict, "Temperature"], list[Union[dict, "Temperature"]]]] = empty_list() + has_mass: Optional[Union[Union[dict, "Mass"], list[Union[dict, "Mass"]]]] = empty_list() + has_volume: Optional[Union[Union[dict, "Volume"], list[Union[dict, "Volume"]]]] = empty_list() + has_density: Optional[Union[Union[dict, "Density"], list[Union[dict, "Density"]]]] = empty_list() + has_pressure: Optional[Union[Union[dict, "Pressure"], list[Union[dict, "Pressure"]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, MaterialEntityId): + self.id = MaterialEntityId(self.id) + + self._normalize_inlined_as_list(slot_name="has_part", slot_type=MaterialEntity, key_name="id", keyed=True) + + if self.alternative_label is not None and not isinstance(self.alternative_label, str): + self.alternative_label = str(self.alternative_label) + + if self.has_physical_state is not None and not isinstance(self.has_physical_state, PhysicalStateEnum): + self.has_physical_state = PhysicalStateEnum(self.has_physical_state) + + if not isinstance(self.has_temperature, list): + self.has_temperature = [self.has_temperature] if self.has_temperature is not None else [] + self.has_temperature = [v if isinstance(v, Temperature) else Temperature(**as_dict(v)) for v in self.has_temperature] + + if not isinstance(self.has_mass, list): + self.has_mass = [self.has_mass] if self.has_mass is not None else [] + self.has_mass = [v if isinstance(v, Mass) else Mass(**as_dict(v)) for v in self.has_mass] + + if not isinstance(self.has_volume, list): + self.has_volume = [self.has_volume] if self.has_volume is not None else [] + self.has_volume = [v if isinstance(v, Volume) else Volume(**as_dict(v)) for v in self.has_volume] + + if not isinstance(self.has_density, list): + self.has_density = [self.has_density] if self.has_density is not None else [] + self.has_density = [v if isinstance(v, Density) else Density(**as_dict(v)) for v in self.has_density] + + if not isinstance(self.has_pressure, list): + self.has_pressure = [self.has_pressure] if self.has_pressure is not None else [] + self.has_pressure = [v if isinstance(v, Pressure) else Pressure(**as_dict(v)) for v in self.has_pressure] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ChemicalEntity(MaterialEntity): + """ + Any constitutionally or isotopically distinct atom, molecule, ion, ion pair, radical, radical ion, complex, + conformer etc., identifiable as a separately distinguishable entity. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHEBI["23367"] + class_class_curie: ClassVar[str] = "CHEBI:23367" + class_name: ClassVar[str] = "ChemicalEntity" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ChemicalEntity + + id: Union[str, ChemicalEntityId] = None + inchi: Optional[Union[Union[dict, InChi], list[Union[dict, InChi]]]] = empty_list() + inchikey: Optional[Union[Union[dict, InChIKey], list[Union[dict, InChIKey]]]] = empty_list() + smiles: Optional[Union[Union[dict, SMILES], list[Union[dict, SMILES]]]] = empty_list() + molecular_formula: Optional[Union[Union[dict, MolecularFormula], list[Union[dict, MolecularFormula]]]] = empty_list() + iupac_name: Optional[Union[Union[dict, IUPACName], list[Union[dict, IUPACName]]]] = empty_list() + has_molar_mass: Optional[Union[Union[dict, "MolarMass"], list[Union[dict, "MolarMass"]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, ChemicalEntityId): + self.id = ChemicalEntityId(self.id) + + if not isinstance(self.inchi, list): + self.inchi = [self.inchi] if self.inchi is not None else [] + self.inchi = [v if isinstance(v, InChi) else InChi(**as_dict(v)) for v in self.inchi] + + if not isinstance(self.inchikey, list): + self.inchikey = [self.inchikey] if self.inchikey is not None else [] + self.inchikey = [v if isinstance(v, InChIKey) else InChIKey(**as_dict(v)) for v in self.inchikey] + + if not isinstance(self.smiles, list): + self.smiles = [self.smiles] if self.smiles is not None else [] + self.smiles = [v if isinstance(v, SMILES) else SMILES(**as_dict(v)) for v in self.smiles] + + if not isinstance(self.molecular_formula, list): + self.molecular_formula = [self.molecular_formula] if self.molecular_formula is not None else [] + self.molecular_formula = [v if isinstance(v, MolecularFormula) else MolecularFormula(**as_dict(v)) for v in self.molecular_formula] + + if not isinstance(self.iupac_name, list): + self.iupac_name = [self.iupac_name] if self.iupac_name is not None else [] + self.iupac_name = [v if isinstance(v, IUPACName) else IUPACName(**as_dict(v)) for v in self.iupac_name] + + if not isinstance(self.has_molar_mass, list): + self.has_molar_mass = [self.has_molar_mass] if self.has_molar_mass is not None else [] + self.has_molar_mass = [v if isinstance(v, MolarMass) else MolarMass(**as_dict(v)) for v in self.has_molar_mass] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Atom(ChemicalEntity): + """ + A MaterialEntity constituting the smallest component of an element having the chemical properties of the element. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHEBI["33250"] + class_class_curie: ClassVar[str] = "CHEBI:33250" + class_name: ClassVar[str] = "Atom" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Atom + + id: Union[str, AtomId] = None + rdf_type: Union[dict, DefinedTerm] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, AtomId): + self.id = AtomId(self.id) + + if self._is_empty(self.rdf_type): + self.MissingRequiredField("rdf_type") + if not isinstance(self.rdf_type, DefinedTerm): + self.rdf_type = DefinedTerm(**as_dict(self.rdf_type)) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ChemicalSubstance(MaterialEntity): + """ + A MaterialEntity of constant composition, composed of chemical entities of the same type or of different types. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHEBI["59999"] + class_class_curie: ClassVar[str] = "CHEBI:59999" + class_name: ClassVar[str] = "ChemicalSubstance" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ChemicalSubstance + + id: Union[str, ChemicalSubstanceId] = None + has_concentration: Optional[Union[Union[dict, Concentration], list[Union[dict, Concentration]]]] = empty_list() + has_ph_value: Optional[Union[Union[dict, PHValue], list[Union[dict, PHValue]]]] = empty_list() + composed_of: Optional[Union[dict[Union[str, ChemicalEntityId], Union[dict, ChemicalEntity]], list[Union[dict, ChemicalEntity]]]] = empty_dict() + has_molar_equivalent: Optional[Union[Union[dict, MolarEquivalent], list[Union[dict, MolarEquivalent]]]] = empty_list() + has_amount: Optional[Union[Union[dict, AmountOfSubstance], list[Union[dict, AmountOfSubstance]]]] = empty_list() + has_percentage_of_total: Optional[Union[Union[dict, PercentageOfTotal], list[Union[dict, PercentageOfTotal]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if not isinstance(self.has_concentration, list): + self.has_concentration = [self.has_concentration] if self.has_concentration is not None else [] + self.has_concentration = [v if isinstance(v, Concentration) else Concentration(**as_dict(v)) for v in self.has_concentration] + + if not isinstance(self.has_ph_value, list): + self.has_ph_value = [self.has_ph_value] if self.has_ph_value is not None else [] + self.has_ph_value = [v if isinstance(v, PHValue) else PHValue(**as_dict(v)) for v in self.has_ph_value] + + self._normalize_inlined_as_list(slot_name="composed_of", slot_type=ChemicalEntity, key_name="id", keyed=True) + + if not isinstance(self.has_molar_equivalent, list): + self.has_molar_equivalent = [self.has_molar_equivalent] if self.has_molar_equivalent is not None else [] + self.has_molar_equivalent = [v if isinstance(v, MolarEquivalent) else MolarEquivalent(**as_dict(v)) for v in self.has_molar_equivalent] + + if not isinstance(self.has_amount, list): + self.has_amount = [self.has_amount] if self.has_amount is not None else [] + self.has_amount = [v if isinstance(v, AmountOfSubstance) else AmountOfSubstance(**as_dict(v)) for v in self.has_amount] + + if not isinstance(self.has_percentage_of_total, list): + self.has_percentage_of_total = [self.has_percentage_of_total] if self.has_percentage_of_total is not None else [] + self.has_percentage_of_total = [v if isinstance(v, PercentageOfTotal) else PercentageOfTotal(**as_dict(v)) for v in self.has_percentage_of_total] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Polymer(ChemicalSubstance): + """ + A ChemicalSubstance that is composed of macromolecules of different kinds and which may be differentiated by + composition, length, degree of branching etc.. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHEBI["60027"] + class_class_curie: ClassVar[str] = "CHEBI:60027" + class_name: ClassVar[str] = "Polymer" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Polymer + + id: Union[str, PolymerId] = None + +@dataclass(repr=False) +class StartingMaterial(ChemicalSubstance): + """ + A ChemicalSubstance with that has a starting material role in a synthesis. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROCO["0000029"] + class_class_curie: ClassVar[str] = "PROCO:0000029" + class_name: ClassVar[str] = "StartingMaterial" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.StartingMaterial + + id: Union[str, StartingMaterialId] = None + has_molar_equivalent: Optional[Union[Union[dict, MolarEquivalent], list[Union[dict, MolarEquivalent]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, StartingMaterialId): + self.id = StartingMaterialId(self.id) + + if not isinstance(self.has_molar_equivalent, list): + self.has_molar_equivalent = [self.has_molar_equivalent] if self.has_molar_equivalent is not None else [] + self.has_molar_equivalent = [v if isinstance(v, MolarEquivalent) else MolarEquivalent(**as_dict(v)) for v in self.has_molar_equivalent] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Reagent(ChemicalSubstance): + """ + A ChemicalSubstance that is consumed or transformed in a ChemicalReaction. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = SIO["010411"] + class_class_curie: ClassVar[str] = "SIO:010411" + class_name: ClassVar[str] = "Reagent" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Reagent + + id: Union[str, ReagentId] = None + has_molar_equivalent: Optional[Union[Union[dict, MolarEquivalent], list[Union[dict, MolarEquivalent]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, ReagentId): + self.id = ReagentId(self.id) + + if not isinstance(self.has_molar_equivalent, list): + self.has_molar_equivalent = [self.has_molar_equivalent] if self.has_molar_equivalent is not None else [] + self.has_molar_equivalent = [v if isinstance(v, MolarEquivalent) else MolarEquivalent(**as_dict(v)) for v in self.has_molar_equivalent] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ChemicalProduct(ChemicalSubstance): + """ + A chemical substance that is produced by a ChemicalReaction. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = NCIT["C48810"] + class_class_curie: ClassVar[str] = "NCIT:C48810" + class_name: ClassVar[str] = "ChemicalProduct" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.ChemicalProduct + + id: Union[str, ChemicalProductId] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, ChemicalProductId): + self.id = ChemicalProductId(self.id) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class MaterialSample(EvaluatedEntity): + """ + A Sample that was derived from a previous MaterialSample or some other kind of MaterialEntity. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = OBI["0000747"] + class_class_curie: ClassVar[str] = "OBI:0000747" + class_name: ClassVar[str] = "MaterialSample" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.MaterialSample + + id: Union[str, MaterialSampleId] = None + derived_from: Optional[Union[dict, Entity]] = None + alternative_label: Optional[str] = None + has_physical_state: Optional[Union[str, "PhysicalStateEnum"]] = None + has_temperature: Optional[Union[Union[dict, "Temperature"], list[Union[dict, "Temperature"]]]] = empty_list() + has_mass: Optional[Union[Union[dict, "Mass"], list[Union[dict, "Mass"]]]] = empty_list() + has_volume: Optional[Union[Union[dict, "Volume"], list[Union[dict, "Volume"]]]] = empty_list() + has_density: Optional[Union[Union[dict, "Density"], list[Union[dict, "Density"]]]] = empty_list() + has_pressure: Optional[Union[Union[dict, "Pressure"], list[Union[dict, "Pressure"]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, MaterialSampleId): + self.id = MaterialSampleId(self.id) + + if self.derived_from is not None and not isinstance(self.derived_from, Entity): + self.derived_from = Entity(**as_dict(self.derived_from)) + + if self.alternative_label is not None and not isinstance(self.alternative_label, str): + self.alternative_label = str(self.alternative_label) + + if self.has_physical_state is not None and not isinstance(self.has_physical_state, PhysicalStateEnum): + self.has_physical_state = PhysicalStateEnum(self.has_physical_state) + + if not isinstance(self.has_temperature, list): + self.has_temperature = [self.has_temperature] if self.has_temperature is not None else [] + self.has_temperature = [v if isinstance(v, Temperature) else Temperature(**as_dict(v)) for v in self.has_temperature] + + if not isinstance(self.has_mass, list): + self.has_mass = [self.has_mass] if self.has_mass is not None else [] + self.has_mass = [v if isinstance(v, Mass) else Mass(**as_dict(v)) for v in self.has_mass] + + if not isinstance(self.has_volume, list): + self.has_volume = [self.has_volume] if self.has_volume is not None else [] + self.has_volume = [v if isinstance(v, Volume) else Volume(**as_dict(v)) for v in self.has_volume] + + if not isinstance(self.has_density, list): + self.has_density = [self.has_density] if self.has_density is not None else [] + self.has_density = [v if isinstance(v, Density) else Density(**as_dict(v)) for v in self.has_density] + + if not isinstance(self.has_pressure, list): + self.has_pressure = [self.has_pressure] if self.has_pressure is not None else [] + self.has_pressure = [v if isinstance(v, Pressure) else Pressure(**as_dict(v)) for v in self.has_pressure] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Precursor(MaterialSample): + """ + A MaterialSample that serves as input material in a catalyst Synthesis. + Precursors are consumed or transformed during the preparation process. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHEBI["52717"] + class_class_curie: ClassVar[str] = "CHEBI:52717" + class_name: ClassVar[str] = "Precursor" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Precursor + + id: Union[str, PrecursorId] = None + precursor_quantity: Union[float, list[float]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, PrecursorId): + self.id = PrecursorId(self.id) + + if self._is_empty(self.precursor_quantity): + self.MissingRequiredField("precursor_quantity") + if not isinstance(self.precursor_quantity, list): + self.precursor_quantity = [self.precursor_quantity] if self.precursor_quantity is not None else [] + self.precursor_quantity = [v if isinstance(v, float) else float(v) for v in self.precursor_quantity] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class CatalystSample(MaterialSample): + """ + A MaterialSample that is the product of a catalyst Synthesis. + The specific type of catalyst (e.g. heterogeneous, supported metal) + is expressed via rdf_type using a voc4cat term. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = OBI["0000747"] + class_class_curie: ClassVar[str] = "OBI:0000747" + class_name: ClassVar[str] = "CatalystSample" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.CatalystSample + + id: Union[str, CatalystSampleId] = None + derived_from: Optional[Union[dict, MaterialSample]] = None + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, CatalystSampleId): + self.id = CatalystSampleId(self.id) + + if self.derived_from is not None and not isinstance(self.derived_from, MaterialSample): + self.derived_from = MaterialSample(**as_dict(self.derived_from)) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class SubstanceSample(MaterialSample): + """ + A MaterialSample derived from a ChemicalSubstance that is of interest in an analytical procedure. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = SIO["001378"] + class_class_curie: ClassVar[str] = "SIO:001378" + class_name: ClassVar[str] = "SubstanceSample" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.SubstanceSample + + id: Union[str, SubstanceSampleId] = None + has_qualitative_attribute: Optional[Union[Union[dict, QualitativeAttribute], list[Union[dict, QualitativeAttribute]]]] = empty_list() + has_quantitative_attribute: Optional[Union[Union[dict, QuantitativeAttribute], list[Union[dict, QuantitativeAttribute]]]] = empty_list() + has_part: Optional[Union[dict[Union[str, EntityId], Union[dict, Entity]], list[Union[dict, Entity]]]] = empty_dict() + part_of: Optional[Union[dict[Union[str, EntityId], Union[dict, Entity]], list[Union[dict, Entity]]]] = empty_dict() + has_concentration: Optional[Union[Union[dict, Concentration], list[Union[dict, Concentration]]]] = empty_list() + has_ph_value: Optional[Union[Union[dict, PHValue], list[Union[dict, PHValue]]]] = empty_list() + composed_of: Optional[Union[dict[Union[str, ChemicalEntityId], Union[dict, ChemicalEntity]], list[Union[dict, ChemicalEntity]]]] = empty_dict() + has_molar_equivalent: Optional[Union[Union[dict, MolarEquivalent], list[Union[dict, MolarEquivalent]]]] = empty_list() + has_amount: Optional[Union[Union[dict, AmountOfSubstance], list[Union[dict, AmountOfSubstance]]]] = empty_list() + has_percentage_of_total: Optional[Union[Union[dict, PercentageOfTotal], list[Union[dict, PercentageOfTotal]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, SubstanceSampleId): + self.id = SubstanceSampleId(self.id) + + if not isinstance(self.has_qualitative_attribute, list): + self.has_qualitative_attribute = [self.has_qualitative_attribute] if self.has_qualitative_attribute is not None else [] + self.has_qualitative_attribute = [v if isinstance(v, QualitativeAttribute) else QualitativeAttribute(**as_dict(v)) for v in self.has_qualitative_attribute] + + if not isinstance(self.has_quantitative_attribute, list): + self.has_quantitative_attribute = [self.has_quantitative_attribute] if self.has_quantitative_attribute is not None else [] + self.has_quantitative_attribute = [v if isinstance(v, QuantitativeAttribute) else QuantitativeAttribute(**as_dict(v)) for v in self.has_quantitative_attribute] + + self._normalize_inlined_as_list(slot_name="has_part", slot_type=Entity, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="part_of", slot_type=Entity, key_name="id", keyed=True) + + if not isinstance(self.has_concentration, list): + self.has_concentration = [self.has_concentration] if self.has_concentration is not None else [] + self.has_concentration = [v if isinstance(v, Concentration) else Concentration(**as_dict(v)) for v in self.has_concentration] + + if not isinstance(self.has_ph_value, list): + self.has_ph_value = [self.has_ph_value] if self.has_ph_value is not None else [] + self.has_ph_value = [v if isinstance(v, PHValue) else PHValue(**as_dict(v)) for v in self.has_ph_value] + + self._normalize_inlined_as_list(slot_name="composed_of", slot_type=ChemicalEntity, key_name="id", keyed=True) + + if not isinstance(self.has_molar_equivalent, list): + self.has_molar_equivalent = [self.has_molar_equivalent] if self.has_molar_equivalent is not None else [] + self.has_molar_equivalent = [v if isinstance(v, MolarEquivalent) else MolarEquivalent(**as_dict(v)) for v in self.has_molar_equivalent] + + if not isinstance(self.has_amount, list): + self.has_amount = [self.has_amount] if self.has_amount is not None else [] + self.has_amount = [v if isinstance(v, AmountOfSubstance) else AmountOfSubstance(**as_dict(v)) for v in self.has_amount] + + if not isinstance(self.has_percentage_of_total, list): + self.has_percentage_of_total = [self.has_percentage_of_total] if self.has_percentage_of_total is not None else [] + self.has_percentage_of_total = [v if isinstance(v, PercentageOfTotal) else PercentageOfTotal(**as_dict(v)) for v in self.has_percentage_of_total] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class PolymerSample(SubstanceSample): + """ + A SubstanceSample derived from a Polymer. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = SIO["001378"] + class_class_curie: ClassVar[str] = "SIO:001378" + class_name: ClassVar[str] = "PolymerSample" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.PolymerSample + + id: Union[str, PolymerSampleId] = None + has_qualitative_attribute: Optional[Union[Union[dict, QualitativeAttribute], list[Union[dict, QualitativeAttribute]]]] = empty_list() + has_quantitative_attribute: Optional[Union[Union[dict, QuantitativeAttribute], list[Union[dict, QuantitativeAttribute]]]] = empty_list() + has_part: Optional[Union[dict[Union[str, EntityId], Union[dict, Entity]], list[Union[dict, Entity]]]] = empty_dict() + part_of: Optional[Union[dict[Union[str, EntityId], Union[dict, Entity]], list[Union[dict, Entity]]]] = empty_dict() + has_concentration: Optional[Union[Union[dict, Concentration], list[Union[dict, Concentration]]]] = empty_list() + has_ph_value: Optional[Union[Union[dict, PHValue], list[Union[dict, PHValue]]]] = empty_list() + composed_of: Optional[Union[dict[Union[str, ChemicalEntityId], Union[dict, ChemicalEntity]], list[Union[dict, ChemicalEntity]]]] = empty_dict() + has_molar_equivalent: Optional[Union[Union[dict, MolarEquivalent], list[Union[dict, MolarEquivalent]]]] = empty_list() + has_amount: Optional[Union[Union[dict, AmountOfSubstance], list[Union[dict, AmountOfSubstance]]]] = empty_list() + has_percentage_of_total: Optional[Union[Union[dict, PercentageOfTotal], list[Union[dict, PercentageOfTotal]]]] = empty_list() + + def __post_init__(self, *_: str, **kwargs: Any): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, PolymerSampleId): + self.id = PolymerSampleId(self.id) + + if not isinstance(self.has_qualitative_attribute, list): + self.has_qualitative_attribute = [self.has_qualitative_attribute] if self.has_qualitative_attribute is not None else [] + self.has_qualitative_attribute = [v if isinstance(v, QualitativeAttribute) else QualitativeAttribute(**as_dict(v)) for v in self.has_qualitative_attribute] + + if not isinstance(self.has_quantitative_attribute, list): + self.has_quantitative_attribute = [self.has_quantitative_attribute] if self.has_quantitative_attribute is not None else [] + self.has_quantitative_attribute = [v if isinstance(v, QuantitativeAttribute) else QuantitativeAttribute(**as_dict(v)) for v in self.has_quantitative_attribute] + + self._normalize_inlined_as_list(slot_name="has_part", slot_type=Entity, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="part_of", slot_type=Entity, key_name="id", keyed=True) + + if not isinstance(self.has_concentration, list): + self.has_concentration = [self.has_concentration] if self.has_concentration is not None else [] + self.has_concentration = [v if isinstance(v, Concentration) else Concentration(**as_dict(v)) for v in self.has_concentration] + + if not isinstance(self.has_ph_value, list): + self.has_ph_value = [self.has_ph_value] if self.has_ph_value is not None else [] + self.has_ph_value = [v if isinstance(v, PHValue) else PHValue(**as_dict(v)) for v in self.has_ph_value] + + self._normalize_inlined_as_list(slot_name="composed_of", slot_type=ChemicalEntity, key_name="id", keyed=True) + + if not isinstance(self.has_molar_equivalent, list): + self.has_molar_equivalent = [self.has_molar_equivalent] if self.has_molar_equivalent is not None else [] + self.has_molar_equivalent = [v if isinstance(v, MolarEquivalent) else MolarEquivalent(**as_dict(v)) for v in self.has_molar_equivalent] + + if not isinstance(self.has_amount, list): + self.has_amount = [self.has_amount] if self.has_amount is not None else [] + self.has_amount = [v if isinstance(v, AmountOfSubstance) else AmountOfSubstance(**as_dict(v)) for v in self.has_amount] + + if not isinstance(self.has_percentage_of_total, list): + self.has_percentage_of_total = [self.has_percentage_of_total] if self.has_percentage_of_total is not None else [] + self.has_percentage_of_total = [v if isinstance(v, PercentageOfTotal) else PercentageOfTotal(**as_dict(v)) for v in self.has_percentage_of_total] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Temperature(QuantitativeAttribute): + """ + A physical quantity that quantitatively expresses the attribute of hotness or coldness. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = QUDT["Quantity"] + class_class_curie: ClassVar[str] = "qudt:Quantity" + class_name: ClassVar[str] = "Temperature" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Temperature + + value: float = None + has_quantity_type: Union[str, DefinedTermId] = None + +@dataclass(repr=False) +class Mass(QuantitativeAttribute): + """ + The strength of a body's gravitational attraction to other bodies. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = QUDT["Quantity"] + class_class_curie: ClassVar[str] = "qudt:Quantity" + class_name: ClassVar[str] = "Mass" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Mass + + value: float = None + has_quantity_type: Union[str, DefinedTermId] = None + +@dataclass(repr=False) +class MolarMass(Mass): + """ + A Mass (physical quality) that quantifies the mass of a homogeneous ChemicalSubstance containing 6.02 x 10^23 + atoms or molecules. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = AFR["0002409"] + class_class_curie: ClassVar[str] = "AFR:0002409" + class_name: ClassVar[str] = "MolarMass" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.MolarMass + + value: float = None + has_quantity_type: Union[str, DefinedTermId] = None + +@dataclass(repr=False) +class Volume(QuantitativeAttribute): + """ + A measure of regions in three-dimensional space. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = QUDT["Quantity"] + class_class_curie: ClassVar[str] = "qudt:Quantity" + class_name: ClassVar[str] = "Volume" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Volume + + value: float = None + has_quantity_type: Union[str, DefinedTermId] = None + +@dataclass(repr=False) +class Density(QuantitativeAttribute): + """ + A measure of the mass per unit volume of a substance. + """ + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = SIO["001406"] + class_class_curie: ClassVar[str] = "SIO:001406" + class_name: ClassVar[str] = "Density" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Density + + value: float = None + has_quantity_type: Union[str, DefinedTermId] = None + +@dataclass(repr=False) +class Pressure(QuantitativeAttribute): + _inherited_slots: ClassVar[list[str]] = [] + + class_class_uri: ClassVar[URIRef] = QUDT["Quantity"] + class_class_curie: ClassVar[str] = "qudt:Quantity" + class_name: ClassVar[str] = "Pressure" + class_model_uri: ClassVar[URIRef] = COREMETA4CAT.Pressure + + value: float = None + has_quantity_type: Union[str, DefinedTermId] = None + +# Enumerations +class CatalysisResearchFieldEnum(EnumDefinitionImpl): + """ + Enumeration of catalysis research fields. + Intended for use via rdf_type on a dcat:Dataset (via ClassifierMixin) + to classify which field of catalysis the dataset belongs to, + following DCAT-AP-PLUS Pattern 3 (Flexible classification). + """ + heterogeneous_catalysis = PermissibleValue( + text="heterogeneous_catalysis", + description="Heterogeneous catalysis — catalyst and reactants are in different phases.", + meaning=VOC4CAT["0007001"]) + homogeneous_catalysis = PermissibleValue( + text="homogeneous_catalysis", + description="Homogeneous catalysis — catalyst and reactants are in the same phase.", + meaning=VOC4CAT["0000294"]) + biocatalysis = PermissibleValue( + text="biocatalysis", + description="Biocatalysis — use of enzymes or whole cells as catalysts.", + meaning=VOC4CAT["0000204"]) + electrocatalysis = PermissibleValue( + text="electrocatalysis", + description="Electrocatalysis — catalysis of electrochemical reactions.", + meaning=VOC4CAT["0000216"]) + hybrid_catalysis = PermissibleValue( + text="hybrid_catalysis", + description="Hybrid catalysis — combination of two or more catalytic approaches.") + other = PermissibleValue( + text="other", + description="Other catalysis research field not covered by the above terms.") + + _defn = EnumDefinition( + name="CatalysisResearchFieldEnum", + description="""Enumeration of catalysis research fields. +Intended for use via rdf_type on a dcat:Dataset (via ClassifierMixin) +to classify which field of catalysis the dataset belongs to, +following DCAT-AP-PLUS Pattern 3 (Flexible classification).""", + ) + +class ImpregnationTypeEnum(EnumDefinitionImpl): + """ + Enumeration of impregnation types used in catalyst synthesis. + """ + wet_impregnation = PermissibleValue( + text="wet_impregnation", + description="Wet impregnation — excess solution is used to impregnate the support.") + dry_impregnation = PermissibleValue( + text="dry_impregnation", + description="Dry impregnation — solution volume equals the pore volume of the support.") + incipient_wetness = PermissibleValue( + text="incipient_wetness", + description="Incipient wetness impregnation — synonym for dry impregnation.") + other = PermissibleValue( + text="other", + description="Other impregnation type.") + + _defn = EnumDefinition( + name="ImpregnationTypeEnum", + description="Enumeration of impregnation types used in catalyst synthesis.", + ) + +class SampleStateEnum(EnumDefinitionImpl): + """ + Enumeration of physical states in which a catalyst sample may be present. + """ + solid = PermissibleValue( + text="solid", + description="Solid state.") + liquid = PermissibleValue( + text="liquid", + description="Liquid state.") + gas = PermissibleValue( + text="gas", + description="Gas state.") + solution = PermissibleValue( + text="solution", + description="Dissolved in solvent.") + powder = PermissibleValue( + text="powder", + description="Powder form.") + pellet = PermissibleValue( + text="pellet", + description="Pellet form (pressed powder).") + thin_film = PermissibleValue( + text="thin_film", + description="Thin film deposited on a substrate.") + other = PermissibleValue( + text="other", + description="Other sample state.") + + _defn = EnumDefinition( + name="SampleStateEnum", + description="Enumeration of physical states in which a catalyst sample may be present.", + ) + +class DatasetThemes(EnumDefinitionImpl): + + AGRI = PermissibleValue( + text="AGRI", + description="Agriculture, fisheries, forestry and food", + meaning=None) + ECON = PermissibleValue( + text="ECON", + description="Economy and finance", + meaning=None) + EDUC = PermissibleValue( + text="EDUC", + description="Education, culture and sport", + meaning=None) + ENER = PermissibleValue( + text="ENER", + description="Energy", + meaning=None) + ENVI = PermissibleValue( + text="ENVI", + description="Environment", + meaning=None) + GOVE = PermissibleValue( + text="GOVE", + description="Government and public sector", + meaning=None) + HEAL = PermissibleValue( + text="HEAL", + description="Health", + meaning=None) + INTR = PermissibleValue( + text="INTR", + description="International issues", + meaning=None) + JUST = PermissibleValue( + text="JUST", + description="Justice, legal system and public safety", + meaning=None) + OP_DATPRO = PermissibleValue( + text="OP_DATPRO", + description="Provisional data", + meaning=None) + REGI = PermissibleValue( + text="REGI", + description="Regions and cities", + meaning=None) + SOCI = PermissibleValue( + text="SOCI", + description="Population and society", + meaning=None) + TECH = PermissibleValue( + text="TECH", + description="Science and technology", + meaning=None) + TRAN = PermissibleValue( + text="TRAN", + description="Transport", + meaning=None) + + _defn = EnumDefinition( + name="DatasetThemes", + ) + +class TopLevelMediaTypes(EnumDefinitionImpl): + + application = PermissibleValue(text="application") + audio = PermissibleValue(text="audio") + example = PermissibleValue(text="example") + font = PermissibleValue(text="font") + haptics = PermissibleValue(text="haptics") + image = PermissibleValue(text="image") + message = PermissibleValue(text="message") + model = PermissibleValue(text="model") + multipart = PermissibleValue(text="multipart") + text = PermissibleValue(text="text") + video = PermissibleValue(text="video") + + _defn = EnumDefinition( + name="TopLevelMediaTypes", + ) + +class QUDTQuantityKindEnum(EnumDefinitionImpl): + """ + Possible kinds of quantifiable attribute types provided as QUDT QualityKind instances. + """ + _defn = EnumDefinition( + name="QUDTQuantityKindEnum", + description="Possible kinds of quantifiable attribute types provided as QUDT QualityKind instances.", + ) + +class QUDTUnitEnum(EnumDefinitionImpl): + """ + Possible kinds of QUDT unit instances. + """ + _defn = EnumDefinition( + name="QUDTUnitEnum", + description="Possible kinds of QUDT unit instances.", + ) + +class PhysicalStateEnum(EnumDefinitionImpl): + + SOLID = PermissibleValue( + text="SOLID", + description="A state of matter in which molecules are closely packed and cannot move past each other.", + meaning=PATO["0001736"]) + CRYSTAL = PermissibleValue( + text="CRYSTAL", + description="""A solid state of matter whose constituents (such as atoms, molecules, or ions) are arranged in a highly ordered microscopic structure, forming a crystal lattice that extends in all directions.""", + meaning=PATO["0002066"]) + LIQUID = PermissibleValue( + text="LIQUID", + description="""A state of matter with a definite volume but no fixed shape. Liquids adapt to the shape of their container and are nearly incompressible, maintaining their volume even under pressure.""", + meaning=PATO["0001735"]) + GASEOUS = PermissibleValue( + text="GASEOUS", + description="A state of matter with neither fixed volume nor fixed shape.", + meaning=PATO["0001737"]) + + _defn = EnumDefinition( + name="PhysicalStateEnum", + ) + +# Slots +class slots: + pass + +slots.atmosphere = Slot(uri=COREMETA4CAT.atmosphere, name="atmosphere", curie=COREMETA4CAT.curie('atmosphere'), + model_uri=COREMETA4CAT.atmosphere, domain=None, range=Optional[Union[str, list[str]]]) + +slots.temperature = Slot(uri=AFR['0001584'], name="temperature", curie=AFR.curie('0001584'), + model_uri=COREMETA4CAT.temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.equipment = Slot(uri=VOC4CAT['0000187'], name="equipment", curie=VOC4CAT.curie('0000187'), + model_uri=COREMETA4CAT.equipment, domain=None, range=Optional[Union[str, list[str]]]) + +slots.flow_rate = Slot(uri=COREMETA4CAT.flow_rate, name="flow_rate", curie=COREMETA4CAT.curie('flow_rate'), + model_uri=COREMETA4CAT.flow_rate, domain=None, range=Optional[Union[float, list[float]]]) + +slots.heating_rate = Slot(uri=COREMETA4CAT.heating_rate, name="heating_rate", curie=COREMETA4CAT.curie('heating_rate'), + model_uri=COREMETA4CAT.heating_rate, domain=None, range=Optional[Union[float, list[float]]]) + +slots.heating_procedure = Slot(uri=COREMETA4CAT.heating_procedure, name="heating_procedure", curie=COREMETA4CAT.curie('heating_procedure'), + model_uri=COREMETA4CAT.heating_procedure, domain=None, range=Optional[Union[str, list[str]]]) + +slots.number_of_cycles = Slot(uri=COREMETA4CAT.number_of_cycles, name="number_of_cycles", curie=COREMETA4CAT.curie('number_of_cycles'), + model_uri=COREMETA4CAT.number_of_cycles, domain=None, range=Optional[Union[int, list[int]]]) + +slots.sample_mass = Slot(uri=COREMETA4CAT.sample_mass, name="sample_mass", curie=COREMETA4CAT.curie('sample_mass'), + model_uri=COREMETA4CAT.sample_mass, domain=None, range=Optional[Union[float, list[float]]]) + +slots.sample_pretreatment = Slot(uri=VOC4CAT['0000122'], name="sample_pretreatment", curie=VOC4CAT.curie('0000122'), + model_uri=COREMETA4CAT.sample_pretreatment, domain=None, range=Optional[Union[str, list[str]]]) + +slots.stirring_speed = Slot(uri=COREMETA4CAT.stirring_speed, name="stirring_speed", curie=COREMETA4CAT.curie('stirring_speed'), + model_uri=COREMETA4CAT.stirring_speed, domain=None, range=Optional[Union[float, list[float]]]) + +slots.stirring_duration = Slot(uri=COREMETA4CAT.stirring_duration, name="stirring_duration", curie=COREMETA4CAT.curie('stirring_duration'), + model_uri=COREMETA4CAT.stirring_duration, domain=None, range=Optional[Union[float, list[float]]]) + +slots.vessel_type = Slot(uri=COREMETA4CAT.vessel_type, name="vessel_type", curie=COREMETA4CAT.curie('vessel_type'), + model_uri=COREMETA4CAT.vessel_type, domain=None, range=Optional[Union[str, list[str]]]) + +slots.carrier_gas = Slot(uri=COREMETA4CAT.carrier_gas, name="carrier_gas", curie=COREMETA4CAT.curie('carrier_gas'), + model_uri=COREMETA4CAT.carrier_gas, domain=None, range=Optional[Union[str, list[str]]]) + +slots.dispersant = Slot(uri=COREMETA4CAT.dispersant, name="dispersant", curie=COREMETA4CAT.curie('dispersant'), + model_uri=COREMETA4CAT.dispersant, domain=None, range=Optional[Union[str, list[str]]]) + +slots.drying_device = Slot(uri=COREMETA4CAT.drying_device, name="drying_device", curie=COREMETA4CAT.curie('drying_device'), + model_uri=COREMETA4CAT.drying_device, domain=None, range=Optional[Union[str, list[str]]]) + +slots.drying_temperature = Slot(uri=COREMETA4CAT.drying_temperature, name="drying_temperature", curie=COREMETA4CAT.curie('drying_temperature'), + model_uri=COREMETA4CAT.drying_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.drying_time = Slot(uri=COREMETA4CAT.drying_time, name="drying_time", curie=COREMETA4CAT.curie('drying_time'), + model_uri=COREMETA4CAT.drying_time, domain=None, range=Optional[Union[float, list[float]]]) + +slots.drying_atmosphere = Slot(uri=COREMETA4CAT.drying_atmosphere, name="drying_atmosphere", curie=COREMETA4CAT.curie('drying_atmosphere'), + model_uri=COREMETA4CAT.drying_atmosphere, domain=None, range=Optional[Union[str, list[str]]]) + +slots.calcination_initial_temperature = Slot(uri=VOC4CAT['0000057'], name="calcination_initial_temperature", curie=VOC4CAT.curie('0000057'), + model_uri=COREMETA4CAT.calcination_initial_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.calcination_final_temperature = Slot(uri=VOC4CAT['0000058'], name="calcination_final_temperature", curie=VOC4CAT.curie('0000058'), + model_uri=COREMETA4CAT.calcination_final_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.calcination_dwelling_time = Slot(uri=VOC4CAT['0000060'], name="calcination_dwelling_time", curie=VOC4CAT.curie('0000060'), + model_uri=COREMETA4CAT.calcination_dwelling_time, domain=None, range=Optional[Union[float, list[float]]]) + +slots.calcination_gaseous_environment = Slot(uri=VOC4CAT['0000055'], name="calcination_gaseous_environment", curie=VOC4CAT.curie('0000055'), + model_uri=COREMETA4CAT.calcination_gaseous_environment, domain=None, range=Optional[Union[str, list[str]]]) + +slots.calcination_heating_rate = Slot(uri=VOC4CAT['0000059'], name="calcination_heating_rate", curie=VOC4CAT.curie('0000059'), + model_uri=COREMETA4CAT.calcination_heating_rate, domain=None, range=Optional[Union[float, list[float]]]) + +slots.calcination_gas_flow_rate = Slot(uri=VOC4CAT['0000056'], name="calcination_gas_flow_rate", curie=VOC4CAT.curie('0000056'), + model_uri=COREMETA4CAT.calcination_gas_flow_rate, domain=None, range=Optional[Union[float, list[float]]]) + +slots.step_size = Slot(uri=AFR['0000950'], name="step_size", curie=AFR.curie('0000950'), + model_uri=COREMETA4CAT.step_size, domain=None, range=Optional[Union[float, list[float]]]) + +slots.resolution = Slot(uri=COREMETA4CAT.resolution, name="resolution", curie=COREMETA4CAT.curie('resolution'), + model_uri=COREMETA4CAT.resolution, domain=None, range=Optional[Union[float, list[float]]]) + +slots.integration_time = Slot(uri=COREMETA4CAT.integration_time, name="integration_time", curie=COREMETA4CAT.curie('integration_time'), + model_uri=COREMETA4CAT.integration_time, domain=None, range=Optional[Union[float, list[float]]]) + +slots.number_of_scans = Slot(uri=COREMETA4CAT.number_of_scans, name="number_of_scans", curie=COREMETA4CAT.curie('number_of_scans'), + model_uri=COREMETA4CAT.number_of_scans, domain=None, range=Optional[Union[int, list[int]]]) + +slots.operation_mode = Slot(uri=VOC4CAT['0000108'], name="operation_mode", curie=VOC4CAT.curie('0000108'), + model_uri=COREMETA4CAT.operation_mode, domain=None, range=Optional[Union[str, list[str]]]) + +slots.concentration = Slot(uri=COREMETA4CAT.concentration, name="concentration", curie=COREMETA4CAT.curie('concentration'), + model_uri=COREMETA4CAT.concentration, domain=None, range=Optional[Union[float, list[float]]]) + +slots.solvent = Slot(uri=VOC4CAT['0007246'], name="solvent", curie=VOC4CAT.curie('0007246'), + model_uri=COREMETA4CAT.solvent, domain=None, range=Optional[Union[str, list[str]]]) + +slots.injection_volume = Slot(uri=COREMETA4CAT.injection_volume, name="injection_volume", curie=COREMETA4CAT.curie('injection_volume'), + model_uri=COREMETA4CAT.injection_volume, domain=None, range=Optional[Union[float, list[float]]]) + +slots.external_standard = Slot(uri=COREMETA4CAT.external_standard, name="external_standard", curie=COREMETA4CAT.curie('external_standard'), + model_uri=COREMETA4CAT.external_standard, domain=None, range=Optional[Union[str, list[str]]]) + +slots.internal_standard = Slot(uri=COREMETA4CAT.internal_standard, name="internal_standard", curie=COREMETA4CAT.curie('internal_standard'), + model_uri=COREMETA4CAT.internal_standard, domain=None, range=Optional[Union[str, list[str]]]) + +slots.calibration_method = Slot(uri=COREMETA4CAT.calibration_method, name="calibration_method", curie=COREMETA4CAT.curie('calibration_method'), + model_uri=COREMETA4CAT.calibration_method, domain=None, range=Optional[Union[str, list[str]]]) + +slots.column_type = Slot(uri=COREMETA4CAT.column_type, name="column_type", curie=COREMETA4CAT.curie('column_type'), + model_uri=COREMETA4CAT.column_type, domain=None, range=Optional[Union[str, list[str]]]) + +slots.experiment_duration = Slot(uri=AFR['0002455'], name="experiment_duration", curie=AFR.curie('0002455'), + model_uri=COREMETA4CAT.experiment_duration, domain=None, range=Optional[Union[float, list[float]]]) + +slots.filtration_device = Slot(uri=COREMETA4CAT.filtration_device, name="filtration_device", curie=COREMETA4CAT.curie('filtration_device'), + model_uri=COREMETA4CAT.filtration_device, domain=None, range=Optional[Union[str, list[str]]]) + +slots.filter_type = Slot(uri=COREMETA4CAT.filter_type, name="filter_type", curie=COREMETA4CAT.curie('filter_type'), + model_uri=COREMETA4CAT.filter_type, domain=None, range=Optional[Union[str, list[str]]]) + +slots.nominal_composition = Slot(uri=COREMETA4CAT.nominal_composition, name="nominal_composition", curie=COREMETA4CAT.curie('nominal_composition'), + model_uri=COREMETA4CAT.nominal_composition, domain=None, range=Optional[Union[str, list[str]]]) + +slots.catalyst_measured_properties = Slot(uri=COREMETA4CAT.catalyst_measured_properties, name="catalyst_measured_properties", curie=COREMETA4CAT.curie('catalyst_measured_properties'), + model_uri=COREMETA4CAT.catalyst_measured_properties, domain=None, range=Optional[Union[str, list[str]]]) + +slots.storage_conditions = Slot(uri=COREMETA4CAT.storage_conditions, name="storage_conditions", curie=COREMETA4CAT.curie('storage_conditions'), + model_uri=COREMETA4CAT.storage_conditions, domain=None, range=Optional[Union[str, list[str]]]) + +slots.support = Slot(uri=COREMETA4CAT.support, name="support", curie=COREMETA4CAT.curie('support'), + model_uri=COREMETA4CAT.support, domain=None, range=Optional[Union[str, list[str]]]) + +slots.precursor_quantity = Slot(uri=COREMETA4CAT.precursor_quantity, name="precursor_quantity", curie=COREMETA4CAT.curie('precursor_quantity'), + model_uri=COREMETA4CAT.precursor_quantity, domain=None, range=Optional[Union[float, list[float]]]) + +slots.impregnation_type = Slot(uri=COREMETA4CAT.impregnation_type, name="impregnation_type", curie=COREMETA4CAT.curie('impregnation_type'), + model_uri=COREMETA4CAT.impregnation_type, domain=None, range=Optional[Union[Union[str, "ImpregnationTypeEnum"], list[Union[str, "ImpregnationTypeEnum"]]]]) + +slots.impregnation_duration = Slot(uri=COREMETA4CAT.impregnation_duration, name="impregnation_duration", curie=COREMETA4CAT.curie('impregnation_duration'), + model_uri=COREMETA4CAT.impregnation_duration, domain=None, range=Optional[Union[float, list[float]]]) + +slots.impregnation_temperature = Slot(uri=COREMETA4CAT.impregnation_temperature, name="impregnation_temperature", curie=COREMETA4CAT.curie('impregnation_temperature'), + model_uri=COREMETA4CAT.impregnation_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.precipitating_agent = Slot(uri=COREMETA4CAT.precipitating_agent, name="precipitating_agent", curie=COREMETA4CAT.curie('precipitating_agent'), + model_uri=COREMETA4CAT.precipitating_agent, domain=None, range=Optional[Union[str, list[str]]]) + +slots.precipitating_concentration = Slot(uri=COREMETA4CAT.precipitating_concentration, name="precipitating_concentration", curie=COREMETA4CAT.curie('precipitating_concentration'), + model_uri=COREMETA4CAT.precipitating_concentration, domain=None, range=Optional[Union[float, list[float]]]) + +slots.synthesis_ph = Slot(uri=VOC4CAT['0000052'], name="synthesis_ph", curie=VOC4CAT.curie('0000052'), + model_uri=COREMETA4CAT.synthesis_ph, domain=None, range=Optional[Union[float, list[float]]]) + +slots.mixing_rate = Slot(uri=COREMETA4CAT.mixing_rate, name="mixing_rate", curie=COREMETA4CAT.curie('mixing_rate'), + model_uri=COREMETA4CAT.mixing_rate, domain=None, range=Optional[Union[float, list[float]]]) + +slots.mixing_time = Slot(uri=COREMETA4CAT.mixing_time, name="mixing_time", curie=COREMETA4CAT.curie('mixing_time'), + model_uri=COREMETA4CAT.mixing_time, domain=None, range=Optional[Union[float, list[float]]]) + +slots.mixing_temperature = Slot(uri=COREMETA4CAT.mixing_temperature, name="mixing_temperature", curie=COREMETA4CAT.curie('mixing_temperature'), + model_uri=COREMETA4CAT.mixing_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.order_of_addition = Slot(uri=COREMETA4CAT.order_of_addition, name="order_of_addition", curie=COREMETA4CAT.curie('order_of_addition'), + model_uri=COREMETA4CAT.order_of_addition, domain=None, range=Optional[Union[str, list[str]]]) + +slots.filtration = Slot(uri=COREMETA4CAT.filtration, name="filtration", curie=COREMETA4CAT.curie('filtration'), + model_uri=COREMETA4CAT.filtration, domain=None, range=Optional[Union[str, list[str]]]) + +slots.purification = Slot(uri=COREMETA4CAT.purification, name="purification", curie=COREMETA4CAT.curie('purification'), + model_uri=COREMETA4CAT.purification, domain=None, range=Optional[Union[str, list[str]]]) + +slots.aging_temperature = Slot(uri=COREMETA4CAT.aging_temperature, name="aging_temperature", curie=COREMETA4CAT.curie('aging_temperature'), + model_uri=COREMETA4CAT.aging_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.aging_time = Slot(uri=COREMETA4CAT.aging_time, name="aging_time", curie=COREMETA4CAT.curie('aging_time'), + model_uri=COREMETA4CAT.aging_time, domain=None, range=Optional[Union[float, list[float]]]) + +slots.deposition_temperature = Slot(uri=COREMETA4CAT.deposition_temperature, name="deposition_temperature", curie=COREMETA4CAT.curie('deposition_temperature'), + model_uri=COREMETA4CAT.deposition_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.deposition_time = Slot(uri=COREMETA4CAT.deposition_time, name="deposition_time", curie=COREMETA4CAT.curie('deposition_time'), + model_uri=COREMETA4CAT.deposition_time, domain=None, range=Optional[Union[float, list[float]]]) + +slots.synthesis_temperature = Slot(uri=VOC4CAT['0000051'], name="synthesis_temperature", curie=VOC4CAT.curie('0000051'), + model_uri=COREMETA4CAT.synthesis_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.synthesis_duration = Slot(uri=VOC4CAT['0000050'], name="synthesis_duration", curie=VOC4CAT.curie('0000050'), + model_uri=COREMETA4CAT.synthesis_duration, domain=None, range=Optional[Union[float, list[float]]]) + +slots.synthesis_pressure = Slot(uri=VOC4CAT['0000053'], name="synthesis_pressure", curie=VOC4CAT.curie('0000053'), + model_uri=COREMETA4CAT.synthesis_pressure, domain=None, range=Optional[Union[float, list[float]]]) + +slots.hydrolysis_ratio = Slot(uri=COREMETA4CAT.hydrolysis_ratio, name="hydrolysis_ratio", curie=COREMETA4CAT.curie('hydrolysis_ratio'), + model_uri=COREMETA4CAT.hydrolysis_ratio, domain=None, range=Optional[Union[float, list[float]]]) + +slots.drying = Slot(uri=COREMETA4CAT.drying, name="drying", curie=COREMETA4CAT.curie('drying'), + model_uri=COREMETA4CAT.drying, domain=None, range=Optional[Union[str, list[str]]]) + +slots.surfactant_template = Slot(uri=COREMETA4CAT.surfactant_template, name="surfactant_template", curie=COREMETA4CAT.curie('surfactant_template'), + model_uri=COREMETA4CAT.surfactant_template, domain=None, range=Optional[Union[str, list[str]]]) + +slots.filling_volume = Slot(uri=COREMETA4CAT.filling_volume, name="filling_volume", curie=COREMETA4CAT.curie('filling_volume'), + model_uri=COREMETA4CAT.filling_volume, domain=None, range=Optional[Union[float, list[float]]]) + +slots.stirrer_type = Slot(uri=COREMETA4CAT.stirrer_type, name="stirrer_type", curie=COREMETA4CAT.curie('stirrer_type'), + model_uri=COREMETA4CAT.stirrer_type, domain=None, range=Optional[Union[str, list[str]]]) + +slots.cooling_rate = Slot(uri=COREMETA4CAT.cooling_rate, name="cooling_rate", curie=COREMETA4CAT.curie('cooling_rate'), + model_uri=COREMETA4CAT.cooling_rate, domain=None, range=Optional[Union[float, list[float]]]) + +slots.plasma_type = Slot(uri=COREMETA4CAT.plasma_type, name="plasma_type", curie=COREMETA4CAT.curie('plasma_type'), + model_uri=COREMETA4CAT.plasma_type, domain=None, range=Optional[Union[str, list[str]]]) + +slots.power_input = Slot(uri=COREMETA4CAT.power_input, name="power_input", curie=COREMETA4CAT.curie('power_input'), + model_uri=COREMETA4CAT.power_input, domain=None, range=Optional[Union[float, list[float]]]) + +slots.exposure_time = Slot(uri=COREMETA4CAT.exposure_time, name="exposure_time", curie=COREMETA4CAT.curie('exposure_time'), + model_uri=COREMETA4CAT.exposure_time, domain=None, range=Optional[Union[float, list[float]]]) + +slots.fuel = Slot(uri=COREMETA4CAT.fuel, name="fuel", curie=COREMETA4CAT.curie('fuel'), + model_uri=COREMETA4CAT.fuel, domain=None, range=Optional[Union[str, list[str]]]) + +slots.oxidizer = Slot(uri=COREMETA4CAT.oxidizer, name="oxidizer", curie=COREMETA4CAT.curie('oxidizer'), + model_uri=COREMETA4CAT.oxidizer, domain=None, range=Optional[Union[str, list[str]]]) + +slots.fuel_to_oxidizer_ratio = Slot(uri=COREMETA4CAT.fuel_to_oxidizer_ratio, name="fuel_to_oxidizer_ratio", curie=COREMETA4CAT.curie('fuel_to_oxidizer_ratio'), + model_uri=COREMETA4CAT.fuel_to_oxidizer_ratio, domain=None, range=Optional[Union[float, list[float]]]) + +slots.set_temperature = Slot(uri=COREMETA4CAT.set_temperature, name="set_temperature", curie=COREMETA4CAT.curie('set_temperature'), + model_uri=COREMETA4CAT.set_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.post_treatment = Slot(uri=COREMETA4CAT.post_treatment, name="post_treatment", curie=COREMETA4CAT.curie('post_treatment'), + model_uri=COREMETA4CAT.post_treatment, domain=None, range=Optional[Union[str, list[str]]]) + +slots.substrate = Slot(uri=VOC4CAT['0000024'], name="substrate", curie=VOC4CAT.curie('0000024'), + model_uri=COREMETA4CAT.substrate, domain=None, range=Optional[Union[str, list[str]]]) + +slots.pulse_time = Slot(uri=COREMETA4CAT.pulse_time, name="pulse_time", curie=COREMETA4CAT.curie('pulse_time'), + model_uri=COREMETA4CAT.pulse_time, domain=None, range=Optional[Union[float, list[float]]]) + +slots.purging_duration = Slot(uri=VOC4CAT['0000112'], name="purging_duration", curie=VOC4CAT.curie('0000112'), + model_uri=COREMETA4CAT.purging_duration, domain=None, range=Optional[Union[float, list[float]]]) + +slots.power = Slot(uri=COREMETA4CAT.power, name="power", curie=COREMETA4CAT.curie('power'), + model_uri=COREMETA4CAT.power, domain=None, range=Optional[Union[float, list[float]]]) + +slots.microwave_frequency = Slot(uri=COREMETA4CAT.microwave_frequency, name="microwave_frequency", curie=COREMETA4CAT.curie('microwave_frequency'), + model_uri=COREMETA4CAT.microwave_frequency, domain=None, range=Optional[Union[float, list[float]]]) + +slots.sonication_power = Slot(uri=COREMETA4CAT.sonication_power, name="sonication_power", curie=COREMETA4CAT.curie('sonication_power'), + model_uri=COREMETA4CAT.sonication_power, domain=None, range=Optional[Union[float, list[float]]]) + +slots.sonication_duration = Slot(uri=COREMETA4CAT.sonication_duration, name="sonication_duration", curie=COREMETA4CAT.curie('sonication_duration'), + model_uri=COREMETA4CAT.sonication_duration, domain=None, range=Optional[Union[float, list[float]]]) + +slots.flame_type = Slot(uri=COREMETA4CAT.flame_type, name="flame_type", curie=COREMETA4CAT.curie('flame_type'), + model_uri=COREMETA4CAT.flame_type, domain=None, range=Optional[Union[str, list[str]]]) + +slots.inlet_system = Slot(uri=COREMETA4CAT.inlet_system, name="inlet_system", curie=COREMETA4CAT.curie('inlet_system'), + model_uri=COREMETA4CAT.inlet_system, domain=None, range=Optional[Union[str, list[str]]]) + +slots.flame_ring = Slot(uri=COREMETA4CAT.flame_ring, name="flame_ring", curie=COREMETA4CAT.curie('flame_ring'), + model_uri=COREMETA4CAT.flame_ring, domain=None, range=Optional[Union[str, list[str]]]) + +slots.capillary_pressure = Slot(uri=COREMETA4CAT.capillary_pressure, name="capillary_pressure", curie=COREMETA4CAT.curie('capillary_pressure'), + model_uri=COREMETA4CAT.capillary_pressure, domain=None, range=Optional[Union[float, list[float]]]) + +slots.fuel_dispersant_ratio = Slot(uri=COREMETA4CAT.fuel_dispersant_ratio, name="fuel_dispersant_ratio", curie=COREMETA4CAT.curie('fuel_dispersant_ratio'), + model_uri=COREMETA4CAT.fuel_dispersant_ratio, domain=None, range=Optional[Union[float, list[float]]]) + +slots.vessel_volume = Slot(uri=COREMETA4CAT.vessel_volume, name="vessel_volume", curie=COREMETA4CAT.curie('vessel_volume'), + model_uri=COREMETA4CAT.vessel_volume, domain=None, range=Optional[Union[float, list[float]]]) + +slots.size_and_material = Slot(uri=COREMETA4CAT.size_and_material, name="size_and_material", curie=COREMETA4CAT.curie('size_and_material'), + model_uri=COREMETA4CAT.size_and_material, domain=None, range=Optional[Union[str, list[str]]]) + +slots.milling_speed = Slot(uri=COREMETA4CAT.milling_speed, name="milling_speed", curie=COREMETA4CAT.curie('milling_speed'), + model_uri=COREMETA4CAT.milling_speed, domain=None, range=Optional[Union[float, list[float]]]) + +slots.milling_duration = Slot(uri=COREMETA4CAT.milling_duration, name="milling_duration", curie=COREMETA4CAT.curie('milling_duration'), + model_uri=COREMETA4CAT.milling_duration, domain=None, range=Optional[Union[float, list[float]]]) + +slots.ball_material = Slot(uri=COREMETA4CAT.ball_material, name="ball_material", curie=COREMETA4CAT.curie('ball_material'), + model_uri=COREMETA4CAT.ball_material, domain=None, range=Optional[Union[str, list[str]]]) + +slots.ball_size = Slot(uri=COREMETA4CAT.ball_size, name="ball_size", curie=COREMETA4CAT.curie('ball_size'), + model_uri=COREMETA4CAT.ball_size, domain=None, range=Optional[Union[float, list[float]]]) + +slots.ball_to_powder_ratio = Slot(uri=COREMETA4CAT.ball_to_powder_ratio, name="ball_to_powder_ratio", curie=COREMETA4CAT.curie('ball_to_powder_ratio'), + model_uri=COREMETA4CAT.ball_to_powder_ratio, domain=None, range=Optional[Union[float, list[float]]]) + +slots.reaction_vessel = Slot(uri=COREMETA4CAT.reaction_vessel, name="reaction_vessel", curie=COREMETA4CAT.curie('reaction_vessel'), + model_uri=COREMETA4CAT.reaction_vessel, domain=None, range=Optional[Union[str, list[str]]]) + +slots.mixing_device = Slot(uri=COREMETA4CAT.mixing_device, name="mixing_device", curie=COREMETA4CAT.curie('mixing_device'), + model_uri=COREMETA4CAT.mixing_device, domain=None, range=Optional[Union[str, list[str]]]) + +slots.crystallisation_solvents = Slot(uri=COREMETA4CAT.crystallisation_solvents, name="crystallisation_solvents", curie=COREMETA4CAT.curie('crystallisation_solvents'), + model_uri=COREMETA4CAT.crystallisation_solvents, domain=None, range=Optional[Union[str, list[str]]]) + +slots.precipitation_agent = Slot(uri=COREMETA4CAT.precipitation_agent, name="precipitation_agent", curie=COREMETA4CAT.curie('precipitation_agent'), + model_uri=COREMETA4CAT.precipitation_agent, domain=None, range=Optional[Union[str, list[str]]]) + +slots.crystallisation_duration = Slot(uri=COREMETA4CAT.crystallisation_duration, name="crystallisation_duration", curie=COREMETA4CAT.curie('crystallisation_duration'), + model_uri=COREMETA4CAT.crystallisation_duration, domain=None, range=Optional[Union[float, list[float]]]) + +slots.purification_solvent = Slot(uri=COREMETA4CAT.purification_solvent, name="purification_solvent", curie=COREMETA4CAT.curie('purification_solvent'), + model_uri=COREMETA4CAT.purification_solvent, domain=None, range=Optional[Union[str, list[str]]]) + +slots.temperature_ramp = Slot(uri=COREMETA4CAT.temperature_ramp, name="temperature_ramp", curie=COREMETA4CAT.curie('temperature_ramp'), + model_uri=COREMETA4CAT.temperature_ramp, domain=None, range=Optional[Union[float, list[float]]]) + +slots.sample_state = Slot(uri=COREMETA4CAT.sample_state, name="sample_state", curie=COREMETA4CAT.curie('sample_state'), + model_uri=COREMETA4CAT.sample_state, domain=None, range=Optional[Union[Union[str, "SampleStateEnum"], list[Union[str, "SampleStateEnum"]]]]) + +slots.sample_description = Slot(uri=COREMETA4CAT.sample_description, name="sample_description", curie=COREMETA4CAT.curie('sample_description'), + model_uri=COREMETA4CAT.sample_description, domain=None, range=Optional[Union[str, list[str]]]) + +slots.sample_preparation = Slot(uri=AFP['0001159'], name="sample_preparation", curie=AFP.curie('0001159'), + model_uri=COREMETA4CAT.sample_preparation, domain=None, range=Optional[Union[str, list[str]]]) + +slots.detector_type = Slot(uri=AFR['0000317'], name="detector_type", curie=AFR.curie('0000317'), + model_uri=COREMETA4CAT.detector_type, domain=None, range=Optional[Union[str, list[str]]]) + +slots.xray_source = Slot(uri=OBI['0001138'], name="xray_source", curie=OBI.curie('0001138'), + model_uri=COREMETA4CAT.xray_source, domain=None, range=Optional[Union[str, list[str]]]) + +slots.monochromator = Slot(uri=CHMO['0002120'], name="monochromator", curie=CHMO.curie('0002120'), + model_uri=COREMETA4CAT.monochromator, domain=None, range=Optional[Union[str, list[str]]]) + +slots.minimum_energy = Slot(uri=COREMETA4CAT.minimum_energy, name="minimum_energy", curie=COREMETA4CAT.curie('minimum_energy'), + model_uri=COREMETA4CAT.minimum_energy, domain=None, range=Optional[Union[float, list[float]]]) + +slots.maximum_energy = Slot(uri=COREMETA4CAT.maximum_energy, name="maximum_energy", curie=COREMETA4CAT.curie('maximum_energy'), + model_uri=COREMETA4CAT.maximum_energy, domain=None, range=Optional[Union[float, list[float]]]) + +slots.gun_type = Slot(uri=COREMETA4CAT.gun_type, name="gun_type", curie=COREMETA4CAT.curie('gun_type'), + model_uri=COREMETA4CAT.gun_type, domain=None, range=Optional[Union[str, list[str]]]) + +slots.acceleration_voltage = Slot(uri=COREMETA4CAT.acceleration_voltage, name="acceleration_voltage", curie=COREMETA4CAT.curie('acceleration_voltage'), + model_uri=COREMETA4CAT.acceleration_voltage, domain=None, range=Optional[Union[float, list[float]]]) + +slots.magnification_setting = Slot(uri=AFR['0002226'], name="magnification_setting", curie=AFR.curie('0002226'), + model_uri=COREMETA4CAT.magnification_setting, domain=None, range=Optional[Union[float, list[float]]]) + +slots.minimum_temperature = Slot(uri=COREMETA4CAT.minimum_temperature, name="minimum_temperature", curie=COREMETA4CAT.curie('minimum_temperature'), + model_uri=COREMETA4CAT.minimum_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.maximum_temperature = Slot(uri=COREMETA4CAT.maximum_temperature, name="maximum_temperature", curie=COREMETA4CAT.curie('maximum_temperature'), + model_uri=COREMETA4CAT.maximum_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.initial_temperature = Slot(uri=NCIT.C164644, name="initial_temperature", curie=NCIT.curie('C164644'), + model_uri=COREMETA4CAT.initial_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.final_temperature = Slot(uri=NCIT.C164644, name="final_temperature", curie=NCIT.curie('C164644'), + model_uri=COREMETA4CAT.final_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.mz_minimum = Slot(uri=AFR['0002652'], name="mz_minimum", curie=AFR.curie('0002652'), + model_uri=COREMETA4CAT.mz_minimum, domain=None, range=Optional[Union[float, list[float]]]) + +slots.mz_maximum = Slot(uri=AFR['0002653'], name="mz_maximum", curie=AFR.curie('0002653'), + model_uri=COREMETA4CAT.mz_maximum, domain=None, range=Optional[Union[float, list[float]]]) + +slots.excitation_wavelength = Slot(uri=AFR['0002479'], name="excitation_wavelength", curie=AFR.curie('0002479'), + model_uri=COREMETA4CAT.excitation_wavelength, domain=None, range=Optional[Union[float, list[float]]]) + +slots.emission_wavelength = Slot(uri=NCIT.C204101, name="emission_wavelength", curie=NCIT.curie('C204101'), + model_uri=COREMETA4CAT.emission_wavelength, domain=None, range=Optional[Union[float, list[float]]]) + +slots.optical_filter = Slot(uri=COREMETA4CAT.optical_filter, name="optical_filter", curie=COREMETA4CAT.curie('optical_filter'), + model_uri=COREMETA4CAT.optical_filter, domain=None, range=Optional[Union[str, list[str]]]) + +slots.reference_electrode = Slot(uri=VOC4CAT['0007204'], name="reference_electrode", curie=VOC4CAT.curie('0007204'), + model_uri=COREMETA4CAT.reference_electrode, domain=None, range=Optional[Union[str, list[str]]]) + +slots.working_electrode = Slot(uri=VOC4CAT['0007202'], name="working_electrode", curie=VOC4CAT.curie('0007202'), + model_uri=COREMETA4CAT.working_electrode, domain=None, range=Optional[Union[str, list[str]]]) + +slots.counter_electrode = Slot(uri=VOC4CAT['0007203'], name="counter_electrode", curie=VOC4CAT.curie('0007203'), + model_uri=COREMETA4CAT.counter_electrode, domain=None, range=Optional[Union[str, list[str]]]) + +slots.electrolyte_composition = Slot(uri=COREMETA4CAT.electrolyte_composition, name="electrolyte_composition", curie=COREMETA4CAT.curie('electrolyte_composition'), + model_uri=COREMETA4CAT.electrolyte_composition, domain=None, range=Optional[Union[str, list[str]]]) + +slots.electrolyte_concentration = Slot(uri=COREMETA4CAT.electrolyte_concentration, name="electrolyte_concentration", curie=COREMETA4CAT.curie('electrolyte_concentration'), + model_uri=COREMETA4CAT.electrolyte_concentration, domain=None, range=Optional[Union[float, list[float]]]) + +slots.minimum_2theta = Slot(uri=COREMETA4CAT.minimum_2theta, name="minimum_2theta", curie=COREMETA4CAT.curie('minimum_2theta'), + model_uri=COREMETA4CAT.minimum_2theta, domain=None, range=Optional[Union[float, list[float]]]) + +slots.maximum_2theta = Slot(uri=COREMETA4CAT.maximum_2theta, name="maximum_2theta", curie=COREMETA4CAT.curie('maximum_2theta'), + model_uri=COREMETA4CAT.maximum_2theta, domain=None, range=Optional[Union[float, list[float]]]) + +slots.sample_spinning_speed = Slot(uri=COREMETA4CAT.sample_spinning_speed, name="sample_spinning_speed", curie=COREMETA4CAT.curie('sample_spinning_speed'), + model_uri=COREMETA4CAT.sample_spinning_speed, domain=None, range=Optional[Union[float, list[float]]]) + +slots.absorption_edge = Slot(uri=COREMETA4CAT.absorption_edge, name="absorption_edge", curie=COREMETA4CAT.curie('absorption_edge'), + model_uri=COREMETA4CAT.absorption_edge, domain=None, range=Optional[Union[str, list[str]]]) + +slots.element_analyzed = Slot(uri=COREMETA4CAT.element_analyzed, name="element_analyzed", curie=COREMETA4CAT.curie('element_analyzed'), + model_uri=COREMETA4CAT.element_analyzed, domain=None, range=Optional[Union[str, list[str]]]) + +slots.beamline_source = Slot(uri=COREMETA4CAT.beamline_source, name="beamline_source", curie=COREMETA4CAT.curie('beamline_source'), + model_uri=COREMETA4CAT.beamline_source, domain=None, range=Optional[Union[str, list[str]]]) + +slots.noise_of_measurement = Slot(uri=COREMETA4CAT.noise_of_measurement, name="noise_of_measurement", curie=COREMETA4CAT.curie('noise_of_measurement'), + model_uri=COREMETA4CAT.noise_of_measurement, domain=None, range=Optional[Union[float, list[float]]]) + +slots.energy_resolution = Slot(uri=AFR['0000950'], name="energy_resolution", curie=AFR.curie('0000950'), + model_uri=COREMETA4CAT.energy_resolution, domain=None, range=Optional[Union[float, list[float]]]) + +slots.total_acquisition_time = Slot(uri=COREMETA4CAT.total_acquisition_time, name="total_acquisition_time", curie=COREMETA4CAT.curie('total_acquisition_time'), + model_uri=COREMETA4CAT.total_acquisition_time, domain=None, range=Optional[Union[float, list[float]]]) + +slots.pass_energy = Slot(uri=COREMETA4CAT.pass_energy, name="pass_energy", curie=COREMETA4CAT.curie('pass_energy'), + model_uri=COREMETA4CAT.pass_energy, domain=None, range=Optional[Union[float, list[float]]]) + +slots.spot_size = Slot(uri=COREMETA4CAT.spot_size, name="spot_size", curie=COREMETA4CAT.curie('spot_size'), + model_uri=COREMETA4CAT.spot_size, domain=None, range=Optional[Union[float, list[float]]]) + +slots.lense_mode = Slot(uri=VOC4CAT['0000108'], name="lense_mode", curie=VOC4CAT.curie('0000108'), + model_uri=COREMETA4CAT.lense_mode, domain=None, range=Optional[Union[str, list[str]]]) + +slots.charge_compensation = Slot(uri=COREMETA4CAT.charge_compensation, name="charge_compensation", curie=COREMETA4CAT.curie('charge_compensation'), + model_uri=COREMETA4CAT.charge_compensation, domain=None, range=Optional[Union[str, list[str]]]) + +slots.primary_energy = Slot(uri=COREMETA4CAT.primary_energy, name="primary_energy", curie=COREMETA4CAT.curie('primary_energy'), + model_uri=COREMETA4CAT.primary_energy, domain=None, range=Optional[Union[float, list[float]]]) + +slots.counting_time = Slot(uri=COREMETA4CAT.counting_time, name="counting_time", curie=COREMETA4CAT.curie('counting_time'), + model_uri=COREMETA4CAT.counting_time, domain=None, range=Optional[Union[float, list[float]]]) + +slots.minimum_wavenumber = Slot(uri=COREMETA4CAT.minimum_wavenumber, name="minimum_wavenumber", curie=COREMETA4CAT.curie('minimum_wavenumber'), + model_uri=COREMETA4CAT.minimum_wavenumber, domain=None, range=Optional[Union[float, list[float]]]) + +slots.maximum_wavenumber = Slot(uri=COREMETA4CAT.maximum_wavenumber, name="maximum_wavenumber", curie=COREMETA4CAT.curie('maximum_wavenumber'), + model_uri=COREMETA4CAT.maximum_wavenumber, domain=None, range=Optional[Union[float, list[float]]]) + +slots.background_correction = Slot(uri=AFP['0003721'], name="background_correction", curie=AFP.curie('0003721'), + model_uri=COREMETA4CAT.background_correction, domain=None, range=Optional[Union[str, list[str]]]) + +slots.adsorption_gas = Slot(uri=COREMETA4CAT.adsorption_gas, name="adsorption_gas", curie=COREMETA4CAT.curie('adsorption_gas'), + model_uri=COREMETA4CAT.adsorption_gas, domain=None, range=Optional[Union[str, list[str]]]) + +slots.diluting_reference = Slot(uri=COREMETA4CAT.diluting_reference, name="diluting_reference", curie=COREMETA4CAT.curie('diluting_reference'), + model_uri=COREMETA4CAT.diluting_reference, domain=None, range=Optional[Union[str, list[str]]]) + +slots.ratio_reference_sample = Slot(uri=COREMETA4CAT.ratio_reference_sample, name="ratio_reference_sample", curie=COREMETA4CAT.curie('ratio_reference_sample'), + model_uri=COREMETA4CAT.ratio_reference_sample, domain=None, range=Optional[Union[float, list[float]]]) + +slots.background_correction_method = Slot(uri=COREMETA4CAT.background_correction_method, name="background_correction_method", curie=COREMETA4CAT.curie('background_correction_method'), + model_uri=COREMETA4CAT.background_correction_method, domain=None, range=Optional[Union[str, list[str]]]) + +slots.excitation_laser_wavelength = Slot(uri=AFR['0001594'], name="excitation_laser_wavelength", curie=AFR.curie('0001594'), + model_uri=COREMETA4CAT.excitation_laser_wavelength, domain=None, range=Optional[Union[float, list[float]]]) + +slots.excitation_laser_power = Slot(uri=AFR['0001595'], name="excitation_laser_power", curie=AFR.curie('0001595'), + model_uri=COREMETA4CAT.excitation_laser_power, domain=None, range=Optional[Union[float, list[float]]]) + +slots.filter_or_grating = Slot(uri=COREMETA4CAT.filter_or_grating, name="filter_or_grating", curie=COREMETA4CAT.curie('filter_or_grating'), + model_uri=COREMETA4CAT.filter_or_grating, domain=None, range=Optional[Union[str, list[str]]]) + +slots.nucleus = Slot(uri=COREMETA4CAT.nucleus, name="nucleus", curie=COREMETA4CAT.curie('nucleus'), + model_uri=COREMETA4CAT.nucleus, domain=None, range=Optional[Union[str, list[str]]]) + +slots.irradiation_frequency = Slot(uri=COREMETA4CAT.irradiation_frequency, name="irradiation_frequency", curie=COREMETA4CAT.curie('irradiation_frequency'), + model_uri=COREMETA4CAT.irradiation_frequency, domain=None, range=Optional[Union[float, list[float]]]) + +slots.nmr_pulse_sequence = Slot(uri=COREMETA4CAT.nmr_pulse_sequence, name="nmr_pulse_sequence", curie=COREMETA4CAT.curie('nmr_pulse_sequence'), + model_uri=COREMETA4CAT.nmr_pulse_sequence, domain=None, range=Optional[Union[str, list[str]]]) + +slots.nmr_sample_tube = Slot(uri=COREMETA4CAT.nmr_sample_tube, name="nmr_sample_tube", curie=COREMETA4CAT.curie('nmr_sample_tube'), + model_uri=COREMETA4CAT.nmr_sample_tube, domain=None, range=Optional[Union[str, list[str]]]) + +slots.image_resolution = Slot(uri=COREMETA4CAT.image_resolution, name="image_resolution", curie=COREMETA4CAT.curie('image_resolution'), + model_uri=COREMETA4CAT.image_resolution, domain=None, range=Optional[Union[float, list[float]]]) + +slots.field_emitter = Slot(uri=COREMETA4CAT.field_emitter, name="field_emitter", curie=COREMETA4CAT.curie('field_emitter'), + model_uri=COREMETA4CAT.field_emitter, domain=None, range=Optional[Union[str, list[str]]]) + +slots.reducing_gas_composition = Slot(uri=COREMETA4CAT.reducing_gas_composition, name="reducing_gas_composition", curie=COREMETA4CAT.curie('reducing_gas_composition'), + model_uri=COREMETA4CAT.reducing_gas_composition, domain=None, range=Optional[Union[str, list[str]]]) + +slots.oxidizing_gas_composition = Slot(uri=COREMETA4CAT.oxidizing_gas_composition, name="oxidizing_gas_composition", curie=COREMETA4CAT.curie('oxidizing_gas_composition'), + model_uri=COREMETA4CAT.oxidizing_gas_composition, domain=None, range=Optional[Union[str, list[str]]]) + +slots.adsorbate_gas = Slot(uri=COREMETA4CAT.adsorbate_gas, name="adsorbate_gas", curie=COREMETA4CAT.curie('adsorbate_gas'), + model_uri=COREMETA4CAT.adsorbate_gas, domain=None, range=Optional[Union[str, list[str]]]) + +slots.degassing_temperature = Slot(uri=COREMETA4CAT.degassing_temperature, name="degassing_temperature", curie=COREMETA4CAT.curie('degassing_temperature'), + model_uri=COREMETA4CAT.degassing_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.measurement_temperature = Slot(uri=COREMETA4CAT.measurement_temperature, name="measurement_temperature", curie=COREMETA4CAT.curie('measurement_temperature'), + model_uri=COREMETA4CAT.measurement_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.pore_size_distribution_method = Slot(uri=COREMETA4CAT.pore_size_distribution_method, name="pore_size_distribution_method", curie=COREMETA4CAT.curie('pore_size_distribution_method'), + model_uri=COREMETA4CAT.pore_size_distribution_method, domain=None, range=Optional[Union[str, list[str]]]) + +slots.elements_analyzed = Slot(uri=COREMETA4CAT.elements_analyzed, name="elements_analyzed", curie=COREMETA4CAT.curie('elements_analyzed'), + model_uri=COREMETA4CAT.elements_analyzed, domain=None, range=Optional[Union[str, list[str]]]) + +slots.combustion_temperature = Slot(uri=COREMETA4CAT.combustion_temperature, name="combustion_temperature", curie=COREMETA4CAT.curie('combustion_temperature'), + model_uri=COREMETA4CAT.combustion_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.detection_limit = Slot(uri=NCIT.C105701, name="detection_limit", curie=NCIT.curie('C105701'), + model_uri=COREMETA4CAT.detection_limit, domain=None, range=Optional[Union[float, list[float]]]) + +slots.matrix_effect_correction = Slot(uri=COREMETA4CAT.matrix_effect_correction, name="matrix_effect_correction", curie=COREMETA4CAT.curie('matrix_effect_correction'), + model_uri=COREMETA4CAT.matrix_effect_correction, domain=None, range=Optional[Union[str, list[str]]]) + +slots.minimum_wavelength = Slot(uri=COREMETA4CAT.minimum_wavelength, name="minimum_wavelength", curie=COREMETA4CAT.curie('minimum_wavelength'), + model_uri=COREMETA4CAT.minimum_wavelength, domain=None, range=Optional[Union[float, list[float]]]) + +slots.maximum_wavelength = Slot(uri=COREMETA4CAT.maximum_wavelength, name="maximum_wavelength", curie=COREMETA4CAT.curie('maximum_wavelength'), + model_uri=COREMETA4CAT.maximum_wavelength, domain=None, range=Optional[Union[float, list[float]]]) + +slots.path_length = Slot(uri=AFQ['0000268'], name="path_length", curie=AFQ.curie('0000268'), + model_uri=COREMETA4CAT.path_length, domain=None, range=Optional[Union[float, list[float]]]) + +slots.emission_range = Slot(uri=COREMETA4CAT.emission_range, name="emission_range", curie=COREMETA4CAT.curie('emission_range'), + model_uri=COREMETA4CAT.emission_range, domain=None, range=Optional[Union[str, list[str]]]) + +slots.slit_width = Slot(uri=COREMETA4CAT.slit_width, name="slit_width", curie=COREMETA4CAT.curie('slit_width'), + model_uri=COREMETA4CAT.slit_width, domain=None, range=Optional[Union[float, list[float]]]) + +slots.lifetime_fitting_model = Slot(uri=COREMETA4CAT.lifetime_fitting_model, name="lifetime_fitting_model", curie=COREMETA4CAT.curie('lifetime_fitting_model'), + model_uri=COREMETA4CAT.lifetime_fitting_model, domain=None, range=Optional[Union[str, list[str]]]) + +slots.number_of_shots = Slot(uri=COREMETA4CAT.number_of_shots, name="number_of_shots", curie=COREMETA4CAT.curie('number_of_shots'), + model_uri=COREMETA4CAT.number_of_shots, domain=None, range=Optional[Union[int, list[int]]]) + +slots.scan_rate = Slot(uri=VOC4CAT['0007213'], name="scan_rate", curie=VOC4CAT.curie('0007213'), + model_uri=COREMETA4CAT.scan_rate, domain=None, range=Optional[Union[float, list[float]]]) + +slots.minimum_potential = Slot(uri=COREMETA4CAT.minimum_potential, name="minimum_potential", curie=COREMETA4CAT.curie('minimum_potential'), + model_uri=COREMETA4CAT.minimum_potential, domain=None, range=Optional[Union[float, list[float]]]) + +slots.maximum_potential = Slot(uri=COREMETA4CAT.maximum_potential, name="maximum_potential", curie=COREMETA4CAT.curie('maximum_potential'), + model_uri=COREMETA4CAT.maximum_potential, domain=None, range=Optional[Union[float, list[float]]]) + +slots.step_size_potential = Slot(uri=VOC4CAT['0007218'], name="step_size_potential", curie=VOC4CAT.curie('0007218'), + model_uri=COREMETA4CAT.step_size_potential, domain=None, range=Optional[Union[float, list[float]]]) + +slots.electrode_configuration = Slot(uri=COREMETA4CAT.electrode_configuration, name="electrode_configuration", curie=COREMETA4CAT.curie('electrode_configuration'), + model_uri=COREMETA4CAT.electrode_configuration, domain=None, range=Optional[Union[str, list[str]]]) + +slots.ac_frequency = Slot(uri=VOC4CAT['0007239'], name="ac_frequency", curie=VOC4CAT.curie('0007239'), + model_uri=COREMETA4CAT.ac_frequency, domain=None, range=Optional[Union[float, list[float]]]) + +slots.ac_dc_mode = Slot(uri=COREMETA4CAT.ac_dc_mode, name="ac_dc_mode", curie=COREMETA4CAT.curie('ac_dc_mode'), + model_uri=COREMETA4CAT.ac_dc_mode, domain=None, range=Optional[Union[str, list[str]]]) + +slots.sample_geometry = Slot(uri=COREMETA4CAT.sample_geometry, name="sample_geometry", curie=COREMETA4CAT.curie('sample_geometry'), + model_uri=COREMETA4CAT.sample_geometry, domain=None, range=Optional[Union[str, list[str]]]) + +slots.light_wavelength = Slot(uri=VOC4CAT['0000176'], name="light_wavelength", curie=VOC4CAT.curie('0000176'), + model_uri=COREMETA4CAT.light_wavelength, domain=None, range=Optional[Union[float, list[float]]]) + +slots.scattering_angle = Slot(uri=COREMETA4CAT.scattering_angle, name="scattering_angle", curie=COREMETA4CAT.curie('scattering_angle'), + model_uri=COREMETA4CAT.scattering_angle, domain=None, range=Optional[Union[float, list[float]]]) + +slots.refractive_index = Slot(uri=COREMETA4CAT.refractive_index, name="refractive_index", curie=COREMETA4CAT.curie('refractive_index'), + model_uri=COREMETA4CAT.refractive_index, domain=None, range=Optional[Union[float, list[float]]]) + +slots.measurement_duration = Slot(uri=COREMETA4CAT.measurement_duration, name="measurement_duration", curie=COREMETA4CAT.curie('measurement_duration'), + model_uri=COREMETA4CAT.measurement_duration, domain=None, range=Optional[Union[float, list[float]]]) + +slots.spray_voltage = Slot(uri=CHMO['0002792'], name="spray_voltage", curie=CHMO.curie('0002792'), + model_uri=COREMETA4CAT.spray_voltage, domain=None, range=Optional[Union[float, list[float]]]) + +slots.capillary_temperature = Slot(uri=COREMETA4CAT.capillary_temperature, name="capillary_temperature", curie=COREMETA4CAT.curie('capillary_temperature'), + model_uri=COREMETA4CAT.capillary_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.solvent_composition = Slot(uri=VOC4CAT['0007246'], name="solvent_composition", curie=VOC4CAT.curie('0007246'), + model_uri=COREMETA4CAT.solvent_composition, domain=None, range=Optional[Union[str, list[str]]]) + +slots.carrier_gas_purity = Slot(uri=COREMETA4CAT.carrier_gas_purity, name="carrier_gas_purity", curie=COREMETA4CAT.curie('carrier_gas_purity'), + model_uri=COREMETA4CAT.carrier_gas_purity, domain=None, range=Optional[Union[str, list[str]]]) + +slots.inlet_temperature = Slot(uri=COREMETA4CAT.inlet_temperature, name="inlet_temperature", curie=COREMETA4CAT.curie('inlet_temperature'), + model_uri=COREMETA4CAT.inlet_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.minimum_oven_temperature = Slot(uri=COREMETA4CAT.minimum_oven_temperature, name="minimum_oven_temperature", curie=COREMETA4CAT.curie('minimum_oven_temperature'), + model_uri=COREMETA4CAT.minimum_oven_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.maximum_oven_temperature = Slot(uri=COREMETA4CAT.maximum_oven_temperature, name="maximum_oven_temperature", curie=COREMETA4CAT.curie('maximum_oven_temperature'), + model_uri=COREMETA4CAT.maximum_oven_temperature, domain=None, range=Optional[Union[float, list[float]]]) + +slots.heating_ramp = Slot(uri=COREMETA4CAT.heating_ramp, name="heating_ramp", curie=COREMETA4CAT.curie('heating_ramp'), + model_uri=COREMETA4CAT.heating_ramp, domain=None, range=Optional[Union[float, list[float]]]) + +slots.acquisition_mode = Slot(uri=COREMETA4CAT.acquisition_mode, name="acquisition_mode", curie=COREMETA4CAT.curie('acquisition_mode'), + model_uri=COREMETA4CAT.acquisition_mode, domain=None, range=Optional[Union[str, list[str]]]) + +slots.solvent_delay = Slot(uri=COREMETA4CAT.solvent_delay, name="solvent_delay", curie=COREMETA4CAT.curie('solvent_delay'), + model_uri=COREMETA4CAT.solvent_delay, domain=None, range=Optional[Union[float, list[float]]]) + +slots.trace_ion_detection = Slot(uri=COREMETA4CAT.trace_ion_detection, name="trace_ion_detection", curie=COREMETA4CAT.curie('trace_ion_detection'), + model_uri=COREMETA4CAT.trace_ion_detection, domain=None, range=Optional[Union[str, list[str]]]) + +slots.split_ratio = Slot(uri=COREMETA4CAT.split_ratio, name="split_ratio", curie=COREMETA4CAT.curie('split_ratio'), + model_uri=COREMETA4CAT.split_ratio, domain=None, range=Optional[Union[float, list[float]]]) + +slots.eluent = Slot(uri=AFRL['0000011'], name="eluent", curie=AFRL.curie('0000011'), + model_uri=COREMETA4CAT.eluent, domain=None, range=Optional[Union[str, list[str]]]) + +slots.calibration_standard = Slot(uri=COREMETA4CAT.calibration_standard, name="calibration_standard", curie=COREMETA4CAT.curie('calibration_standard'), + model_uri=COREMETA4CAT.calibration_standard, domain=None, range=Optional[Union[str, list[str]]]) + +slots.gradient_program = Slot(uri=COREMETA4CAT.gradient_program, name="gradient_program", curie=COREMETA4CAT.curie('gradient_program'), + model_uri=COREMETA4CAT.gradient_program, domain=None, range=Optional[Union[str, list[str]]]) + +slots.ionization_mode = Slot(uri=COREMETA4CAT.ionization_mode, name="ionization_mode", curie=COREMETA4CAT.curie('ionization_mode'), + model_uri=COREMETA4CAT.ionization_mode, domain=None, range=Optional[Union[str, list[str]]]) + +slots.catalyst_quantity = Slot(uri=COREMETA4CAT.catalyst_quantity, name="catalyst_quantity", curie=COREMETA4CAT.curie('catalyst_quantity'), + model_uri=COREMETA4CAT.catalyst_quantity, domain=None, range=Union[float, list[float]]) + +slots.reactant = Slot(uri=VOC4CAT['0000101'], name="reactant", curie=VOC4CAT.curie('0000101'), + model_uri=COREMETA4CAT.reactant, domain=None, range=Union[str, list[str]]) + +slots.catalyst_type = Slot(uri=VOC4CAT['0007014'], name="catalyst_type", curie=VOC4CAT.curie('0007014'), + model_uri=COREMETA4CAT.catalyst_type, domain=None, range=Optional[Union[str, list[str]]]) + +slots.reactor_temperature_range = Slot(uri=VOC4CAT['0007032'], name="reactor_temperature_range", curie=VOC4CAT.curie('0007032'), + model_uri=COREMETA4CAT.reactor_temperature_range, domain=None, range=Optional[Union[str, list[str]]]) + +slots.experiment_pressure = Slot(uri=VOC4CAT['0000118'], name="experiment_pressure", curie=VOC4CAT.curie('0000118'), + model_uri=COREMETA4CAT.experiment_pressure, domain=None, range=Optional[Union[float, list[float]]]) + +slots.feed_composition_range = Slot(uri=COREMETA4CAT.feed_composition_range, name="feed_composition_range", curie=COREMETA4CAT.curie('feed_composition_range'), + model_uri=COREMETA4CAT.feed_composition_range, domain=None, range=Optional[Union[str, list[str]]]) + +slots.gas_distributor_type = Slot(uri=COREMETA4CAT.gas_distributor_type, name="gas_distributor_type", curie=COREMETA4CAT.curie('gas_distributor_type'), + model_uri=COREMETA4CAT.gas_distributor_type, domain=None, range=Optional[Union[str, list[str]]]) + +slots.bed_expansion_height = Slot(uri=COREMETA4CAT.bed_expansion_height, name="bed_expansion_height", curie=COREMETA4CAT.curie('bed_expansion_height'), + model_uri=COREMETA4CAT.bed_expansion_height, domain=None, range=Optional[Union[float, list[float]]]) + +slots.bubble_size_distribution = Slot(uri=COREMETA4CAT.bubble_size_distribution, name="bubble_size_distribution", curie=COREMETA4CAT.curie('bubble_size_distribution'), + model_uri=COREMETA4CAT.bubble_size_distribution, domain=None, range=Optional[str]) + +slots.software_package = Slot(uri=COREMETA4CAT.software_package, name="software_package", curie=COREMETA4CAT.curie('software_package'), + model_uri=COREMETA4CAT.software_package, domain=None, range=Union[str, list[str]]) + +slots.calculated_property = Slot(uri=COREMETA4CAT.calculated_property, name="calculated_property", curie=COREMETA4CAT.curie('calculated_property'), + model_uri=COREMETA4CAT.calculated_property, domain=None, range=Union[Union[dict, CalculatedProperty], list[Union[dict, CalculatedProperty]]]) + +slots.exchange_correlation_functional = Slot(uri=COREMETA4CAT.exchange_correlation_functional, name="exchange_correlation_functional", curie=COREMETA4CAT.curie('exchange_correlation_functional'), + model_uri=COREMETA4CAT.exchange_correlation_functional, domain=None, range=Optional[Union[str, list[str]]]) + +slots.energy_cutoff = Slot(uri=COREMETA4CAT.energy_cutoff, name="energy_cutoff", curie=COREMETA4CAT.curie('energy_cutoff'), + model_uri=COREMETA4CAT.energy_cutoff, domain=None, range=Optional[Union[float, list[float]]]) + +slots.convergence_criteria = Slot(uri=COREMETA4CAT.convergence_criteria, name="convergence_criteria", curie=COREMETA4CAT.curie('convergence_criteria'), + model_uri=COREMETA4CAT.convergence_criteria, domain=None, range=Optional[Union[str, list[str]]]) + +slots.dft_u_parameters = Slot(uri=COREMETA4CAT.dft_u_parameters, name="dft_u_parameters", curie=COREMETA4CAT.curie('dft_u_parameters'), + model_uri=COREMETA4CAT.dft_u_parameters, domain=None, range=Optional[Union[str, list[str]]]) + +slots.spin_polarization = Slot(uri=COREMETA4CAT.spin_polarization, name="spin_polarization", curie=COREMETA4CAT.curie('spin_polarization'), + model_uri=COREMETA4CAT.spin_polarization, domain=None, range=Optional[Union[Union[bool, Bool], list[Union[bool, Bool]]]]) + +slots.total_energy_per_atom = Slot(uri=COREMETA4CAT.total_energy_per_atom, name="total_energy_per_atom", curie=COREMETA4CAT.curie('total_energy_per_atom'), + model_uri=COREMETA4CAT.total_energy_per_atom, domain=None, range=Optional[Union[float, list[float]]]) + +slots.force_field = Slot(uri=COREMETA4CAT.force_field, name="force_field", curie=COREMETA4CAT.curie('force_field'), + model_uri=COREMETA4CAT.force_field, domain=None, range=Optional[Union[str, list[str]]]) + +slots.simulation_timestep = Slot(uri=APOLLO_SV['00000012'], name="simulation_timestep", curie=APOLLO_SV.curie('00000012'), + model_uri=COREMETA4CAT.simulation_timestep, domain=None, range=Optional[Union[float, list[float]]]) + +slots.simulation_time = Slot(uri=COREMETA4CAT.simulation_time, name="simulation_time", curie=COREMETA4CAT.curie('simulation_time'), + model_uri=COREMETA4CAT.simulation_time, domain=None, range=Optional[Union[float, list[float]]]) + +slots.ensemble_type = Slot(uri=COREMETA4CAT.ensemble_type, name="ensemble_type", curie=COREMETA4CAT.curie('ensemble_type'), + model_uri=COREMETA4CAT.ensemble_type, domain=None, range=Optional[Union[str, list[str]]]) + +slots.number_of_atoms = Slot(uri=COREMETA4CAT.number_of_atoms, name="number_of_atoms", curie=COREMETA4CAT.curie('number_of_atoms'), + model_uri=COREMETA4CAT.number_of_atoms, domain=None, range=Optional[Union[int, list[int]]]) + +slots.rate_constants = Slot(uri=NCIT.C94967, name="rate_constants", curie=NCIT.curie('C94967'), + model_uri=COREMETA4CAT.rate_constants, domain=None, range=Optional[Union[str, list[str]]]) + +slots.solver_type = Slot(uri=COREMETA4CAT.solver_type, name="solver_type", curie=COREMETA4CAT.curie('solver_type'), + model_uri=COREMETA4CAT.solver_type, domain=None, range=Optional[Union[str, list[str]]]) + +slots.pressure = Slot(uri=COREMETA4CAT.pressure, name="pressure", curie=COREMETA4CAT.curie('pressure'), + model_uri=COREMETA4CAT.pressure, domain=None, range=Optional[Union[float, list[float]]]) + +slots.surface_coverage = Slot(uri=COREMETA4CAT.surface_coverage, name="surface_coverage", curie=COREMETA4CAT.curie('surface_coverage'), + model_uri=COREMETA4CAT.surface_coverage, domain=None, range=Optional[Union[float, list[float]]]) + +slots.activation_energy = Slot(uri=COREMETA4CAT.activation_energy, name="activation_energy", curie=COREMETA4CAT.curie('activation_energy'), + model_uri=COREMETA4CAT.activation_energy, domain=None, range=Optional[Union[float, list[float]]]) + +slots.interaction_potential = Slot(uri=COREMETA4CAT.interaction_potential, name="interaction_potential", curie=COREMETA4CAT.curie('interaction_potential'), + model_uri=COREMETA4CAT.interaction_potential, domain=None, range=Optional[Union[str, list[str]]]) + +slots.number_of_steps = Slot(uri=COREMETA4CAT.number_of_steps, name="number_of_steps", curie=COREMETA4CAT.curie('number_of_steps'), + model_uri=COREMETA4CAT.number_of_steps, domain=None, range=Optional[Union[int, list[int]]]) + +slots.lattice_size_type = Slot(uri=COREMETA4CAT.lattice_size_type, name="lattice_size_type", curie=COREMETA4CAT.curie('lattice_size_type'), + model_uri=COREMETA4CAT.lattice_size_type, domain=None, range=Optional[Union[str, list[str]]]) + +slots.acceptance_criteria = Slot(uri=COREMETA4CAT.acceptance_criteria, name="acceptance_criteria", curie=COREMETA4CAT.curie('acceptance_criteria'), + model_uri=COREMETA4CAT.acceptance_criteria, domain=None, range=Optional[Union[str, list[str]]]) + +slots.equilibration_steps = Slot(uri=COREMETA4CAT.equilibration_steps, name="equilibration_steps", curie=COREMETA4CAT.curie('equilibration_steps'), + model_uri=COREMETA4CAT.equilibration_steps, domain=None, range=Optional[Union[int, list[int]]]) + +slots.sampling_interval = Slot(uri=COREMETA4CAT.sampling_interval, name="sampling_interval", curie=COREMETA4CAT.curie('sampling_interval'), + model_uri=COREMETA4CAT.sampling_interval, domain=None, range=Optional[Union[int, list[int]]]) + +slots.material_composition = Slot(uri=COREMETA4CAT.material_composition, name="material_composition", curie=COREMETA4CAT.curie('material_composition'), + model_uri=COREMETA4CAT.material_composition, domain=None, range=Optional[Union[str, list[str]]]) + +slots.crystal_structure = Slot(uri=SIO['001100'], name="crystal_structure", curie=SIO.curie('001100'), + model_uri=COREMETA4CAT.crystal_structure, domain=None, range=Optional[Union[str, list[str]]]) + +slots.k_point_mesh = Slot(uri=COREMETA4CAT.k_point_mesh, name="k_point_mesh", curie=COREMETA4CAT.curie('k_point_mesh'), + model_uri=COREMETA4CAT.k_point_mesh, domain=None, range=Optional[Union[str, list[str]]]) + +slots.formation_energy = Slot(uri=COREMETA4CAT.formation_energy, name="formation_energy", curie=COREMETA4CAT.curie('formation_energy'), + model_uri=COREMETA4CAT.formation_energy, domain=None, range=Optional[Union[float, list[float]]]) + +slots.reference_energies = Slot(uri=COREMETA4CAT.reference_energies, name="reference_energies", curie=COREMETA4CAT.curie('reference_energies'), + model_uri=COREMETA4CAT.reference_energies, domain=None, range=Optional[Union[str, list[str]]]) + +slots.energy_above_hull = Slot(uri=COREMETA4CAT.energy_above_hull, name="energy_above_hull", curie=COREMETA4CAT.curie('energy_above_hull'), + model_uri=COREMETA4CAT.energy_above_hull, domain=None, range=Optional[Union[float, list[float]]]) + +slots.phase_diagram_type = Slot(uri=COREMETA4CAT.phase_diagram_type, name="phase_diagram_type", curie=COREMETA4CAT.curie('phase_diagram_type'), + model_uri=COREMETA4CAT.phase_diagram_type, domain=None, range=Optional[Union[str, list[str]]]) + +slots.competing_phases = Slot(uri=COREMETA4CAT.competing_phases, name="competing_phases", curie=COREMETA4CAT.curie('competing_phases'), + model_uri=COREMETA4CAT.competing_phases, domain=None, range=Optional[Union[str, list[str]]]) + +slots.piezoelectric_tensor = Slot(uri=COREMETA4CAT.piezoelectric_tensor, name="piezoelectric_tensor", curie=COREMETA4CAT.curie('piezoelectric_tensor'), + model_uri=COREMETA4CAT.piezoelectric_tensor, domain=None, range=Optional[Union[str, list[str]]]) + +slots.crystal_symmetry = Slot(uri=COREMETA4CAT.crystal_symmetry, name="crystal_symmetry", curie=COREMETA4CAT.curie('crystal_symmetry'), + model_uri=COREMETA4CAT.crystal_symmetry, domain=None, range=Optional[Union[str, list[str]]]) + +slots.strain_applied = Slot(uri=COREMETA4CAT.strain_applied, name="strain_applied", curie=COREMETA4CAT.curie('strain_applied'), + model_uri=COREMETA4CAT.strain_applied, domain=None, range=Optional[Union[float, list[float]]]) + +slots.ionic_electronic_contributions = Slot(uri=COREMETA4CAT.ionic_electronic_contributions, name="ionic_electronic_contributions", curie=COREMETA4CAT.curie('ionic_electronic_contributions'), + model_uri=COREMETA4CAT.ionic_electronic_contributions, domain=None, range=Optional[Union[str, list[str]]]) + +slots.elastic_tensor = Slot(uri=COREMETA4CAT.elastic_tensor, name="elastic_tensor", curie=COREMETA4CAT.curie('elastic_tensor'), + model_uri=COREMETA4CAT.elastic_tensor, domain=None, range=Optional[Union[str, list[str]]]) + +slots.bulk_modulus = Slot(uri=COREMETA4CAT.bulk_modulus, name="bulk_modulus", curie=COREMETA4CAT.curie('bulk_modulus'), + model_uri=COREMETA4CAT.bulk_modulus, domain=None, range=Optional[Union[float, list[float]]]) + +slots.shear_modulus = Slot(uri=COREMETA4CAT.shear_modulus, name="shear_modulus", curie=COREMETA4CAT.curie('shear_modulus'), + model_uri=COREMETA4CAT.shear_modulus, domain=None, range=Optional[Union[float, list[float]]]) + +slots.poisson_ratio = Slot(uri=COREMETA4CAT.poisson_ratio, name="poisson_ratio", curie=COREMETA4CAT.curie('poisson_ratio'), + model_uri=COREMETA4CAT.poisson_ratio, domain=None, range=Optional[Union[float, list[float]]]) + +slots.young_modulus = Slot(uri=COREMETA4CAT.young_modulus, name="young_modulus", curie=COREMETA4CAT.curie('young_modulus'), + model_uri=COREMETA4CAT.young_modulus, domain=None, range=Optional[Union[float, list[float]]]) + +slots.surface_energy = Slot(uri=COREMETA4CAT.surface_energy, name="surface_energy", curie=COREMETA4CAT.curie('surface_energy'), + model_uri=COREMETA4CAT.surface_energy, domain=None, range=Optional[Union[float, list[float]]]) + +slots.miller_indices = Slot(uri=COREMETA4CAT.miller_indices, name="miller_indices", curie=COREMETA4CAT.curie('miller_indices'), + model_uri=COREMETA4CAT.miller_indices, domain=None, range=Optional[Union[str, list[str]]]) + +slots.slab_thickness = Slot(uri=COREMETA4CAT.slab_thickness, name="slab_thickness", curie=COREMETA4CAT.curie('slab_thickness'), + model_uri=COREMETA4CAT.slab_thickness, domain=None, range=Optional[Union[float, list[float]]]) + +slots.vacuum_spacing = Slot(uri=COREMETA4CAT.vacuum_spacing, name="vacuum_spacing", curie=COREMETA4CAT.curie('vacuum_spacing'), + model_uri=COREMETA4CAT.vacuum_spacing, domain=None, range=Optional[Union[float, list[float]]]) + +slots.surface_termination_method = Slot(uri=COREMETA4CAT.surface_termination_method, name="surface_termination_method", curie=COREMETA4CAT.curie('surface_termination_method'), + model_uri=COREMETA4CAT.surface_termination_method, domain=None, range=Optional[Union[str, list[str]]]) + +slots.dielectric_tensor = Slot(uri=COREMETA4CAT.dielectric_tensor, name="dielectric_tensor", curie=COREMETA4CAT.curie('dielectric_tensor'), + model_uri=COREMETA4CAT.dielectric_tensor, domain=None, range=Optional[Union[str, list[str]]]) + +slots.born_effective_charges = Slot(uri=COREMETA4CAT.born_effective_charges, name="born_effective_charges", curie=COREMETA4CAT.curie('born_effective_charges'), + model_uri=COREMETA4CAT.born_effective_charges, domain=None, range=Optional[Union[str, list[str]]]) + +slots.force_constant_method = Slot(uri=COREMETA4CAT.force_constant_method, name="force_constant_method", curie=COREMETA4CAT.curie('force_constant_method'), + model_uri=COREMETA4CAT.force_constant_method, domain=None, range=Optional[Union[str, list[str]]]) + +slots.kq_point_mesh = Slot(uri=COREMETA4CAT.kq_point_mesh, name="kq_point_mesh", curie=COREMETA4CAT.curie('kq_point_mesh'), + model_uri=COREMETA4CAT.kq_point_mesh, domain=None, range=Optional[Union[str, list[str]]]) + +slots.smearing_parameter = Slot(uri=COREMETA4CAT.smearing_parameter, name="smearing_parameter", curie=COREMETA4CAT.curie('smearing_parameter'), + model_uri=COREMETA4CAT.smearing_parameter, domain=None, range=Optional[Union[float, list[float]]]) + +slots.imaginary_modes = Slot(uri=COREMETA4CAT.imaginary_modes, name="imaginary_modes", curie=COREMETA4CAT.curie('imaginary_modes'), + model_uri=COREMETA4CAT.imaginary_modes, domain=None, range=Optional[Union[Union[bool, Bool], list[Union[bool, Bool]]]]) + +slots.fit_method = Slot(uri=COREMETA4CAT.fit_method, name="fit_method", curie=COREMETA4CAT.curie('fit_method'), + model_uri=COREMETA4CAT.fit_method, domain=None, range=Optional[Union[str, list[str]]]) + +slots.pressure_derivative = Slot(uri=COREMETA4CAT.pressure_derivative, name="pressure_derivative", curie=COREMETA4CAT.curie('pressure_derivative'), + model_uri=COREMETA4CAT.pressure_derivative, domain=None, range=Optional[Union[float, list[float]]]) + +slots.fit_residuals = Slot(uri=COREMETA4CAT.fit_residuals, name="fit_residuals", curie=COREMETA4CAT.curie('fit_residuals'), + model_uri=COREMETA4CAT.fit_residuals, domain=None, range=Optional[Union[float, list[float]]]) + +slots.ph_range = Slot(uri=COREMETA4CAT.ph_range, name="ph_range", curie=COREMETA4CAT.curie('ph_range'), + model_uri=COREMETA4CAT.ph_range, domain=None, range=Optional[Union[str, list[str]]]) + +slots.potential_range = Slot(uri=COREMETA4CAT.potential_range, name="potential_range", curie=COREMETA4CAT.curie('potential_range'), + model_uri=COREMETA4CAT.potential_range, domain=None, range=Optional[Union[str, list[str]]]) + +slots.solvation_model = Slot(uri=COREMETA4CAT.solvation_model, name="solvation_model", curie=COREMETA4CAT.curie('solvation_model'), + model_uri=COREMETA4CAT.solvation_model, domain=None, range=Optional[Union[str, list[str]]]) + +slots.ionic_strength = Slot(uri=COREMETA4CAT.ionic_strength, name="ionic_strength", curie=COREMETA4CAT.curie('ionic_strength'), + model_uri=COREMETA4CAT.ionic_strength, domain=None, range=Optional[Union[float, list[float]]]) + +slots.grain_boundary_plane = Slot(uri=COREMETA4CAT.grain_boundary_plane, name="grain_boundary_plane", curie=COREMETA4CAT.curie('grain_boundary_plane'), + model_uri=COREMETA4CAT.grain_boundary_plane, domain=None, range=Optional[Union[str, list[str]]]) + +slots.misorientation_angle = Slot(uri=COREMETA4CAT.misorientation_angle, name="misorientation_angle", curie=COREMETA4CAT.curie('misorientation_angle'), + model_uri=COREMETA4CAT.misorientation_angle, domain=None, range=Optional[Union[float, list[float]]]) + +slots.grain_boundary_energy = Slot(uri=COREMETA4CAT.grain_boundary_energy, name="grain_boundary_energy", curie=COREMETA4CAT.curie('grain_boundary_energy'), + model_uri=COREMETA4CAT.grain_boundary_energy, domain=None, range=Optional[Union[float, list[float]]]) + +slots.simulation_cell_size = Slot(uri=COREMETA4CAT.simulation_cell_size, name="simulation_cell_size", curie=COREMETA4CAT.curie('simulation_cell_size'), + model_uri=COREMETA4CAT.simulation_cell_size, domain=None, range=Optional[Union[str, list[str]]]) + +slots.gb_excess_volume = Slot(uri=COREMETA4CAT.gb_excess_volume, name="gb_excess_volume", curie=COREMETA4CAT.curie('gb_excess_volume'), + model_uri=COREMETA4CAT.gb_excess_volume, domain=None, range=Optional[Union[float, list[float]]]) + +slots.gb_structural_units = Slot(uri=COREMETA4CAT.gb_structural_units, name="gb_structural_units", curie=COREMETA4CAT.curie('gb_structural_units'), + model_uri=COREMETA4CAT.gb_structural_units, domain=None, range=Optional[Union[str, list[str]]]) + +slots.charge_defect_segregation = Slot(uri=COREMETA4CAT.charge_defect_segregation, name="charge_defect_segregation", curie=COREMETA4CAT.curie('charge_defect_segregation'), + model_uri=COREMETA4CAT.charge_defect_segregation, domain=None, range=Optional[Union[str, list[str]]]) + +slots.smearing_method = Slot(uri=COREMETA4CAT.smearing_method, name="smearing_method", curie=COREMETA4CAT.curie('smearing_method'), + model_uri=COREMETA4CAT.smearing_method, domain=None, range=Optional[Union[str, list[str]]]) + +slots.spin_polarized = Slot(uri=COREMETA4CAT.spin_polarized, name="spin_polarized", curie=COREMETA4CAT.curie('spin_polarized'), + model_uri=COREMETA4CAT.spin_polarized, domain=None, range=Optional[Union[Union[bool, Bool], list[Union[bool, Bool]]]]) + +slots.band_path = Slot(uri=COREMETA4CAT.band_path, name="band_path", curie=COREMETA4CAT.curie('band_path'), + model_uri=COREMETA4CAT.band_path, domain=None, range=Optional[Union[str, list[str]]]) + +slots.fermi_energy = Slot(uri=COREMETA4CAT.fermi_energy, name="fermi_energy", curie=COREMETA4CAT.curie('fermi_energy'), + model_uri=COREMETA4CAT.fermi_energy, domain=None, range=Optional[Union[float, list[float]]]) + +slots.polarization_direction = Slot(uri=COREMETA4CAT.polarization_direction, name="polarization_direction", curie=COREMETA4CAT.curie('polarization_direction'), + model_uri=COREMETA4CAT.polarization_direction, domain=None, range=Optional[Union[str, list[str]]]) + +slots.spontaneous_polarization = Slot(uri=COREMETA4CAT.spontaneous_polarization, name="spontaneous_polarization", curie=COREMETA4CAT.curie('spontaneous_polarization'), + model_uri=COREMETA4CAT.spontaneous_polarization, domain=None, range=Optional[Union[float, list[float]]]) + +slots.reference_structure = Slot(uri=COREMETA4CAT.reference_structure, name="reference_structure", curie=COREMETA4CAT.curie('reference_structure'), + model_uri=COREMETA4CAT.reference_structure, domain=None, range=Optional[Union[str, list[str]]]) + +slots.switching_barrier = Slot(uri=COREMETA4CAT.switching_barrier, name="switching_barrier", curie=COREMETA4CAT.curie('switching_barrier'), + model_uri=COREMETA4CAT.switching_barrier, domain=None, range=Optional[Union[float, list[float]]]) + +slots.coercive_field = Slot(uri=COREMETA4CAT.coercive_field, name="coercive_field", curie=COREMETA4CAT.curie('coercive_field'), + model_uri=COREMETA4CAT.coercive_field, domain=None, range=Optional[Union[float, list[float]]]) + +slots.temperature_dependence = Slot(uri=COREMETA4CAT.temperature_dependence, name="temperature_dependence", curie=COREMETA4CAT.curie('temperature_dependence'), + model_uri=COREMETA4CAT.temperature_dependence, domain=None, range=Optional[Union[str, list[str]]]) + +slots.material_sample = Slot(uri=VOC4CAT['0005056'], name="material_sample", curie=VOC4CAT.curie('0005056'), + model_uri=COREMETA4CAT.material_sample, domain=None, range=Optional[Union[str, list[str]]]) + +slots.structure_model = Slot(uri=COREMETA4CAT.structure_model, name="structure_model", curie=COREMETA4CAT.curie('structure_model'), + model_uri=COREMETA4CAT.structure_model, domain=None, range=Optional[Union[str, list[str]]]) + +slots.smearing_broadening = Slot(uri=COREMETA4CAT.smearing_broadening, name="smearing_broadening", curie=COREMETA4CAT.curie('smearing_broadening'), + model_uri=COREMETA4CAT.smearing_broadening, domain=None, range=Optional[Union[float, list[float]]]) + +slots.direct_indirect = Slot(uri=COREMETA4CAT.direct_indirect, name="direct_indirect", curie=COREMETA4CAT.curie('direct_indirect'), + model_uri=COREMETA4CAT.direct_indirect, domain=None, range=Optional[Union[str, list[str]]]) + +slots.experimental_reference = Slot(uri=COREMETA4CAT.experimental_reference, name="experimental_reference", curie=COREMETA4CAT.curie('experimental_reference'), + model_uri=COREMETA4CAT.experimental_reference, domain=None, range=Optional[Union[float, list[float]]]) + +slots.gw_hybrid_correction = Slot(uri=COREMETA4CAT.gw_hybrid_correction, name="gw_hybrid_correction", curie=COREMETA4CAT.curie('gw_hybrid_correction'), + model_uri=COREMETA4CAT.gw_hybrid_correction, domain=None, range=Optional[Union[Union[bool, Bool], list[Union[bool, Bool]]]]) + +slots.excitonic_correction = Slot(uri=COREMETA4CAT.excitonic_correction, name="excitonic_correction", curie=COREMETA4CAT.curie('excitonic_correction'), + model_uri=COREMETA4CAT.excitonic_correction, domain=None, range=Optional[Union[float, list[float]]]) + +slots.access_URL = Slot(uri=DCAT.accessURL, name="access_URL", curie=DCAT.curie('accessURL'), + model_uri=COREMETA4CAT.access_URL, domain=None, range=Optional[str]) + +slots.access_rights = Slot(uri=DCTERMS.accessRights, name="access_rights", curie=DCTERMS.curie('accessRights'), + model_uri=COREMETA4CAT.access_rights, domain=None, range=Optional[str]) + +slots.access_service = Slot(uri=DCAT.accessService, name="access_service", curie=DCAT.curie('accessService'), + model_uri=COREMETA4CAT.access_service, domain=None, range=Optional[str]) + +slots.algorithm = Slot(uri=SPDX.algorithm, name="algorithm", curie=SPDX.curie('algorithm'), + model_uri=COREMETA4CAT.algorithm, domain=None, range=Optional[str]) + +slots.applicable_legislation = Slot(uri=DCATAP.applicableLegislation, name="applicable_legislation", curie=DCATAP.curie('applicableLegislation'), + model_uri=COREMETA4CAT.applicable_legislation, domain=None, range=Optional[str]) + +slots.application_profile = Slot(uri=DCTERMS.conformsTo, name="application_profile", curie=DCTERMS.curie('conformsTo'), + model_uri=COREMETA4CAT.application_profile, domain=None, range=Optional[str]) + +slots.availability = Slot(uri=DCATAP.availability, name="availability", curie=DCATAP.curie('availability'), + model_uri=COREMETA4CAT.availability, domain=None, range=Optional[str]) + +slots.bbox = Slot(uri=DCAT.bbox, name="bbox", curie=DCAT.curie('bbox'), + model_uri=COREMETA4CAT.bbox, domain=None, range=Optional[str]) + +slots.beginning = Slot(uri=TIME.hasBeginning, name="beginning", curie=TIME.curie('hasBeginning'), + model_uri=COREMETA4CAT.beginning, domain=None, range=Optional[str]) + +slots.byte_size = Slot(uri=DCAT.byteSize, name="byte_size", curie=DCAT.curie('byteSize'), + model_uri=COREMETA4CAT.byte_size, domain=None, range=Optional[str]) + +slots.carried_out_by = Slot(uri=PROV.wasAssociatedWith, name="carried_out_by", curie=PROV.curie('wasAssociatedWith'), + model_uri=COREMETA4CAT.carried_out_by, domain=None, range=Optional[Union[dict[Union[str, AgenticEntityId], Union[dict, AgenticEntity]], list[Union[dict, AgenticEntity]]]]) + +slots.catalogue = Slot(uri=DCAT.catalog, name="catalogue", curie=DCAT.curie('catalog'), + model_uri=COREMETA4CAT.catalogue, domain=None, range=Optional[str]) + +slots.centroid = Slot(uri=DCAT.centroid, name="centroid", curie=DCAT.curie('centroid'), + model_uri=COREMETA4CAT.centroid, domain=None, range=Optional[str]) + +slots.change_type = Slot(uri=ADMS.status, name="change_type", curie=ADMS.curie('status'), + model_uri=COREMETA4CAT.change_type, domain=None, range=Optional[str]) + +slots.checksum = Slot(uri=SPDX.checksum, name="checksum", curie=SPDX.curie('checksum'), + model_uri=COREMETA4CAT.checksum, domain=None, range=Optional[str]) + +slots.checksum_value = Slot(uri=SPDX.checksumValue, name="checksum_value", curie=SPDX.curie('checksumValue'), + model_uri=COREMETA4CAT.checksum_value, domain=None, range=Optional[str]) + +slots.compression_format = Slot(uri=DCAT.compressFormat, name="compression_format", curie=DCAT.curie('compressFormat'), + model_uri=COREMETA4CAT.compression_format, domain=None, range=Optional[str]) + +slots.conforms_to = Slot(uri=DCTERMS.conformsTo, name="conforms_to", curie=DCTERMS.curie('conformsTo'), + model_uri=COREMETA4CAT.conforms_to, domain=None, range=Optional[str]) + +slots.contact_point = Slot(uri=DCAT.contactPoint, name="contact_point", curie=DCAT.curie('contactPoint'), + model_uri=COREMETA4CAT.contact_point, domain=None, range=Optional[str]) + +slots.creator = Slot(uri=DCTERMS.creator, name="creator", curie=DCTERMS.curie('creator'), + model_uri=COREMETA4CAT.creator, domain=None, range=Optional[str]) + +slots.dataset_distribution = Slot(uri=DCAT.distribution, name="dataset_distribution", curie=DCAT.curie('distribution'), + model_uri=COREMETA4CAT.dataset_distribution, domain=None, range=Optional[str]) + +slots.description = Slot(uri=DCTERMS.description, name="description", curie=DCTERMS.curie('description'), + model_uri=COREMETA4CAT.description, domain=None, range=Optional[str]) + +slots.documentation = Slot(uri=FOAF.page, name="documentation", curie=FOAF.curie('page'), + model_uri=COREMETA4CAT.documentation, domain=None, range=Optional[str]) + +slots.download_URL = Slot(uri=DCAT.downloadURL, name="download_URL", curie=DCAT.curie('downloadURL'), + model_uri=COREMETA4CAT.download_URL, domain=None, range=Optional[str]) + +slots.end = Slot(uri=TIME.hasEnd, name="end", curie=TIME.curie('hasEnd'), + model_uri=COREMETA4CAT.end, domain=None, range=Optional[str]) + +slots.end_date = Slot(uri=DCAT.endDate, name="end_date", curie=DCAT.curie('endDate'), + model_uri=COREMETA4CAT.end_date, domain=None, range=Optional[str]) + +slots.endpoint_URL = Slot(uri=DCAT.endpointURL, name="endpoint_URL", curie=DCAT.curie('endpointURL'), + model_uri=COREMETA4CAT.endpoint_URL, domain=None, range=Optional[str]) + +slots.endpoint_description = Slot(uri=DCAT.endpointDescription, name="endpoint_description", curie=DCAT.curie('endpointDescription'), + model_uri=COREMETA4CAT.endpoint_description, domain=None, range=Optional[str]) + +slots.evaluated_activity = Slot(uri=PROV.wasInformedBy, name="evaluated_activity", curie=PROV.curie('wasInformedBy'), + model_uri=COREMETA4CAT.evaluated_activity, domain=None, range=Optional[Union[dict[Union[str, EvaluatedActivityId], Union[dict, EvaluatedActivity]], list[Union[dict, EvaluatedActivity]]]]) + +slots.evaluated_entity = Slot(uri=PROV.used, name="evaluated_entity", curie=PROV.curie('used'), + model_uri=COREMETA4CAT.evaluated_entity, domain=None, range=Optional[Union[dict[Union[str, EvaluatedEntityId], Union[dict, EvaluatedEntity]], list[Union[dict, EvaluatedEntity]]]]) + +slots.format = Slot(uri=DCTERMS.format, name="format", curie=DCTERMS.curie('format'), + model_uri=COREMETA4CAT.format, domain=None, range=Optional[str]) + +slots.frequency = Slot(uri=DCTERMS.accrualPeriodicity, name="frequency", curie=DCTERMS.curie('accrualPeriodicity'), + model_uri=COREMETA4CAT.frequency, domain=None, range=Optional[str]) + +slots.geographical_coverage = Slot(uri=DCTERMS.spatial, name="geographical_coverage", curie=DCTERMS.curie('spatial'), + model_uri=COREMETA4CAT.geographical_coverage, domain=None, range=Optional[str]) + +slots.geometry = Slot(uri=LOCN.geometry, name="geometry", curie=LOCN.curie('geometry'), + model_uri=COREMETA4CAT.geometry, domain=None, range=Optional[str]) + +slots.had_input_activity = Slot(uri=PROV.wasInformedBy, name="had_input_activity", curie=PROV.curie('wasInformedBy'), + model_uri=COREMETA4CAT.had_input_activity, domain=None, range=Optional[Union[dict[Union[str, ActivityId], Union[dict, Activity]], list[Union[dict, Activity]]]]) + +slots.had_input_entity = Slot(uri=PROV.used, name="had_input_entity", curie=PROV.curie('used'), + model_uri=COREMETA4CAT.had_input_entity, domain=None, range=Optional[Union[dict[Union[str, EntityId], Union[dict, Entity]], list[Union[dict, Entity]]]]) + +slots.had_output_entity = Slot(uri=PROV.generated, name="had_output_entity", curie=PROV.curie('generated'), + model_uri=COREMETA4CAT.had_output_entity, domain=None, range=Optional[Union[dict[Union[str, EntityId], Union[dict, Entity]], list[Union[dict, Entity]]]]) + +slots.had_role = Slot(uri=DCAT.hadRole, name="had_role", curie=DCAT.curie('hadRole'), + model_uri=COREMETA4CAT.had_role, domain=None, range=Optional[str]) + +slots.has_dataset = Slot(uri=DCAT.dataset, name="has_dataset", curie=DCAT.curie('dataset'), + model_uri=COREMETA4CAT.has_dataset, domain=None, range=Optional[str]) + +slots.has_part = Slot(uri=DCTERMS.hasPart, name="has_part", curie=DCTERMS.curie('hasPart'), + model_uri=COREMETA4CAT.has_part, domain=None, range=Optional[Union[str, ActivityId]]) + +slots.has_policy = Slot(uri=ODRL.hasPolicy, name="has_policy", curie=ODRL.curie('hasPolicy'), + model_uri=COREMETA4CAT.has_policy, domain=None, range=Optional[str]) + +slots.has_qualitative_attribute = Slot(uri=DCTERMS.relation, name="has_qualitative_attribute", curie=DCTERMS.curie('relation'), + model_uri=COREMETA4CAT.has_qualitative_attribute, domain=None, range=Optional[Union[Union[dict, QualitativeAttribute], list[Union[dict, QualitativeAttribute]]]]) + +slots.has_quantitative_attribute = Slot(uri=DCTERMS.relation, name="has_quantitative_attribute", curie=DCTERMS.curie('relation'), + model_uri=COREMETA4CAT.has_quantitative_attribute, domain=None, range=Optional[Union[Union[dict, QuantitativeAttribute], list[Union[dict, QuantitativeAttribute]]]]) + +slots.has_version = Slot(uri=DCAT.hasVersion, name="has_version", curie=DCAT.curie('hasVersion'), + model_uri=COREMETA4CAT.has_version, domain=None, range=Optional[str]) + +slots.homepage = Slot(uri=FOAF.homepage, name="homepage", curie=FOAF.curie('homepage'), + model_uri=COREMETA4CAT.homepage, domain=None, range=Optional[str]) + +slots.id = Slot(uri=DCATAPPLUS.id, name="id", curie=DCATAPPLUS.curie('id'), + model_uri=COREMETA4CAT.id, domain=None, range=URIRef) + +slots.identifier = Slot(uri=DCTERMS.identifier, name="identifier", curie=DCTERMS.curie('identifier'), + model_uri=COREMETA4CAT.identifier, domain=None, range=Optional[str]) + +slots.in_series = Slot(uri=DCAT.inSeries, name="in_series", curie=DCAT.curie('inSeries'), + model_uri=COREMETA4CAT.in_series, domain=None, range=Optional[str]) + +slots.is_about_activity = Slot(uri=DCTERMS.subject, name="is_about_activity", curie=DCTERMS.curie('subject'), + model_uri=COREMETA4CAT.is_about_activity, domain=None, range=Optional[Union[dict[Union[str, EvaluatedActivityId], Union[dict, EvaluatedActivity]], list[Union[dict, EvaluatedActivity]]]]) + +slots.is_about_entity = Slot(uri=DCTERMS.subject, name="is_about_entity", curie=DCTERMS.curie('subject'), + model_uri=COREMETA4CAT.is_about_entity, domain=None, range=Optional[Union[dict[Union[str, EvaluatedEntityId], Union[dict, EvaluatedEntity]], list[Union[dict, EvaluatedEntity]]]]) + +slots.is_referenced_by = Slot(uri=DCTERMS.isReferencedBy, name="is_referenced_by", curie=DCTERMS.curie('isReferencedBy'), + model_uri=COREMETA4CAT.is_referenced_by, domain=None, range=Optional[str]) + +slots.keyword = Slot(uri=DCAT.keyword, name="keyword", curie=DCAT.curie('keyword'), + model_uri=COREMETA4CAT.keyword, domain=None, range=Optional[str]) + +slots.landing_page = Slot(uri=DCAT.landingPage, name="landing_page", curie=DCAT.curie('landingPage'), + model_uri=COREMETA4CAT.landing_page, domain=None, range=Optional[str]) + +slots.language = Slot(uri=DCTERMS.language, name="language", curie=DCTERMS.curie('language'), + model_uri=COREMETA4CAT.language, domain=None, range=Optional[str]) + +slots.licence = Slot(uri=DCTERMS.license, name="licence", curie=DCTERMS.curie('license'), + model_uri=COREMETA4CAT.licence, domain=None, range=Optional[str]) + +slots.linked_schemas = Slot(uri=DCTERMS.conformsTo, name="linked_schemas", curie=DCTERMS.curie('conformsTo'), + model_uri=COREMETA4CAT.linked_schemas, domain=None, range=Optional[str]) + +slots.listing_date = Slot(uri=DCTERMS.issued, name="listing_date", curie=DCTERMS.curie('issued'), + model_uri=COREMETA4CAT.listing_date, domain=None, range=Optional[str]) + +slots.media_type = Slot(uri=DCAT.mediaType, name="media_type", curie=DCAT.curie('mediaType'), + model_uri=COREMETA4CAT.media_type, domain=None, range=Optional[str]) + +slots.modification_date = Slot(uri=DCTERMS.modified, name="modification_date", curie=DCTERMS.curie('modified'), + model_uri=COREMETA4CAT.modification_date, domain=None, range=Optional[str]) + +slots.name = Slot(uri=FOAF.name, name="name", curie=FOAF.curie('name'), + model_uri=COREMETA4CAT.name, domain=None, range=Optional[str]) + +slots.notation = Slot(uri=SKOS.notation, name="notation", curie=SKOS.curie('notation'), + model_uri=COREMETA4CAT.notation, domain=None, range=Optional[str]) + +slots.occurred_in = Slot(uri=PROV.atLocation, name="occurred_in", curie=PROV.curie('atLocation'), + model_uri=COREMETA4CAT.occurred_in, domain=None, range=Optional[Union[dict, Surrounding]]) + +slots.other_identifier = Slot(uri=ADMS.identifier, name="other_identifier", curie=ADMS.curie('identifier'), + model_uri=COREMETA4CAT.other_identifier, domain=None, range=Optional[str]) + +slots.packaging_format = Slot(uri=DCAT.packageFormat, name="packaging_format", curie=DCAT.curie('packageFormat'), + model_uri=COREMETA4CAT.packaging_format, domain=None, range=Optional[str]) + +slots.part_of = Slot(uri=DCTERMS.isPartOf, name="part_of", curie=DCTERMS.curie('isPartOf'), + model_uri=COREMETA4CAT.part_of, domain=None, range=Optional[Union[str, ActivityId]]) + +slots.preferred_label = Slot(uri=SKOS.prefLabel, name="preferred_label", curie=SKOS.curie('prefLabel'), + model_uri=COREMETA4CAT.preferred_label, domain=None, range=Optional[str]) + +slots.primary_topic = Slot(uri=FOAF.primaryTopic, name="primary_topic", curie=FOAF.curie('primaryTopic'), + model_uri=COREMETA4CAT.primary_topic, domain=None, range=Optional[str]) + +slots.provenance = Slot(uri=DCTERMS.provenance, name="provenance", curie=DCTERMS.curie('provenance'), + model_uri=COREMETA4CAT.provenance, domain=None, range=Optional[str]) + +slots.publisher = Slot(uri=DCTERMS.publisher, name="publisher", curie=DCTERMS.curie('publisher'), + model_uri=COREMETA4CAT.publisher, domain=None, range=Optional[str]) + +slots.qualified_attribution = Slot(uri=PROV.qualifiedAttribution, name="qualified_attribution", curie=PROV.curie('qualifiedAttribution'), + model_uri=COREMETA4CAT.qualified_attribution, domain=None, range=Optional[str]) + +slots.qualified_relation = Slot(uri=DCAT.qualifiedRelation, name="qualified_relation", curie=DCAT.curie('qualifiedRelation'), + model_uri=COREMETA4CAT.qualified_relation, domain=None, range=Optional[str]) + +slots.rdf_type = Slot(uri=RDF.type, name="rdf_type", curie=RDF.curie('type'), + model_uri=COREMETA4CAT.rdf_type, domain=None, range=Optional[Union[dict, DefinedTerm]]) + +slots.realized_plan = Slot(uri=PROV.used, name="realized_plan", curie=PROV.curie('used'), + model_uri=COREMETA4CAT.realized_plan, domain=None, range=Optional[Union[dict, Plan]]) + +slots.record = Slot(uri=DCAT.record, name="record", curie=DCAT.curie('record'), + model_uri=COREMETA4CAT.record, domain=None, range=Optional[str]) + +slots.related_resource = Slot(uri=DCTERMS.relation, name="related_resource", curie=DCTERMS.curie('relation'), + model_uri=COREMETA4CAT.related_resource, domain=None, range=Optional[str]) + +slots.relation = Slot(uri=DCTERMS.relation, name="relation", curie=DCTERMS.curie('relation'), + model_uri=COREMETA4CAT.relation, domain=None, range=Optional[str]) + +slots.release_date = Slot(uri=DCTERMS.issued, name="release_date", curie=DCTERMS.curie('issued'), + model_uri=COREMETA4CAT.release_date, domain=None, range=Optional[str]) + +slots.rights = Slot(uri=DCTERMS.rights, name="rights", curie=DCTERMS.curie('rights'), + model_uri=COREMETA4CAT.rights, domain=None, range=Optional[str]) + +slots.sample = Slot(uri=ADMS.sample, name="sample", curie=ADMS.curie('sample'), + model_uri=COREMETA4CAT.sample, domain=None, range=Optional[str]) + +slots.serves_dataset = Slot(uri=DCAT.servesDataset, name="serves_dataset", curie=DCAT.curie('servesDataset'), + model_uri=COREMETA4CAT.serves_dataset, domain=None, range=Optional[str]) + +slots.service = Slot(uri=DCAT.service, name="service", curie=DCAT.curie('service'), + model_uri=COREMETA4CAT.service, domain=None, range=Optional[str]) + +slots.source = Slot(uri=DCTERMS.source, name="source", curie=DCTERMS.curie('source'), + model_uri=COREMETA4CAT.source, domain=None, range=Optional[str]) + +slots.source_metadata = Slot(uri=DCTERMS.source, name="source_metadata", curie=DCTERMS.curie('source'), + model_uri=COREMETA4CAT.source_metadata, domain=None, range=Optional[str]) + +slots.spatial_resolution = Slot(uri=DCAT.spatialResolutionInMeters, name="spatial_resolution", curie=DCAT.curie('spatialResolutionInMeters'), + model_uri=COREMETA4CAT.spatial_resolution, domain=None, range=Optional[str]) + +slots.start_date = Slot(uri=DCAT.startDate, name="start_date", curie=DCAT.curie('startDate'), + model_uri=COREMETA4CAT.start_date, domain=None, range=Optional[str]) + +slots.status = Slot(uri=ADMS.status, name="status", curie=ADMS.curie('status'), + model_uri=COREMETA4CAT.status, domain=None, range=Optional[str]) + +slots.temporal_coverage = Slot(uri=DCTERMS.temporal, name="temporal_coverage", curie=DCTERMS.curie('temporal'), + model_uri=COREMETA4CAT.temporal_coverage, domain=None, range=Optional[str]) + +slots.temporal_resolution = Slot(uri=DCAT.temporalResolution, name="temporal_resolution", curie=DCAT.curie('temporalResolution'), + model_uri=COREMETA4CAT.temporal_resolution, domain=None, range=Optional[str]) + +slots.theme = Slot(uri=DCAT.theme, name="theme", curie=DCAT.curie('theme'), + model_uri=COREMETA4CAT.theme, domain=None, range=Optional[str]) + +slots.themes = Slot(uri=DCAT.themeTaxonomy, name="themes", curie=DCAT.curie('themeTaxonomy'), + model_uri=COREMETA4CAT.themes, domain=None, range=Optional[str]) + +slots.title = Slot(uri=DCTERMS.title, name="title", curie=DCTERMS.curie('title'), + model_uri=COREMETA4CAT.title, domain=None, range=Optional[str]) + +slots.type = Slot(uri=DCTERMS.type, name="type", curie=DCTERMS.curie('type'), + model_uri=COREMETA4CAT.type, domain=None, range=Optional[str]) + +slots.value = Slot(uri=PROV.value, name="value", curie=PROV.curie('value'), + model_uri=COREMETA4CAT.value, domain=None, range=Optional[str]) + +slots.version = Slot(uri=DCAT.version, name="version", curie=DCAT.curie('version'), + model_uri=COREMETA4CAT.version, domain=None, range=Optional[str]) + +slots.version_notes = Slot(uri=ADMS.versionNotes, name="version_notes", curie=ADMS.curie('versionNotes'), + model_uri=COREMETA4CAT.version_notes, domain=None, range=Optional[str]) + +slots.was_generated_by = Slot(uri=PROV.wasGeneratedBy, name="was_generated_by", curie=PROV.curie('wasGeneratedBy'), + model_uri=COREMETA4CAT.was_generated_by, domain=None, range=Optional[str]) + +slots.composed_of = Slot(uri=BFO['0000051'], name="composed_of", curie=BFO.curie('0000051'), + model_uri=COREMETA4CAT.composed_of, domain=None, range=Optional[Union[dict[Union[str, ChemicalEntityId], Union[dict, ChemicalEntity]], list[Union[dict, ChemicalEntity]]]]) + +slots.has_concentration = Slot(uri=SIO['000008'], name="has_concentration", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.has_concentration, domain=None, range=Optional[Union[Union[dict, Concentration], list[Union[dict, Concentration]]]]) + +slots.has_amount = Slot(uri=SIO['000008'], name="has_amount", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.has_amount, domain=None, range=Optional[Union[Union[dict, AmountOfSubstance], list[Union[dict, AmountOfSubstance]]]]) + +slots.has_ph_value = Slot(uri=SIO['000008'], name="has_ph_value", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.has_ph_value, domain=None, range=Optional[Union[Union[dict, PHValue], list[Union[dict, PHValue]]]]) + +slots.inchi = Slot(uri=SIO['000008'], name="inchi", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.inchi, domain=None, range=Optional[Union[Union[dict, InChi], list[Union[dict, InChi]]]]) + +slots.inchikey = Slot(uri=SIO['000008'], name="inchikey", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.inchikey, domain=None, range=Optional[Union[Union[dict, InChIKey], list[Union[dict, InChIKey]]]]) + +slots.smiles = Slot(uri=SIO['000008'], name="smiles", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.smiles, domain=None, range=Optional[Union[Union[dict, SMILES], list[Union[dict, SMILES]]]]) + +slots.molecular_formula = Slot(uri=SIO['000008'], name="molecular_formula", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.molecular_formula, domain=None, range=Optional[Union[Union[dict, MolecularFormula], list[Union[dict, MolecularFormula]]]]) + +slots.iupac_name = Slot(uri=SIO['000008'], name="iupac_name", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.iupac_name, domain=None, range=Optional[Union[Union[dict, IUPACName], list[Union[dict, IUPACName]]]]) + +slots.has_molar_mass = Slot(uri=SIO['000008'], name="has_molar_mass", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.has_molar_mass, domain=None, range=Optional[Union[Union[dict, MolarMass], list[Union[dict, MolarMass]]]]) + +slots.used_starting_material = Slot(uri=RO['0004009'], name="used_starting_material", curie=RO.curie('0004009'), + model_uri=COREMETA4CAT.used_starting_material, domain=None, range=Optional[Union[dict[Union[str, StartingMaterialId], Union[dict, StartingMaterial]], list[Union[dict, StartingMaterial]]]]) + +slots.used_reactant = Slot(uri=RO['0004009'], name="used_reactant", curie=RO.curie('0004009'), + model_uri=COREMETA4CAT.used_reactant, domain=None, range=Optional[Union[dict[Union[str, ReagentId], Union[dict, Reagent]], list[Union[dict, Reagent]]]]) + +slots.generated_product = Slot(uri=RO['0004008'], name="generated_product", curie=RO.curie('0004008'), + model_uri=COREMETA4CAT.generated_product, domain=None, range=Optional[Union[dict[Union[str, ChemicalProductId], Union[dict, ChemicalProduct]], list[Union[dict, ChemicalProduct]]]]) + +slots.used_catalyst = Slot(uri=RXNO['0000425'], name="used_catalyst", curie=RXNO.curie('0000425'), + model_uri=COREMETA4CAT.used_catalyst, domain=None, range=Optional[Union[dict[Union[str, CatalystId], Union[dict, Catalyst]], list[Union[dict, Catalyst]]]]) + +slots.used_solvent = Slot(uri=PROV.wasAssociatedWith, name="used_solvent", curie=PROV.curie('wasAssociatedWith'), + model_uri=COREMETA4CAT.used_solvent, domain=None, range=Optional[Union[dict[Union[str, DissolvingSubstanceId], Union[dict, DissolvingSubstance]], list[Union[dict, DissolvingSubstance]]]]) + +slots.has_duration = Slot(uri=SCHEMA.duration, name="has_duration", curie=SCHEMA.curie('duration'), + model_uri=COREMETA4CAT.has_duration, domain=None, range=Optional[str]) + +slots.used_reactor = Slot(uri=PROV.wasAssociatedWith, name="used_reactor", curie=PROV.curie('wasAssociatedWith'), + model_uri=COREMETA4CAT.used_reactor, domain=None, range=Optional[Union[dict[Union[str, ReactorId], Union[dict, Reactor]], list[Union[dict, Reactor]]]]) + +slots.has_yield = Slot(uri=SIO['000008'], name="has_yield", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.has_yield, domain=None, range=Optional[Union[Union[dict, Yield], list[Union[dict, Yield]]]]) + +slots.has_molar_equivalent = Slot(uri=SIO['000008'], name="has_molar_equivalent", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.has_molar_equivalent, domain=None, range=Optional[Union[Union[dict, MolarEquivalent], list[Union[dict, MolarEquivalent]]]]) + +slots.has_percentage_of_total = Slot(uri=SIO['000008'], name="has_percentage_of_total", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.has_percentage_of_total, domain=None, range=Optional[Union[Union[dict, PercentageOfTotal], list[Union[dict, PercentageOfTotal]]]]) + +slots.has_reaction_step = Slot(uri=BFO['0000051'], name="has_reaction_step", curie=BFO.curie('0000051'), + model_uri=COREMETA4CAT.has_reaction_step, domain=None, range=Optional[Union[str, ChemicalReactionId]]) + +slots.alternative_label = Slot(uri=SKOS.altLabel, name="alternative_label", curie=SKOS.curie('altLabel'), + model_uri=COREMETA4CAT.alternative_label, domain=None, range=Optional[str]) + +slots.has_physical_state = Slot(uri=SIO['000008'], name="has_physical_state", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.has_physical_state, domain=None, range=Optional[Union[str, "PhysicalStateEnum"]]) + +slots.has_temperature = Slot(uri=SIO['000008'], name="has_temperature", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.has_temperature, domain=None, range=Optional[Union[Union[dict, Temperature], list[Union[dict, Temperature]]]]) + +slots.has_mass = Slot(uri=SIO['000008'], name="has_mass", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.has_mass, domain=None, range=Optional[Union[Union[dict, Mass], list[Union[dict, Mass]]]]) + +slots.has_volume = Slot(uri=SIO['000008'], name="has_volume", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.has_volume, domain=None, range=Optional[Union[Union[dict, Volume], list[Union[dict, Volume]]]]) + +slots.has_density = Slot(uri=SIO['000008'], name="has_density", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.has_density, domain=None, range=Optional[Union[Union[dict, Density], list[Union[dict, Density]]]]) + +slots.has_pressure = Slot(uri=SIO['000008'], name="has_pressure", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.has_pressure, domain=None, range=Optional[Union[Union[dict, Pressure], list[Union[dict, Pressure]]]]) + +slots.derived_from = Slot(uri=PROV.wasDerivedFrom, name="derived_from", curie=PROV.curie('wasDerivedFrom'), + model_uri=COREMETA4CAT.derived_from, domain=None, range=Optional[Union[dict, Entity]]) + +slots.definedTerm__from_CV = Slot(uri=SCHEMA.inDefinedTermSet, name="definedTerm__from_CV", curie=SCHEMA.curie('inDefinedTermSet'), + model_uri=COREMETA4CAT.definedTerm__from_CV, domain=None, range=Optional[Union[str, URIorCURIE]]) + +slots.quantitativeAttribute__has_quantity_type = Slot(uri=QUDT.hasQuantityKind, name="quantitativeAttribute__has_quantity_type", curie=QUDT.curie('hasQuantityKind'), + model_uri=COREMETA4CAT.quantitativeAttribute__has_quantity_type, domain=None, range=Union[str, DefinedTermId]) + +slots.quantitativeAttribute__unit = Slot(uri=QUDT.unit, name="quantitativeAttribute__unit", curie=QUDT.curie('unit'), + model_uri=COREMETA4CAT.quantitativeAttribute__unit, domain=None, range=Optional[Union[str, DefinedTermId]]) + +slots.product_identification_method = Slot(uri=COREMETA4CAT.product_identification_method, name="product_identification_method", curie=COREMETA4CAT.curie('product_identification_method'), + model_uri=COREMETA4CAT.product_identification_method, domain=None, range=Union[Union[dict, ProductIdentificationMethod], list[Union[dict, ProductIdentificationMethod]]]) + +slots.CatalysisDataset_rdf_type = Slot(uri=RDF.type, name="CatalysisDataset_rdf_type", curie=RDF.curie('type'), + model_uri=COREMETA4CAT.CatalysisDataset_rdf_type, domain=CatalysisDataset, range=Optional[Union[dict, "DefinedTerm"]]) + +slots.CatalysisDataset_was_generated_by = Slot(uri=PROV.wasGeneratedBy, name="CatalysisDataset_was_generated_by", curie=PROV.curie('wasGeneratedBy'), + model_uri=COREMETA4CAT.CatalysisDataset_was_generated_by, domain=CatalysisDataset, range=Optional[Union[dict[Union[str, DataGeneratingActivityId], Union[dict, DataGeneratingActivity]], list[Union[dict, DataGeneratingActivity]]]]) + +slots.CatalysisDataset_is_about_activity = Slot(uri=DCTERMS.subject, name="CatalysisDataset_is_about_activity", curie=DCTERMS.curie('subject'), + model_uri=COREMETA4CAT.CatalysisDataset_is_about_activity, domain=CatalysisDataset, range=Optional[Union[dict[Union[str, EvaluatedActivityId], Union[dict, "EvaluatedActivity"]], list[Union[dict, "EvaluatedActivity"]]]]) + +slots.CatalysisDataset_is_about_entity = Slot(uri=DCTERMS.subject, name="CatalysisDataset_is_about_entity", curie=DCTERMS.curie('subject'), + model_uri=COREMETA4CAT.CatalysisDataset_is_about_entity, domain=CatalysisDataset, range=Optional[Union[dict[Union[str, EvaluatedEntityId], Union[dict, "EvaluatedEntity"]], list[Union[dict, "EvaluatedEntity"]]]]) + +slots.Synthesis_nominal_composition = Slot(uri=COREMETA4CAT.nominal_composition, name="Synthesis_nominal_composition", curie=COREMETA4CAT.curie('nominal_composition'), + model_uri=COREMETA4CAT.Synthesis_nominal_composition, domain=Synthesis, range=Union[str, list[str]]) + +slots.Synthesis_catalyst_measured_properties = Slot(uri=COREMETA4CAT.catalyst_measured_properties, name="Synthesis_catalyst_measured_properties", curie=COREMETA4CAT.curie('catalyst_measured_properties'), + model_uri=COREMETA4CAT.Synthesis_catalyst_measured_properties, domain=Synthesis, range=Union[str, list[str]]) + +slots.Synthesis_had_input_entity = Slot(uri=PROV.used, name="Synthesis_had_input_entity", curie=PROV.curie('used'), + model_uri=COREMETA4CAT.Synthesis_had_input_entity, domain=Synthesis, range=Union[dict[Union[str, PrecursorId], Union[dict, "Precursor"]], list[Union[dict, "Precursor"]]]) + +slots.Synthesis_had_output_entity = Slot(uri=PROV.generated, name="Synthesis_had_output_entity", curie=PROV.curie('generated'), + model_uri=COREMETA4CAT.Synthesis_had_output_entity, domain=Synthesis, range=Optional[Union[dict[Union[str, CatalystSampleId], Union[dict, "CatalystSample"]], list[Union[dict, "CatalystSample"]]]]) + +slots.Synthesis_realized_plan = Slot(uri=PROV.used, name="Synthesis_realized_plan", curie=PROV.curie('used'), + model_uri=COREMETA4CAT.Synthesis_realized_plan, domain=Synthesis, range=Union[dict, "PreparationMethod"]) + +slots.Synthesis_storage_conditions = Slot(uri=COREMETA4CAT.storage_conditions, name="Synthesis_storage_conditions", curie=COREMETA4CAT.curie('storage_conditions'), + model_uri=COREMETA4CAT.Synthesis_storage_conditions, domain=Synthesis, range=Optional[Union[str, list[str]]]) + +slots.Precursor_precursor_quantity = Slot(uri=COREMETA4CAT.precursor_quantity, name="Precursor_precursor_quantity", curie=COREMETA4CAT.curie('precursor_quantity'), + model_uri=COREMETA4CAT.Precursor_precursor_quantity, domain=Precursor, range=Union[float, list[float]]) + +slots.CatalystSample_derived_from = Slot(uri=PROV.wasDerivedFrom, name="CatalystSample_derived_from", curie=PROV.curie('wasDerivedFrom'), + model_uri=COREMETA4CAT.CatalystSample_derived_from, domain=CatalystSample, range=Optional[Union[dict, MaterialSample]]) + +slots.Characterization_equipment = Slot(uri=VOC4CAT['0000187'], name="Characterization_equipment", curie=VOC4CAT.curie('0000187'), + model_uri=COREMETA4CAT.Characterization_equipment, domain=Characterization, range=Union[str, list[str]]) + +slots.Characterization_evaluated_entity = Slot(uri=PROV.used, name="Characterization_evaluated_entity", curie=PROV.curie('used'), + model_uri=COREMETA4CAT.Characterization_evaluated_entity, domain=Characterization, range=Optional[Union[dict[Union[str, EvaluatedEntityId], Union[dict, "EvaluatedEntity"]], list[Union[dict, "EvaluatedEntity"]]]]) + +slots.Characterization_realized_plan = Slot(uri=PROV.used, name="Characterization_realized_plan", curie=PROV.curie('used'), + model_uri=COREMETA4CAT.Characterization_realized_plan, domain=Characterization, range=Union[dict, "CharacterizationTechnique"]) + +slots.Characterization_rdf_type = Slot(uri=RDF.type, name="Characterization_rdf_type", curie=RDF.curie('type'), + model_uri=COREMETA4CAT.Characterization_rdf_type, domain=Characterization, range=Optional[Union[dict, "DefinedTerm"]]) + +slots.Reaction_rdf_type = Slot(uri=RDF.type, name="Reaction_rdf_type", curie=RDF.curie('type'), + model_uri=COREMETA4CAT.Reaction_rdf_type, domain=Reaction, range=Optional[Union[dict, DefinedTerm]]) + +slots.Reaction_carried_out_by = Slot(uri=PROV.wasAssociatedWith, name="Reaction_carried_out_by", curie=PROV.curie('wasAssociatedWith'), + model_uri=COREMETA4CAT.Reaction_carried_out_by, domain=Reaction, range=Union[dict[Union[str, ReactorDesignTypeId], Union[dict, ReactorDesignType]], list[Union[dict, ReactorDesignType]]]) + +slots.Reaction_had_input_entity = Slot(uri=PROV.used, name="Reaction_had_input_entity", curie=PROV.curie('used'), + model_uri=COREMETA4CAT.Reaction_had_input_entity, domain=Reaction, range=Optional[Union[dict[Union[str, EvaluatedEntityId], Union[dict, "EvaluatedEntity"]], list[Union[dict, "EvaluatedEntity"]]]]) + +slots.Reaction_product_identification_method = Slot(uri=COREMETA4CAT.product_identification_method, name="Reaction_product_identification_method", curie=COREMETA4CAT.curie('product_identification_method'), + model_uri=COREMETA4CAT.Reaction_product_identification_method, domain=Reaction, range=Union[Union[dict, "ProductIdentificationMethod"], list[Union[dict, "ProductIdentificationMethod"]]]) + +slots.Simulation_rdf_type = Slot(uri=RDF.type, name="Simulation_rdf_type", curie=RDF.curie('type'), + model_uri=COREMETA4CAT.Simulation_rdf_type, domain=Simulation, range=Optional[Union[dict, "DefinedTerm"]]) + +slots.Simulation_realized_plan = Slot(uri=PROV.used, name="Simulation_realized_plan", curie=PROV.curie('used'), + model_uri=COREMETA4CAT.Simulation_realized_plan, domain=Simulation, range=Union[Union[dict, "SimulationMethod"], list[Union[dict, "SimulationMethod"]]]) + +slots.Simulation_carried_out_by = Slot(uri=PROV.wasAssociatedWith, name="Simulation_carried_out_by", curie=PROV.curie('wasAssociatedWith'), + model_uri=COREMETA4CAT.Simulation_carried_out_by, domain=Simulation, range=Optional[Union[dict[Union[str, AgenticEntityId], Union[dict, AgenticEntity]], list[Union[dict, AgenticEntity]]]]) + +slots.Simulation_evaluated_entity = Slot(uri=PROV.used, name="Simulation_evaluated_entity", curie=PROV.curie('used'), + model_uri=COREMETA4CAT.Simulation_evaluated_entity, domain=Simulation, range=Optional[Union[dict[Union[str, EvaluatedEntityId], Union[dict, "EvaluatedEntity"]], list[Union[dict, "EvaluatedEntity"]]]]) + +slots.Activity_title = Slot(uri=DCTERMS.title, name="Activity_title", curie=DCTERMS.curie('title'), + model_uri=COREMETA4CAT.Activity_title, domain=Activity, range=Optional[Union[str, list[str]]]) + +slots.Activity_description = Slot(uri=DCTERMS.description, name="Activity_description", curie=DCTERMS.curie('description'), + model_uri=COREMETA4CAT.Activity_description, domain=Activity, range=Optional[Union[str, list[str]]]) + +slots.Activity_has_part = Slot(uri=DCTERMS.hasPart, name="Activity_has_part", curie=DCTERMS.curie('hasPart'), + model_uri=COREMETA4CAT.Activity_has_part, domain=Activity, range=Optional[Union[dict[Union[str, ActivityId], Union[dict, "Activity"]], list[Union[dict, "Activity"]]]]) + +slots.Activity_part_of = Slot(uri=DCTERMS.isPartOf, name="Activity_part_of", curie=DCTERMS.curie('isPartOf'), + model_uri=COREMETA4CAT.Activity_part_of, domain=Activity, range=Optional[Union[dict[Union[str, ActivityId], Union[dict, "Activity"]], list[Union[dict, "Activity"]]]]) + +slots.Activity_other_identifier = Slot(uri=ADMS.identifier, name="Activity_other_identifier", curie=ADMS.curie('identifier'), + model_uri=COREMETA4CAT.Activity_other_identifier, domain=Activity, range=Optional[Union[Union[dict, "Identifier"], list[Union[dict, "Identifier"]]]]) + +slots.Activity_has_qualitative_attribute = Slot(uri=DCTERMS.relation, name="Activity_has_qualitative_attribute", curie=DCTERMS.curie('relation'), + model_uri=COREMETA4CAT.Activity_has_qualitative_attribute, domain=Activity, range=Optional[Union[Union[dict, "QualitativeAttribute"], list[Union[dict, "QualitativeAttribute"]]]]) + +slots.Activity_has_quantitative_attribute = Slot(uri=DCTERMS.relation, name="Activity_has_quantitative_attribute", curie=DCTERMS.curie('relation'), + model_uri=COREMETA4CAT.Activity_has_quantitative_attribute, domain=Activity, range=Optional[Union[Union[dict, "QuantitativeAttribute"], list[Union[dict, "QuantitativeAttribute"]]]]) + +slots.Activity_had_input_entity = Slot(uri=PROV.used, name="Activity_had_input_entity", curie=PROV.curie('used'), + model_uri=COREMETA4CAT.Activity_had_input_entity, domain=Activity, range=Optional[Union[dict[Union[str, EntityId], Union[dict, "Entity"]], list[Union[dict, "Entity"]]]]) + +slots.Activity_had_output_entity = Slot(uri=PROV.generated, name="Activity_had_output_entity", curie=PROV.curie('generated'), + model_uri=COREMETA4CAT.Activity_had_output_entity, domain=Activity, range=Optional[Union[dict[Union[str, EntityId], Union[dict, "Entity"]], list[Union[dict, "Entity"]]]]) + +slots.Activity_had_input_activity = Slot(uri=PROV.wasInformedBy, name="Activity_had_input_activity", curie=PROV.curie('wasInformedBy'), + model_uri=COREMETA4CAT.Activity_had_input_activity, domain=Activity, range=Optional[Union[dict[Union[str, ActivityId], Union[dict, "Activity"]], list[Union[dict, "Activity"]]]]) + +slots.Activity_carried_out_by = Slot(uri=PROV.wasAssociatedWith, name="Activity_carried_out_by", curie=PROV.curie('wasAssociatedWith'), + model_uri=COREMETA4CAT.Activity_carried_out_by, domain=Activity, range=Optional[Union[dict[Union[str, AgenticEntityId], Union[dict, "AgenticEntity"]], list[Union[dict, "AgenticEntity"]]]]) + +slots.Agent_name = Slot(uri=FOAF.name, name="Agent_name", curie=FOAF.curie('name'), + model_uri=COREMETA4CAT.Agent_name, domain=Agent, range=Union[str, list[str]]) + +slots.Agent_type = Slot(uri=DCTERMS.type, name="Agent_type", curie=DCTERMS.curie('type'), + model_uri=COREMETA4CAT.Agent_type, domain=Agent, range=Optional[Union[dict, "Concept"]]) + +slots.AgenticEntity_has_part = Slot(uri=DCTERMS.hasPart, name="AgenticEntity_has_part", curie=DCTERMS.curie('hasPart'), + model_uri=COREMETA4CAT.AgenticEntity_has_part, domain=AgenticEntity, range=Optional[Union[dict[Union[str, AgenticEntityId], Union[dict, "AgenticEntity"]], list[Union[dict, "AgenticEntity"]]]]) + +slots.AgenticEntity_part_of = Slot(uri=DCTERMS.isPartOf, name="AgenticEntity_part_of", curie=DCTERMS.curie('isPartOf'), + model_uri=COREMETA4CAT.AgenticEntity_part_of, domain=AgenticEntity, range=Optional[Union[dict[Union[str, AgenticEntityId], Union[dict, "AgenticEntity"]], list[Union[dict, "AgenticEntity"]]]]) + +slots.AgenticEntity_other_identifier = Slot(uri=ADMS.identifier, name="AgenticEntity_other_identifier", curie=ADMS.curie('identifier'), + model_uri=COREMETA4CAT.AgenticEntity_other_identifier, domain=AgenticEntity, range=Optional[Union[Union[dict, "Identifier"], list[Union[dict, "Identifier"]]]]) + +slots.AnalysisDataset_was_generated_by = Slot(uri=PROV.wasGeneratedBy, name="AnalysisDataset_was_generated_by", curie=PROV.curie('wasGeneratedBy'), + model_uri=COREMETA4CAT.AnalysisDataset_was_generated_by, domain=AnalysisDataset, range=Optional[Union[dict[Union[str, DataAnalysisId], Union[dict, DataAnalysis]], list[Union[dict, DataAnalysis]]]]) + +slots.AnalysisSourceData_was_generated_by = Slot(uri=PROV.wasGeneratedBy, name="AnalysisSourceData_was_generated_by", curie=PROV.curie('wasGeneratedBy'), + model_uri=COREMETA4CAT.AnalysisSourceData_was_generated_by, domain=AnalysisSourceData, range=Optional[Union[dict[Union[str, DataGeneratingActivityId], Union[dict, DataGeneratingActivity]], list[Union[dict, DataGeneratingActivity]]]]) + +slots.Catalogue_applicable_legislation = Slot(uri=DCATAP.applicableLegislation, name="Catalogue_applicable_legislation", curie=DCATAP.curie('applicableLegislation'), + model_uri=COREMETA4CAT.Catalogue_applicable_legislation, domain=Catalogue, range=Optional[Union[dict[Union[str, LegalResourceId], Union[dict, "LegalResource"]], list[Union[dict, "LegalResource"]]]]) + +slots.Catalogue_catalogue = Slot(uri=DCAT.catalog, name="Catalogue_catalogue", curie=DCAT.curie('catalog'), + model_uri=COREMETA4CAT.Catalogue_catalogue, domain=Catalogue, range=Optional[Union[Union[dict, "Catalogue"], list[Union[dict, "Catalogue"]]]]) + +slots.Catalogue_creator = Slot(uri=DCTERMS.creator, name="Catalogue_creator", curie=DCTERMS.curie('creator'), + model_uri=COREMETA4CAT.Catalogue_creator, domain=Catalogue, range=Optional[Union[dict, Agent]]) + +slots.Catalogue_description = Slot(uri=DCTERMS.description, name="Catalogue_description", curie=DCTERMS.curie('description'), + model_uri=COREMETA4CAT.Catalogue_description, domain=Catalogue, range=Union[str, list[str]]) + +slots.Catalogue_geographical_coverage = Slot(uri=DCTERMS.spatial, name="Catalogue_geographical_coverage", curie=DCTERMS.curie('spatial'), + model_uri=COREMETA4CAT.Catalogue_geographical_coverage, domain=Catalogue, range=Optional[Union[Union[dict, "Location"], list[Union[dict, "Location"]]]]) + +slots.Catalogue_has_dataset = Slot(uri=DCAT.dataset, name="Catalogue_has_dataset", curie=DCAT.curie('dataset'), + model_uri=COREMETA4CAT.Catalogue_has_dataset, domain=Catalogue, range=Optional[Union[dict[Union[str, DatasetId], Union[dict, "Dataset"]], list[Union[dict, "Dataset"]]]]) + +slots.Catalogue_has_part = Slot(uri=DCTERMS.hasPart, name="Catalogue_has_part", curie=DCTERMS.curie('hasPart'), + model_uri=COREMETA4CAT.Catalogue_has_part, domain=Catalogue, range=Optional[Union[Union[dict, "Catalogue"], list[Union[dict, "Catalogue"]]]]) + +slots.Catalogue_homepage = Slot(uri=FOAF.homepage, name="Catalogue_homepage", curie=FOAF.curie('homepage'), + model_uri=COREMETA4CAT.Catalogue_homepage, domain=Catalogue, range=Optional[Union[dict, "Document"]]) + +slots.Catalogue_language = Slot(uri=DCTERMS.language, name="Catalogue_language", curie=DCTERMS.curie('language'), + model_uri=COREMETA4CAT.Catalogue_language, domain=Catalogue, range=Optional[Union[Union[dict, "LinguisticSystem"], list[Union[dict, "LinguisticSystem"]]]]) + +slots.Catalogue_licence = Slot(uri=DCTERMS.license, name="Catalogue_licence", curie=DCTERMS.curie('license'), + model_uri=COREMETA4CAT.Catalogue_licence, domain=Catalogue, range=Optional[Union[dict, "LicenseDocument"]]) + +slots.Catalogue_modification_date = Slot(uri=DCTERMS.modified, name="Catalogue_modification_date", curie=DCTERMS.curie('modified'), + model_uri=COREMETA4CAT.Catalogue_modification_date, domain=Catalogue, range=Optional[Union[str, XSDDate]]) + +slots.Catalogue_publisher = Slot(uri=DCTERMS.publisher, name="Catalogue_publisher", curie=DCTERMS.curie('publisher'), + model_uri=COREMETA4CAT.Catalogue_publisher, domain=Catalogue, range=Union[dict, Agent]) + +slots.Catalogue_record = Slot(uri=DCAT.record, name="Catalogue_record", curie=DCAT.curie('record'), + model_uri=COREMETA4CAT.Catalogue_record, domain=Catalogue, range=Optional[Union[Union[dict, "CatalogueRecord"], list[Union[dict, "CatalogueRecord"]]]]) + +slots.Catalogue_release_date = Slot(uri=DCTERMS.issued, name="Catalogue_release_date", curie=DCTERMS.curie('issued'), + model_uri=COREMETA4CAT.Catalogue_release_date, domain=Catalogue, range=Optional[Union[str, XSDDate]]) + +slots.Catalogue_rights = Slot(uri=DCTERMS.rights, name="Catalogue_rights", curie=DCTERMS.curie('rights'), + model_uri=COREMETA4CAT.Catalogue_rights, domain=Catalogue, range=Optional[Union[dict, "RightsStatement"]]) + +slots.Catalogue_service = Slot(uri=DCAT.service, name="Catalogue_service", curie=DCAT.curie('service'), + model_uri=COREMETA4CAT.Catalogue_service, domain=Catalogue, range=Optional[Union[Union[dict, "DataService"], list[Union[dict, "DataService"]]]]) + +slots.Catalogue_temporal_coverage = Slot(uri=DCTERMS.temporal, name="Catalogue_temporal_coverage", curie=DCTERMS.curie('temporal'), + model_uri=COREMETA4CAT.Catalogue_temporal_coverage, domain=Catalogue, range=Optional[Union[Union[dict, "PeriodOfTime"], list[Union[dict, "PeriodOfTime"]]]]) + +slots.Catalogue_themes = Slot(uri=DCAT.themeTaxonomy, name="Catalogue_themes", curie=DCAT.curie('themeTaxonomy'), + model_uri=COREMETA4CAT.Catalogue_themes, domain=Catalogue, range=Optional[Union[Union[dict, "ConceptScheme"], list[Union[dict, "ConceptScheme"]]]]) + +slots.Catalogue_title = Slot(uri=DCTERMS.title, name="Catalogue_title", curie=DCTERMS.curie('title'), + model_uri=COREMETA4CAT.Catalogue_title, domain=Catalogue, range=Union[str, list[str]]) + +slots.CatalogueRecord_application_profile = Slot(uri=DCTERMS.conformsTo, name="CatalogueRecord_application_profile", curie=DCTERMS.curie('conformsTo'), + model_uri=COREMETA4CAT.CatalogueRecord_application_profile, domain=CatalogueRecord, range=Optional[Union[Union[dict, "Standard"], list[Union[dict, "Standard"]]]]) + +slots.CatalogueRecord_change_type = Slot(uri=ADMS.status, name="CatalogueRecord_change_type", curie=ADMS.curie('status'), + model_uri=COREMETA4CAT.CatalogueRecord_change_type, domain=CatalogueRecord, range=Optional[Union[dict, "Concept"]]) + +slots.CatalogueRecord_description = Slot(uri=DCTERMS.description, name="CatalogueRecord_description", curie=DCTERMS.curie('description'), + model_uri=COREMETA4CAT.CatalogueRecord_description, domain=CatalogueRecord, range=Optional[Union[str, list[str]]]) + +slots.CatalogueRecord_language = Slot(uri=DCTERMS.language, name="CatalogueRecord_language", curie=DCTERMS.curie('language'), + model_uri=COREMETA4CAT.CatalogueRecord_language, domain=CatalogueRecord, range=Optional[Union[Union[dict, "LinguisticSystem"], list[Union[dict, "LinguisticSystem"]]]]) + +slots.CatalogueRecord_listing_date = Slot(uri=DCTERMS.issued, name="CatalogueRecord_listing_date", curie=DCTERMS.curie('issued'), + model_uri=COREMETA4CAT.CatalogueRecord_listing_date, domain=CatalogueRecord, range=Optional[Union[str, XSDDate]]) + +slots.CatalogueRecord_modification_date = Slot(uri=DCTERMS.modified, name="CatalogueRecord_modification_date", curie=DCTERMS.curie('modified'), + model_uri=COREMETA4CAT.CatalogueRecord_modification_date, domain=CatalogueRecord, range=Union[str, XSDDate]) + +slots.CatalogueRecord_primary_topic = Slot(uri=FOAF.primaryTopic, name="CatalogueRecord_primary_topic", curie=FOAF.curie('primaryTopic'), + model_uri=COREMETA4CAT.CatalogueRecord_primary_topic, domain=CatalogueRecord, range=Union[dict, Any]) + +slots.CatalogueRecord_source_metadata = Slot(uri=DCTERMS.source, name="CatalogueRecord_source_metadata", curie=DCTERMS.curie('source'), + model_uri=COREMETA4CAT.CatalogueRecord_source_metadata, domain=CatalogueRecord, range=Optional[Union[dict, "CatalogueRecord"]]) + +slots.CatalogueRecord_title = Slot(uri=DCTERMS.title, name="CatalogueRecord_title", curie=DCTERMS.curie('title'), + model_uri=COREMETA4CAT.CatalogueRecord_title, domain=CatalogueRecord, range=Optional[Union[str, list[str]]]) + +slots.Checksum_algorithm = Slot(uri=SPDX.algorithm, name="Checksum_algorithm", curie=SPDX.curie('algorithm'), + model_uri=COREMETA4CAT.Checksum_algorithm, domain=Checksum, range=Union[dict, "ChecksumAlgorithm"]) + +slots.Checksum_checksum_value = Slot(uri=SPDX.checksumValue, name="Checksum_checksum_value", curie=SPDX.curie('checksumValue'), + model_uri=COREMETA4CAT.Checksum_checksum_value, domain=Checksum, range=str) + +slots.ClassifierMixin_type = Slot(uri=DCTERMS.type, name="ClassifierMixin_type", curie=DCTERMS.curie('type'), + model_uri=COREMETA4CAT.ClassifierMixin_type, domain=None, range=Optional[Union[dict, "DefinedTerm"]]) + +slots.Concept_preferred_label = Slot(uri=SKOS.prefLabel, name="Concept_preferred_label", curie=SKOS.curie('prefLabel'), + model_uri=COREMETA4CAT.Concept_preferred_label, domain=Concept, range=Union[str, list[str]]) + +slots.ConceptScheme_title = Slot(uri=DCTERMS.title, name="ConceptScheme_title", curie=DCTERMS.curie('title'), + model_uri=COREMETA4CAT.ConceptScheme_title, domain=ConceptScheme, range=Union[str, list[str]]) + +slots.DataAnalysis_evaluated_entity = Slot(uri=PROV.used, name="DataAnalysis_evaluated_entity", curie=PROV.curie('used'), + model_uri=COREMETA4CAT.DataAnalysis_evaluated_entity, domain=DataAnalysis, range=Optional[Union[dict[Union[str, AnalysisSourceDataId], Union[dict, "AnalysisSourceData"]], list[Union[dict, "AnalysisSourceData"]]]]) + +slots.DataService_access_rights = Slot(uri=DCTERMS.accessRights, name="DataService_access_rights", curie=DCTERMS.curie('accessRights'), + model_uri=COREMETA4CAT.DataService_access_rights, domain=DataService, range=Optional[Union[dict, "RightsStatement"]]) + +slots.DataService_applicable_legislation = Slot(uri=DCATAP.applicableLegislation, name="DataService_applicable_legislation", curie=DCATAP.curie('applicableLegislation'), + model_uri=COREMETA4CAT.DataService_applicable_legislation, domain=DataService, range=Optional[Union[dict[Union[str, LegalResourceId], Union[dict, "LegalResource"]], list[Union[dict, "LegalResource"]]]]) + +slots.DataService_conforms_to = Slot(uri=DCTERMS.conformsTo, name="DataService_conforms_to", curie=DCTERMS.curie('conformsTo'), + model_uri=COREMETA4CAT.DataService_conforms_to, domain=DataService, range=Optional[Union[Union[dict, "Standard"], list[Union[dict, "Standard"]]]]) + +slots.DataService_contact_point = Slot(uri=DCAT.contactPoint, name="DataService_contact_point", curie=DCAT.curie('contactPoint'), + model_uri=COREMETA4CAT.DataService_contact_point, domain=DataService, range=Optional[Union[Union[dict, "Kind"], list[Union[dict, "Kind"]]]]) + +slots.DataService_description = Slot(uri=DCTERMS.description, name="DataService_description", curie=DCTERMS.curie('description'), + model_uri=COREMETA4CAT.DataService_description, domain=DataService, range=Optional[Union[str, list[str]]]) + +slots.DataService_documentation = Slot(uri=FOAF.page, name="DataService_documentation", curie=FOAF.curie('page'), + model_uri=COREMETA4CAT.DataService_documentation, domain=DataService, range=Optional[Union[dict[Union[str, DocumentId], Union[dict, "Document"]], list[Union[dict, "Document"]]]]) + +slots.DataService_endpoint_URL = Slot(uri=DCAT.endpointURL, name="DataService_endpoint_URL", curie=DCAT.curie('endpointURL'), + model_uri=COREMETA4CAT.DataService_endpoint_URL, domain=DataService, range=Union[dict[Union[str, ResourceId], Union[dict, "Resource"]], list[Union[dict, "Resource"]]]) + +slots.DataService_endpoint_description = Slot(uri=DCAT.endpointDescription, name="DataService_endpoint_description", curie=DCAT.curie('endpointDescription'), + model_uri=COREMETA4CAT.DataService_endpoint_description, domain=DataService, range=Optional[Union[dict[Union[str, ResourceId], Union[dict, "Resource"]], list[Union[dict, "Resource"]]]]) + +slots.DataService_format = Slot(uri=DCTERMS.format, name="DataService_format", curie=DCTERMS.curie('format'), + model_uri=COREMETA4CAT.DataService_format, domain=DataService, range=Optional[Union[Union[dict, "MediaTypeOrExtent"], list[Union[dict, "MediaTypeOrExtent"]]]]) + +slots.DataService_keyword = Slot(uri=DCAT.keyword, name="DataService_keyword", curie=DCAT.curie('keyword'), + model_uri=COREMETA4CAT.DataService_keyword, domain=DataService, range=Optional[Union[str, list[str]]]) + +slots.DataService_landing_page = Slot(uri=DCAT.landingPage, name="DataService_landing_page", curie=DCAT.curie('landingPage'), + model_uri=COREMETA4CAT.DataService_landing_page, domain=DataService, range=Optional[Union[dict[Union[str, DocumentId], Union[dict, "Document"]], list[Union[dict, "Document"]]]]) + +slots.DataService_licence = Slot(uri=DCTERMS.license, name="DataService_licence", curie=DCTERMS.curie('license'), + model_uri=COREMETA4CAT.DataService_licence, domain=DataService, range=Optional[Union[dict, "LicenseDocument"]]) + +slots.DataService_publisher = Slot(uri=DCTERMS.publisher, name="DataService_publisher", curie=DCTERMS.curie('publisher'), + model_uri=COREMETA4CAT.DataService_publisher, domain=DataService, range=Optional[Union[dict, Agent]]) + +slots.DataService_serves_dataset = Slot(uri=DCAT.servesDataset, name="DataService_serves_dataset", curie=DCAT.curie('servesDataset'), + model_uri=COREMETA4CAT.DataService_serves_dataset, domain=DataService, range=Optional[Union[dict[Union[str, DatasetId], Union[dict, "Dataset"]], list[Union[dict, "Dataset"]]]]) + +slots.DataService_theme = Slot(uri=DCAT.theme, name="DataService_theme", curie=DCAT.curie('theme'), + model_uri=COREMETA4CAT.DataService_theme, domain=DataService, range=Optional[Union[Union[dict, "Concept"], list[Union[dict, "Concept"]]]]) + +slots.DataService_title = Slot(uri=DCTERMS.title, name="DataService_title", curie=DCTERMS.curie('title'), + model_uri=COREMETA4CAT.DataService_title, domain=DataService, range=Union[str, list[str]]) + +slots.Dataset_access_rights = Slot(uri=DCTERMS.accessRights, name="Dataset_access_rights", curie=DCTERMS.curie('accessRights'), + model_uri=COREMETA4CAT.Dataset_access_rights, domain=Dataset, range=Optional[Union[dict, "RightsStatement"]]) + +slots.Dataset_applicable_legislation = Slot(uri=DCATAP.applicableLegislation, name="Dataset_applicable_legislation", curie=DCATAP.curie('applicableLegislation'), + model_uri=COREMETA4CAT.Dataset_applicable_legislation, domain=Dataset, range=Optional[Union[dict[Union[str, LegalResourceId], Union[dict, "LegalResource"]], list[Union[dict, "LegalResource"]]]]) + +slots.Dataset_conforms_to = Slot(uri=DCTERMS.conformsTo, name="Dataset_conforms_to", curie=DCTERMS.curie('conformsTo'), + model_uri=COREMETA4CAT.Dataset_conforms_to, domain=Dataset, range=Optional[Union[Union[dict, "Standard"], list[Union[dict, "Standard"]]]]) + +slots.Dataset_contact_point = Slot(uri=DCAT.contactPoint, name="Dataset_contact_point", curie=DCAT.curie('contactPoint'), + model_uri=COREMETA4CAT.Dataset_contact_point, domain=Dataset, range=Optional[Union[Union[dict, "Kind"], list[Union[dict, "Kind"]]]]) + +slots.Dataset_creator = Slot(uri=DCTERMS.creator, name="Dataset_creator", curie=DCTERMS.curie('creator'), + model_uri=COREMETA4CAT.Dataset_creator, domain=Dataset, range=Optional[Union[Union[dict, Agent], list[Union[dict, Agent]]]]) + +slots.Dataset_dataset_distribution = Slot(uri=DCAT.distribution, name="Dataset_dataset_distribution", curie=DCAT.curie('distribution'), + model_uri=COREMETA4CAT.Dataset_dataset_distribution, domain=Dataset, range=Optional[Union[Union[dict, "Distribution"], list[Union[dict, "Distribution"]]]]) + +slots.Dataset_description = Slot(uri=DCTERMS.description, name="Dataset_description", curie=DCTERMS.curie('description'), + model_uri=COREMETA4CAT.Dataset_description, domain=Dataset, range=Union[str, list[str]]) + +slots.Dataset_documentation = Slot(uri=FOAF.page, name="Dataset_documentation", curie=FOAF.curie('page'), + model_uri=COREMETA4CAT.Dataset_documentation, domain=Dataset, range=Optional[Union[dict[Union[str, DocumentId], Union[dict, "Document"]], list[Union[dict, "Document"]]]]) + +slots.Dataset_frequency = Slot(uri=DCTERMS.accrualPeriodicity, name="Dataset_frequency", curie=DCTERMS.curie('accrualPeriodicity'), + model_uri=COREMETA4CAT.Dataset_frequency, domain=Dataset, range=Optional[Union[dict, "Frequency"]]) + +slots.Dataset_geographical_coverage = Slot(uri=DCTERMS.spatial, name="Dataset_geographical_coverage", curie=DCTERMS.curie('spatial'), + model_uri=COREMETA4CAT.Dataset_geographical_coverage, domain=Dataset, range=Optional[Union[Union[dict, "Location"], list[Union[dict, "Location"]]]]) + +slots.Dataset_has_version = Slot(uri=DCAT.hasVersion, name="Dataset_has_version", curie=DCAT.curie('hasVersion'), + model_uri=COREMETA4CAT.Dataset_has_version, domain=Dataset, range=Optional[Union[dict[Union[str, DatasetId], Union[dict, "Dataset"]], list[Union[dict, "Dataset"]]]]) + +slots.Dataset_identifier = Slot(uri=DCTERMS.identifier, name="Dataset_identifier", curie=DCTERMS.curie('identifier'), + model_uri=COREMETA4CAT.Dataset_identifier, domain=Dataset, range=Optional[Union[str, list[str]]]) + +slots.Dataset_in_series = Slot(uri=DCAT.inSeries, name="Dataset_in_series", curie=DCAT.curie('inSeries'), + model_uri=COREMETA4CAT.Dataset_in_series, domain=Dataset, range=Optional[Union[Union[dict, "DatasetSeries"], list[Union[dict, "DatasetSeries"]]]]) + +slots.Dataset_is_referenced_by = Slot(uri=DCTERMS.isReferencedBy, name="Dataset_is_referenced_by", curie=DCTERMS.curie('isReferencedBy'), + model_uri=COREMETA4CAT.Dataset_is_referenced_by, domain=Dataset, range=Optional[Union[dict[Union[str, ResourceId], Union[dict, "Resource"]], list[Union[dict, "Resource"]]]]) + +slots.Dataset_keyword = Slot(uri=DCAT.keyword, name="Dataset_keyword", curie=DCAT.curie('keyword'), + model_uri=COREMETA4CAT.Dataset_keyword, domain=Dataset, range=Optional[Union[str, list[str]]]) + +slots.Dataset_landing_page = Slot(uri=DCAT.landingPage, name="Dataset_landing_page", curie=DCAT.curie('landingPage'), + model_uri=COREMETA4CAT.Dataset_landing_page, domain=Dataset, range=Optional[Union[dict[Union[str, DocumentId], Union[dict, "Document"]], list[Union[dict, "Document"]]]]) + +slots.Dataset_language = Slot(uri=DCTERMS.language, name="Dataset_language", curie=DCTERMS.curie('language'), + model_uri=COREMETA4CAT.Dataset_language, domain=Dataset, range=Optional[Union[Union[dict, "LinguisticSystem"], list[Union[dict, "LinguisticSystem"]]]]) + +slots.Dataset_modification_date = Slot(uri=DCTERMS.modified, name="Dataset_modification_date", curie=DCTERMS.curie('modified'), + model_uri=COREMETA4CAT.Dataset_modification_date, domain=Dataset, range=Optional[Union[str, XSDDate]]) + +slots.Dataset_other_identifier = Slot(uri=ADMS.identifier, name="Dataset_other_identifier", curie=ADMS.curie('identifier'), + model_uri=COREMETA4CAT.Dataset_other_identifier, domain=Dataset, range=Optional[Union[Union[dict, "Identifier"], list[Union[dict, "Identifier"]]]]) + +slots.Dataset_provenance = Slot(uri=DCTERMS.provenance, name="Dataset_provenance", curie=DCTERMS.curie('provenance'), + model_uri=COREMETA4CAT.Dataset_provenance, domain=Dataset, range=Optional[Union[Union[dict, "ProvenanceStatement"], list[Union[dict, "ProvenanceStatement"]]]]) + +slots.Dataset_publisher = Slot(uri=DCTERMS.publisher, name="Dataset_publisher", curie=DCTERMS.curie('publisher'), + model_uri=COREMETA4CAT.Dataset_publisher, domain=Dataset, range=Optional[Union[dict, Agent]]) + +slots.Dataset_qualified_attribution = Slot(uri=PROV.qualifiedAttribution, name="Dataset_qualified_attribution", curie=PROV.curie('qualifiedAttribution'), + model_uri=COREMETA4CAT.Dataset_qualified_attribution, domain=Dataset, range=Optional[Union[Union[dict, "Attribution"], list[Union[dict, "Attribution"]]]]) + +slots.Dataset_qualified_relation = Slot(uri=DCAT.qualifiedRelation, name="Dataset_qualified_relation", curie=DCAT.curie('qualifiedRelation'), + model_uri=COREMETA4CAT.Dataset_qualified_relation, domain=Dataset, range=Optional[Union[Union[dict, "Relationship"], list[Union[dict, "Relationship"]]]]) + +slots.Dataset_related_resource = Slot(uri=DCTERMS.relation, name="Dataset_related_resource", curie=DCTERMS.curie('relation'), + model_uri=COREMETA4CAT.Dataset_related_resource, domain=Dataset, range=Optional[Union[dict[Union[str, ResourceId], Union[dict, "Resource"]], list[Union[dict, "Resource"]]]]) + +slots.Dataset_release_date = Slot(uri=DCTERMS.issued, name="Dataset_release_date", curie=DCTERMS.curie('issued'), + model_uri=COREMETA4CAT.Dataset_release_date, domain=Dataset, range=Optional[Union[str, XSDDate]]) + +slots.Dataset_sample = Slot(uri=ADMS.sample, name="Dataset_sample", curie=ADMS.curie('sample'), + model_uri=COREMETA4CAT.Dataset_sample, domain=Dataset, range=Optional[Union[Union[dict, "Distribution"], list[Union[dict, "Distribution"]]]]) + +slots.Dataset_source = Slot(uri=DCTERMS.source, name="Dataset_source", curie=DCTERMS.curie('source'), + model_uri=COREMETA4CAT.Dataset_source, domain=Dataset, range=Optional[Union[dict[Union[str, DatasetId], Union[dict, "Dataset"]], list[Union[dict, "Dataset"]]]]) + +slots.Dataset_spatial_resolution = Slot(uri=DCAT.spatialResolutionInMeters, name="Dataset_spatial_resolution", curie=DCAT.curie('spatialResolutionInMeters'), + model_uri=COREMETA4CAT.Dataset_spatial_resolution, domain=Dataset, range=Optional[Decimal]) + +slots.Dataset_temporal_coverage = Slot(uri=DCTERMS.temporal, name="Dataset_temporal_coverage", curie=DCTERMS.curie('temporal'), + model_uri=COREMETA4CAT.Dataset_temporal_coverage, domain=Dataset, range=Optional[Union[Union[dict, "PeriodOfTime"], list[Union[dict, "PeriodOfTime"]]]]) + +slots.Dataset_temporal_resolution = Slot(uri=DCAT.temporalResolution, name="Dataset_temporal_resolution", curie=DCAT.curie('temporalResolution'), + model_uri=COREMETA4CAT.Dataset_temporal_resolution, domain=Dataset, range=Optional[str]) + +slots.Dataset_theme = Slot(uri=DCAT.theme, name="Dataset_theme", curie=DCAT.curie('theme'), + model_uri=COREMETA4CAT.Dataset_theme, domain=Dataset, range=Optional[Union[Union[dict, "Concept"], list[Union[dict, "Concept"]]]]) + +slots.Dataset_title = Slot(uri=DCTERMS.title, name="Dataset_title", curie=DCTERMS.curie('title'), + model_uri=COREMETA4CAT.Dataset_title, domain=Dataset, range=Union[str, list[str]]) + +slots.Dataset_type = Slot(uri=DCTERMS.type, name="Dataset_type", curie=DCTERMS.curie('type'), + model_uri=COREMETA4CAT.Dataset_type, domain=Dataset, range=Optional[Union[Union[dict, "Concept"], list[Union[dict, "Concept"]]]]) + +slots.Dataset_version = Slot(uri=DCAT.version, name="Dataset_version", curie=DCAT.curie('version'), + model_uri=COREMETA4CAT.Dataset_version, domain=Dataset, range=Optional[str]) + +slots.Dataset_version_notes = Slot(uri=ADMS.versionNotes, name="Dataset_version_notes", curie=ADMS.curie('versionNotes'), + model_uri=COREMETA4CAT.Dataset_version_notes, domain=Dataset, range=Optional[Union[str, list[str]]]) + +slots.Dataset_was_generated_by = Slot(uri=PROV.wasGeneratedBy, name="Dataset_was_generated_by", curie=PROV.curie('wasGeneratedBy'), + model_uri=COREMETA4CAT.Dataset_was_generated_by, domain=Dataset, range=Union[dict[Union[str, DataGeneratingActivityId], Union[dict, DataGeneratingActivity]], list[Union[dict, DataGeneratingActivity]]]) + +slots.DatasetSeries_applicable_legislation = Slot(uri=DCATAP.applicableLegislation, name="DatasetSeries_applicable_legislation", curie=DCATAP.curie('applicableLegislation'), + model_uri=COREMETA4CAT.DatasetSeries_applicable_legislation, domain=DatasetSeries, range=Optional[Union[dict[Union[str, LegalResourceId], Union[dict, "LegalResource"]], list[Union[dict, "LegalResource"]]]]) + +slots.DatasetSeries_contact_point = Slot(uri=DCAT.contactPoint, name="DatasetSeries_contact_point", curie=DCAT.curie('contactPoint'), + model_uri=COREMETA4CAT.DatasetSeries_contact_point, domain=DatasetSeries, range=Optional[Union[Union[dict, "Kind"], list[Union[dict, "Kind"]]]]) + +slots.DatasetSeries_description = Slot(uri=DCTERMS.description, name="DatasetSeries_description", curie=DCTERMS.curie('description'), + model_uri=COREMETA4CAT.DatasetSeries_description, domain=DatasetSeries, range=Union[str, list[str]]) + +slots.DatasetSeries_frequency = Slot(uri=DCTERMS.accrualPeriodicity, name="DatasetSeries_frequency", curie=DCTERMS.curie('accrualPeriodicity'), + model_uri=COREMETA4CAT.DatasetSeries_frequency, domain=DatasetSeries, range=Optional[Union[dict, "Frequency"]]) + +slots.DatasetSeries_geographical_coverage = Slot(uri=DCTERMS.spatial, name="DatasetSeries_geographical_coverage", curie=DCTERMS.curie('spatial'), + model_uri=COREMETA4CAT.DatasetSeries_geographical_coverage, domain=DatasetSeries, range=Optional[Union[Union[dict, "Location"], list[Union[dict, "Location"]]]]) + +slots.DatasetSeries_modification_date = Slot(uri=DCTERMS.modified, name="DatasetSeries_modification_date", curie=DCTERMS.curie('modified'), + model_uri=COREMETA4CAT.DatasetSeries_modification_date, domain=DatasetSeries, range=Optional[Union[str, XSDDate]]) + +slots.DatasetSeries_publisher = Slot(uri=DCTERMS.publisher, name="DatasetSeries_publisher", curie=DCTERMS.curie('publisher'), + model_uri=COREMETA4CAT.DatasetSeries_publisher, domain=DatasetSeries, range=Optional[Union[dict, Agent]]) + +slots.DatasetSeries_release_date = Slot(uri=DCTERMS.issued, name="DatasetSeries_release_date", curie=DCTERMS.curie('issued'), + model_uri=COREMETA4CAT.DatasetSeries_release_date, domain=DatasetSeries, range=Optional[Union[str, XSDDate]]) + +slots.DatasetSeries_temporal_coverage = Slot(uri=DCTERMS.temporal, name="DatasetSeries_temporal_coverage", curie=DCTERMS.curie('temporal'), + model_uri=COREMETA4CAT.DatasetSeries_temporal_coverage, domain=DatasetSeries, range=Optional[Union[Union[dict, "PeriodOfTime"], list[Union[dict, "PeriodOfTime"]]]]) + +slots.DatasetSeries_title = Slot(uri=DCTERMS.title, name="DatasetSeries_title", curie=DCTERMS.curie('title'), + model_uri=COREMETA4CAT.DatasetSeries_title, domain=DatasetSeries, range=Union[str, list[str]]) + +slots.DefinedTerm_title = Slot(uri=SCHEMA.name, name="DefinedTerm_title", curie=SCHEMA.curie('name'), + model_uri=COREMETA4CAT.DefinedTerm_title, domain=DefinedTerm, range=Optional[str]) + +slots.Device_has_part = Slot(uri=DCTERMS.hasPart, name="Device_has_part", curie=DCTERMS.curie('hasPart'), + model_uri=COREMETA4CAT.Device_has_part, domain=Device, range=Optional[Union[dict[Union[str, DeviceId], Union[dict, "Device"]], list[Union[dict, "Device"]]]]) + +slots.Device_other_identifier = Slot(uri=ADMS.identifier, name="Device_other_identifier", curie=ADMS.curie('identifier'), + model_uri=COREMETA4CAT.Device_other_identifier, domain=Device, range=Optional[Union[Union[dict, "Identifier"], list[Union[dict, "Identifier"]]]]) + +slots.Distribution_access_URL = Slot(uri=DCAT.accessURL, name="Distribution_access_URL", curie=DCAT.curie('accessURL'), + model_uri=COREMETA4CAT.Distribution_access_URL, domain=Distribution, range=Union[dict[Union[str, ResourceId], Union[dict, "Resource"]], list[Union[dict, "Resource"]]]) + +slots.Distribution_access_service = Slot(uri=DCAT.accessService, name="Distribution_access_service", curie=DCAT.curie('accessService'), + model_uri=COREMETA4CAT.Distribution_access_service, domain=Distribution, range=Optional[Union[Union[dict, DataService], list[Union[dict, DataService]]]]) + +slots.Distribution_applicable_legislation = Slot(uri=DCATAP.applicableLegislation, name="Distribution_applicable_legislation", curie=DCATAP.curie('applicableLegislation'), + model_uri=COREMETA4CAT.Distribution_applicable_legislation, domain=Distribution, range=Optional[Union[dict[Union[str, LegalResourceId], Union[dict, "LegalResource"]], list[Union[dict, "LegalResource"]]]]) + +slots.Distribution_availability = Slot(uri=DCATAP.availability, name="Distribution_availability", curie=DCATAP.curie('availability'), + model_uri=COREMETA4CAT.Distribution_availability, domain=Distribution, range=Optional[Union[dict, "Concept"]]) + +slots.Distribution_byte_size = Slot(uri=DCAT.byteSize, name="Distribution_byte_size", curie=DCAT.curie('byteSize'), + model_uri=COREMETA4CAT.Distribution_byte_size, domain=Distribution, range=Optional[int]) + +slots.Distribution_checksum = Slot(uri=SPDX.checksum, name="Distribution_checksum", curie=SPDX.curie('checksum'), + model_uri=COREMETA4CAT.Distribution_checksum, domain=Distribution, range=Optional[Union[dict, Checksum]]) + +slots.Distribution_compression_format = Slot(uri=DCAT.compressFormat, name="Distribution_compression_format", curie=DCAT.curie('compressFormat'), + model_uri=COREMETA4CAT.Distribution_compression_format, domain=Distribution, range=Optional[Union[dict, "MediaType"]]) + +slots.Distribution_description = Slot(uri=DCTERMS.description, name="Distribution_description", curie=DCTERMS.curie('description'), + model_uri=COREMETA4CAT.Distribution_description, domain=Distribution, range=Optional[Union[str, list[str]]]) + +slots.Distribution_documentation = Slot(uri=FOAF.page, name="Distribution_documentation", curie=FOAF.curie('page'), + model_uri=COREMETA4CAT.Distribution_documentation, domain=Distribution, range=Optional[Union[dict[Union[str, DocumentId], Union[dict, "Document"]], list[Union[dict, "Document"]]]]) + +slots.Distribution_download_URL = Slot(uri=DCAT.downloadURL, name="Distribution_download_URL", curie=DCAT.curie('downloadURL'), + model_uri=COREMETA4CAT.Distribution_download_URL, domain=Distribution, range=Optional[Union[dict[Union[str, ResourceId], Union[dict, "Resource"]], list[Union[dict, "Resource"]]]]) + +slots.Distribution_format = Slot(uri=DCTERMS.format, name="Distribution_format", curie=DCTERMS.curie('format'), + model_uri=COREMETA4CAT.Distribution_format, domain=Distribution, range=Optional[Union[dict, "MediaTypeOrExtent"]]) + +slots.Distribution_has_policy = Slot(uri=ODRL.hasPolicy, name="Distribution_has_policy", curie=ODRL.curie('hasPolicy'), + model_uri=COREMETA4CAT.Distribution_has_policy, domain=Distribution, range=Optional[Union[dict, "Policy"]]) + +slots.Distribution_language = Slot(uri=DCTERMS.language, name="Distribution_language", curie=DCTERMS.curie('language'), + model_uri=COREMETA4CAT.Distribution_language, domain=Distribution, range=Optional[Union[Union[dict, "LinguisticSystem"], list[Union[dict, "LinguisticSystem"]]]]) + +slots.Distribution_licence = Slot(uri=DCTERMS.license, name="Distribution_licence", curie=DCTERMS.curie('license'), + model_uri=COREMETA4CAT.Distribution_licence, domain=Distribution, range=Optional[Union[dict, "LicenseDocument"]]) + +slots.Distribution_linked_schemas = Slot(uri=DCTERMS.conformsTo, name="Distribution_linked_schemas", curie=DCTERMS.curie('conformsTo'), + model_uri=COREMETA4CAT.Distribution_linked_schemas, domain=Distribution, range=Optional[Union[Union[dict, "Standard"], list[Union[dict, "Standard"]]]]) + +slots.Distribution_media_type = Slot(uri=DCAT.mediaType, name="Distribution_media_type", curie=DCAT.curie('mediaType'), + model_uri=COREMETA4CAT.Distribution_media_type, domain=Distribution, range=Optional[Union[dict, "MediaType"]]) + +slots.Distribution_modification_date = Slot(uri=DCTERMS.modified, name="Distribution_modification_date", curie=DCTERMS.curie('modified'), + model_uri=COREMETA4CAT.Distribution_modification_date, domain=Distribution, range=Optional[Union[str, XSDDate]]) + +slots.Distribution_packaging_format = Slot(uri=DCAT.packageFormat, name="Distribution_packaging_format", curie=DCAT.curie('packageFormat'), + model_uri=COREMETA4CAT.Distribution_packaging_format, domain=Distribution, range=Optional[Union[dict, "MediaType"]]) + +slots.Distribution_release_date = Slot(uri=DCTERMS.issued, name="Distribution_release_date", curie=DCTERMS.curie('issued'), + model_uri=COREMETA4CAT.Distribution_release_date, domain=Distribution, range=Optional[Union[str, XSDDate]]) + +slots.Distribution_rights = Slot(uri=DCTERMS.rights, name="Distribution_rights", curie=DCTERMS.curie('rights'), + model_uri=COREMETA4CAT.Distribution_rights, domain=Distribution, range=Optional[Union[dict, "RightsStatement"]]) + +slots.Distribution_spatial_resolution = Slot(uri=DCAT.spatialResolutionInMeters, name="Distribution_spatial_resolution", curie=DCAT.curie('spatialResolutionInMeters'), + model_uri=COREMETA4CAT.Distribution_spatial_resolution, domain=Distribution, range=Optional[Decimal]) + +slots.Distribution_status = Slot(uri=ADMS.status, name="Distribution_status", curie=ADMS.curie('status'), + model_uri=COREMETA4CAT.Distribution_status, domain=Distribution, range=Optional[Union[dict, "Concept"]]) + +slots.Distribution_temporal_resolution = Slot(uri=DCAT.temporalResolution, name="Distribution_temporal_resolution", curie=DCAT.curie('temporalResolution'), + model_uri=COREMETA4CAT.Distribution_temporal_resolution, domain=Distribution, range=Optional[str]) + +slots.Distribution_title = Slot(uri=DCTERMS.title, name="Distribution_title", curie=DCTERMS.curie('title'), + model_uri=COREMETA4CAT.Distribution_title, domain=Distribution, range=Optional[Union[str, list[str]]]) + +slots.Entity_title = Slot(uri=DCTERMS.title, name="Entity_title", curie=DCTERMS.curie('title'), + model_uri=COREMETA4CAT.Entity_title, domain=Entity, range=Optional[str]) + +slots.Entity_description = Slot(uri=DCTERMS.description, name="Entity_description", curie=DCTERMS.curie('description'), + model_uri=COREMETA4CAT.Entity_description, domain=Entity, range=Optional[str]) + +slots.Entity_other_identifier = Slot(uri=ADMS.identifier, name="Entity_other_identifier", curie=ADMS.curie('identifier'), + model_uri=COREMETA4CAT.Entity_other_identifier, domain=Entity, range=Optional[Union[Union[dict, "Identifier"], list[Union[dict, "Identifier"]]]]) + +slots.Entity_has_part = Slot(uri=DCTERMS.hasPart, name="Entity_has_part", curie=DCTERMS.curie('hasPart'), + model_uri=COREMETA4CAT.Entity_has_part, domain=Entity, range=Optional[Union[dict[Union[str, EntityId], Union[dict, "Entity"]], list[Union[dict, "Entity"]]]]) + +slots.Entity_part_of = Slot(uri=DCTERMS.isPartOf, name="Entity_part_of", curie=DCTERMS.curie('isPartOf'), + model_uri=COREMETA4CAT.Entity_part_of, domain=Entity, range=Optional[Union[dict[Union[str, EntityId], Union[dict, "Entity"]], list[Union[dict, "Entity"]]]]) + +slots.EvaluatedActivity_other_identifier = Slot(uri=ADMS.identifier, name="EvaluatedActivity_other_identifier", curie=ADMS.curie('identifier'), + model_uri=COREMETA4CAT.EvaluatedActivity_other_identifier, domain=EvaluatedActivity, range=Optional[Union[Union[dict, "Identifier"], list[Union[dict, "Identifier"]]]]) + +slots.EvaluatedEntity_title = Slot(uri=DCTERMS.title, name="EvaluatedEntity_title", curie=DCTERMS.curie('title'), + model_uri=COREMETA4CAT.EvaluatedEntity_title, domain=EvaluatedEntity, range=Optional[str]) + +slots.EvaluatedEntity_description = Slot(uri=DCTERMS.description, name="EvaluatedEntity_description", curie=DCTERMS.curie('description'), + model_uri=COREMETA4CAT.EvaluatedEntity_description, domain=EvaluatedEntity, range=Optional[str]) + +slots.EvaluatedEntity_was_generated_by = Slot(uri=PROV.wasGeneratedBy, name="EvaluatedEntity_was_generated_by", curie=PROV.curie('wasGeneratedBy'), + model_uri=COREMETA4CAT.EvaluatedEntity_was_generated_by, domain=EvaluatedEntity, range=Optional[Union[dict[Union[str, ActivityId], Union[dict, Activity]], list[Union[dict, Activity]]]]) + +slots.EvaluatedEntity_other_identifier = Slot(uri=ADMS.identifier, name="EvaluatedEntity_other_identifier", curie=ADMS.curie('identifier'), + model_uri=COREMETA4CAT.EvaluatedEntity_other_identifier, domain=EvaluatedEntity, range=Optional[Union[Union[dict, "Identifier"], list[Union[dict, "Identifier"]]]]) + +slots.Identifier_notation = Slot(uri=SKOS.notation, name="Identifier_notation", curie=SKOS.curie('notation'), + model_uri=COREMETA4CAT.Identifier_notation, domain=Identifier, range=str) + +slots.LicenseDocument_type = Slot(uri=DCTERMS.type, name="LicenseDocument_type", curie=DCTERMS.curie('type'), + model_uri=COREMETA4CAT.LicenseDocument_type, domain=LicenseDocument, range=Optional[Union[Union[dict, Concept], list[Union[dict, Concept]]]]) + +slots.Location_bbox = Slot(uri=DCAT.bbox, name="Location_bbox", curie=DCAT.curie('bbox'), + model_uri=COREMETA4CAT.Location_bbox, domain=Location, range=Optional[str]) + +slots.Location_centroid = Slot(uri=DCAT.centroid, name="Location_centroid", curie=DCAT.curie('centroid'), + model_uri=COREMETA4CAT.Location_centroid, domain=Location, range=Optional[str]) + +slots.Location_geometry = Slot(uri=LOCN.geometry, name="Location_geometry", curie=LOCN.curie('geometry'), + model_uri=COREMETA4CAT.Location_geometry, domain=Location, range=Optional[Union[dict, "Geometry"]]) + +slots.PeriodOfTime_beginning = Slot(uri=TIME.hasBeginning, name="PeriodOfTime_beginning", curie=TIME.curie('hasBeginning'), + model_uri=COREMETA4CAT.PeriodOfTime_beginning, domain=PeriodOfTime, range=Optional[Union[dict, "TimeInstant"]]) + +slots.PeriodOfTime_end = Slot(uri=TIME.hasEnd, name="PeriodOfTime_end", curie=TIME.curie('hasEnd'), + model_uri=COREMETA4CAT.PeriodOfTime_end, domain=PeriodOfTime, range=Optional[Union[dict, "TimeInstant"]]) + +slots.PeriodOfTime_end_date = Slot(uri=DCAT.endDate, name="PeriodOfTime_end_date", curie=DCAT.curie('endDate'), + model_uri=COREMETA4CAT.PeriodOfTime_end_date, domain=PeriodOfTime, range=Optional[Union[str, XSDDate]]) + +slots.PeriodOfTime_start_date = Slot(uri=DCAT.startDate, name="PeriodOfTime_start_date", curie=DCAT.curie('startDate'), + model_uri=COREMETA4CAT.PeriodOfTime_start_date, domain=PeriodOfTime, range=Optional[Union[str, XSDDate]]) + +slots.QualitativeAttribute_value = Slot(uri=PROV.value, name="QualitativeAttribute_value", curie=PROV.curie('value'), + model_uri=COREMETA4CAT.QualitativeAttribute_value, domain=QualitativeAttribute, range=str) + +slots.QuantitativeAttribute_value = Slot(uri=PROV.value, name="QuantitativeAttribute_value", curie=PROV.curie('value'), + model_uri=COREMETA4CAT.QuantitativeAttribute_value, domain=QuantitativeAttribute, range=float) + +slots.Relationship_had_role = Slot(uri=DCAT.hadRole, name="Relationship_had_role", curie=DCAT.curie('hadRole'), + model_uri=COREMETA4CAT.Relationship_had_role, domain=Relationship, range=Union[Union[dict, "Role"], list[Union[dict, "Role"]]]) + +slots.Relationship_relation = Slot(uri=DCTERMS.relation, name="Relationship_relation", curie=DCTERMS.curie('relation'), + model_uri=COREMETA4CAT.Relationship_relation, domain=Relationship, range=Union[dict[Union[str, ResourceId], Union[dict, "Resource"]], list[Union[dict, "Resource"]]]) + +slots.Software_has_part = Slot(uri=DCTERMS.hasPart, name="Software_has_part", curie=DCTERMS.curie('hasPart'), + model_uri=COREMETA4CAT.Software_has_part, domain=Software, range=Optional[Union[dict[Union[str, SoftwareId], Union[dict, "Software"]], list[Union[dict, "Software"]]]]) + +slots.Software_other_identifier = Slot(uri=ADMS.identifier, name="Software_other_identifier", curie=ADMS.curie('identifier'), + model_uri=COREMETA4CAT.Software_other_identifier, domain=Software, range=Optional[Union[Union[dict, "Identifier"], list[Union[dict, "Identifier"]]]]) + +slots.Atom_rdf_type = Slot(uri=RDF.type, name="Atom_rdf_type", curie=RDF.curie('type'), + model_uri=COREMETA4CAT.Atom_rdf_type, domain=Atom, range=Union[dict, DefinedTerm]) + +slots.ChemicalReaction_has_temperature = Slot(uri=SIO['000008'], name="ChemicalReaction_has_temperature", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.ChemicalReaction_has_temperature, domain=ChemicalReaction, range=Optional[Union[Union[dict, "Temperature"], list[Union[dict, "Temperature"]]]]) + +slots.ChemicalReaction_has_pressure = Slot(uri=SIO['000008'], name="ChemicalReaction_has_pressure", curie=SIO.curie('000008'), + model_uri=COREMETA4CAT.ChemicalReaction_has_pressure, domain=ChemicalReaction, range=Optional[Union[Union[dict, "Pressure"], list[Union[dict, "Pressure"]]]]) + +slots.ChemicalReaction_related_resource = Slot(uri=DCTERMS.relation, name="ChemicalReaction_related_resource", curie=DCTERMS.curie('relation'), + model_uri=COREMETA4CAT.ChemicalReaction_related_resource, domain=ChemicalReaction, range=Optional[Union[dict[Union[str, ResourceId], Union[dict, Resource]], list[Union[dict, Resource]]]]) + +slots.MaterialEntity_has_part = Slot(uri=BFO['0000051'], name="MaterialEntity_has_part", curie=BFO.curie('0000051'), + model_uri=COREMETA4CAT.MaterialEntity_has_part, domain=MaterialEntity, range=Optional[Union[dict[Union[str, MaterialEntityId], Union[dict, "MaterialEntity"]], list[Union[dict, "MaterialEntity"]]]]) + +slots.MaterialSample_derived_from = Slot(uri=PROV.wasDerivedFrom, name="MaterialSample_derived_from", curie=PROV.curie('wasDerivedFrom'), + model_uri=COREMETA4CAT.MaterialSample_derived_from, domain=MaterialSample, range=Optional[Union[dict, Entity]]) diff --git a/src/coremeta4cat/datamodel/coremeta4cat_pydantic.py b/src/coremeta4cat/datamodel/coremeta4cat_pydantic.py new file mode 100644 index 000000000..7e2f9d091 --- /dev/null +++ b/src/coremeta4cat/datamodel/coremeta4cat_pydantic.py @@ -0,0 +1,21518 @@ +from __future__ import annotations + +import re +import sys +from datetime import ( + date, + datetime, + time +) +from decimal import Decimal +from enum import Enum +from typing import ( + Any, + ClassVar, + Literal, + Optional, + Union +) + +from pydantic import ( + BaseModel, + ConfigDict, + Field, + RootModel, + SerializationInfo, + SerializerFunctionWrapHandler, + field_validator, + model_serializer +) + + +metamodel_version = "None" +version = "1.0.0" + + +class ConfiguredBaseModel(BaseModel): + model_config = ConfigDict( + serialize_by_alias = True, + validate_by_name = True, + validate_assignment = True, + validate_default = True, + extra = "forbid", + arbitrary_types_allowed = True, + use_enum_values = True, + strict = False, + ) + + @model_serializer(mode='wrap', when_used='unless-none') + def treat_empty_lists_as_none( + self, handler: SerializerFunctionWrapHandler, + info: SerializationInfo) -> dict[str, Any]: + if info.exclude_none: + _instance = self.model_copy() + for field, field_info in type(_instance).model_fields.items(): + if getattr(_instance, field) == [] and not( + field_info.is_required()): + setattr(_instance, field, None) + else: + _instance = self + return handler(_instance, info) + + + +class LinkMLMeta(RootModel): + root: dict[str, Any] = {} + model_config = ConfigDict(frozen=True) + + def __getattr__(self, key:str): + return getattr(self.root, key) + + def __getitem__(self, key:str): + return self.root[key] + + def __setitem__(self, key:str, value): + self.root[key] = value + + def __contains__(self, key:str) -> bool: + return key in self.root + + +linkml_meta = LinkMLMeta({'default_prefix': 'coremeta4cat', + 'default_range': 'string', + 'description': 'The CoreMeta4Cat describes the minimum information which must ' + 'be reported with research\n' + 'data concerning the field of catalysis. This guideline helps ' + 'to handle and\n' + 'standardize data based on the FAIR principle (Findable, ' + 'Accessible, Interoperable,\n' + 'Reusable).\n' + '\n' + 'Architecture\n' + '------------\n' + 'CoreMeta4Cat follows the DCAT-AP-PLUS design patterns (see ' + 'design-patterns.md):\n' + '\n' + '- The entry point is the dcat:Dataset, extended here as ' + 'CatalysisDataset.\n' + ' The catalysis research field is expressed via rdf_type ' + '(ClassifierMixin,\n' + ' Pattern 3) using voc4cat terms � analogous to how ' + 'NMRSpectroscopy uses\n' + ' rdf_type: CHMO:0000613 to classify the measurement type.\n' + '\n' + '- The four CoreMeta4Cat pillars are modelled as DCAT-AP-PLUS ' + 'Activity subclasses,\n' + ' following the same pattern as NMRSpectroscopy (is_a: ' + 'DataGeneratingActivity):\n' + '\n' + ' Synthesis --> is_a: DataGeneratingActivity\n' + ' Produces a catalyst (MaterialSample) as ' + 'had_output_entity.\n' + ' The PreparationMethod (protocol) is ' + 'linked via realized_plan.\n' + '\n' + ' Characterization --> is_a: DataGeneratingActivity\n' + ' Produces measurement data about a ' + 'catalyst or reaction.\n' + ' The catalyst/sample is the ' + 'evaluated_entity.\n' + ' The CharacterizationTechnique is ' + 'linked via realized_plan.\n' + '\n' + ' Reaction --> is_a: EvaluatedActivity\n' + ' The catalytic process being studied, NOT ' + 'a data-generating\n' + ' activity itself. Characterization ' + 'datasets are about this.\n' + ' Analogous to the reaction being observed ' + 'in a reaction\n' + ' monitoring dataset.\n' + '\n' + ' Simulation --> is_a: DataGeneratingActivity\n' + ' Generates computational data about a ' + 'catalyst or reaction.\n' + ' The SimulationMethod (protocol) is ' + 'linked via realized_plan.\n' + ' The simulation software is ' + 'carried_out_by: Software.\n' + '\n' + '- Catalyst samples and precursor materials are modelled as ' + 'MaterialSample\n' + ' (from material_entities_ap), which is an EvaluatedEntity.\n' + '\n' + '- Reactors and instruments are modelled as Device (from ' + 'dcat_ap_plus), which\n' + ' is an AgenticEntity carried_out_by the relevant Activity.\n' + '\n' + '- PreparationMethod, CharacterizationTechnique, and ' + 'SimulationMethod are\n' + ' modelled as Plan (from dcat_ap_plus), the protocol realized ' + 'by the Activity.\n' + '\n' + 'This file is the top-level aggregator. It imports ' + 'coremeta4cat_common (shared\n' + 'slots and enums) and the four subprofile modules.\n' + '\n' + 'Full import hierarchy:\n' + ' coremeta4cat.yaml (this file � aggregator + ' + 'CatalysisDataset entry point)\n' + ' +-- coremeta4cat_common.yaml (shared slots, ' + 'enums)\n' + ' +-- chem_dcat_ap (SubstanceSample, ' + 'ChemicalSubstance, �)\n' + ' +-- chemical_reaction_ap\n' + ' +-- chemical_entities_ap\n' + ' +-- material_entities_ap\n' + ' +-- dcat_ap_plus ' + '(DCAT-AP-PLUS base)\n' + ' +-- coremeta4cat_synthesis_ap (Step 3 � ' + 'Synthesis, PreparationMethod, mixins)\n' + ' +-- coremeta4cat_characterization_ap (Step 4 � ' + 'Characterization, 24 techniques, mixins)\n' + ' +-- coremeta4cat_reaction_ap (Step 5 � Reaction, ' + '8 ReactorDesignTypes)\n' + ' +-- coremeta4cat_simulation_ap (Step 6 � ' + 'Simulation, 4 methods, 12 properties, mixins)', + 'id': 'https://w3id.org/nfdi4cat/coremeta4cat', + 'imports': ['linkml:types', + 'coremeta4cat_common', + 'coremeta4cat_synthesis_ap', + 'coremeta4cat_characterization_ap', + 'coremeta4cat_reaction_ap', + 'coremeta4cat_simulation_ap'], + 'license': 'CC-BY-4.0', + 'name': 'coremeta4cat-metadata', + 'prefixes': {'IAO': {'prefix_prefix': 'IAO', + 'prefix_reference': 'http://purl.obolibrary.org/obo/IAO_'}, + 'NCIT': {'prefix_prefix': 'NCIT', + 'prefix_reference': 'http://purl.obolibrary.org/obo/NCIT_'}, + 'OBI': {'prefix_prefix': 'OBI', + 'prefix_reference': 'http://purl.obolibrary.org/obo/OBI_'}, + 'SIO': {'prefix_prefix': 'SIO', + 'prefix_reference': 'http://semanticscience.org/resource/SIO_'}, + 'VOC4CAT': {'prefix_prefix': 'VOC4CAT', + 'prefix_reference': 'https://w3id.org/nfdi4cat/voc4cat_'}, + 'chemdcatap': {'prefix_prefix': 'chemdcatap', + 'prefix_reference': 'https://nfdi-de.github.io/chem-dcat-ap/'}, + 'coremeta4cat': {'prefix_prefix': 'coremeta4cat', + 'prefix_reference': 'https://w3id.org/nfdi4cat/coremeta4cat/'}, + 'dcat': {'prefix_prefix': 'dcat', + 'prefix_reference': 'http://www.w3.org/ns/dcat#'}, + 'dcatapplus': {'prefix_prefix': 'dcatapplus', + 'prefix_reference': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}, + 'dcterms': {'prefix_prefix': 'dcterms', + 'prefix_reference': 'http://purl.org/dc/terms/'}, + 'linkml': {'prefix_prefix': 'linkml', + 'prefix_reference': 'https://w3id.org/linkml/'}, + 'prov': {'prefix_prefix': 'prov', + 'prefix_reference': 'http://www.w3.org/ns/prov#'}, + 'rdf': {'prefix_prefix': 'rdf', + 'prefix_reference': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'}}, + 'source_file': 'src/coremeta4cat/schema/coremeta4cat.yaml', + 'title': 'CoreMeta4cat Metadata Reference Model'} ) + +class CatalysisResearchFieldEnum(str, Enum): + """ + Enumeration of catalysis research fields. +Intended for use via rdf_type on a dcat:Dataset (via ClassifierMixin) +to classify which field of catalysis the dataset belongs to, +following DCAT-AP-PLUS Pattern 3 (Flexible classification). + """ + heterogeneous_catalysis = "heterogeneous_catalysis" + """ + Heterogeneous catalysis � catalyst and reactants are in different phases. + """ + homogeneous_catalysis = "homogeneous_catalysis" + """ + Homogeneous catalysis � catalyst and reactants are in the same phase. + """ + biocatalysis = "biocatalysis" + """ + Biocatalysis � use of enzymes or whole cells as catalysts. + """ + electrocatalysis = "electrocatalysis" + """ + Electrocatalysis � catalysis of electrochemical reactions. + """ + hybrid_catalysis = "hybrid_catalysis" + """ + Hybrid catalysis � combination of two or more catalytic approaches. + """ + other = "other" + """ + Other catalysis research field not covered by the above terms. + """ + + +class ImpregnationTypeEnum(str, Enum): + """ + Enumeration of impregnation types used in catalyst synthesis. + """ + wet_impregnation = "wet_impregnation" + """ + Wet impregnation � excess solution is used to impregnate the support. + """ + dry_impregnation = "dry_impregnation" + """ + Dry impregnation � solution volume equals the pore volume of the support. + """ + incipient_wetness = "incipient_wetness" + """ + Incipient wetness impregnation � synonym for dry impregnation. + """ + other = "other" + """ + Other impregnation type. + """ + + +class SampleStateEnum(str, Enum): + """ + Enumeration of physical states in which a catalyst sample may be present. + """ + solid = "solid" + """ + Solid state. + """ + liquid = "liquid" + """ + Liquid state. + """ + gas = "gas" + """ + Gas state. + """ + solution = "solution" + """ + Dissolved in solvent. + """ + powder = "powder" + """ + Powder form. + """ + pellet = "pellet" + """ + Pellet form (pressed powder). + """ + thin_film = "thin_film" + """ + Thin film deposited on a substrate. + """ + other = "other" + """ + Other sample state. + """ + + +class DatasetThemes(str, Enum): + AGRI = "AGRI" + """ + Agriculture, fisheries, forestry and food + """ + ECON = "ECON" + """ + Economy and finance + """ + EDUC = "EDUC" + """ + Education, culture and sport + """ + ENER = "ENER" + """ + Energy + """ + ENVI = "ENVI" + """ + Environment + """ + GOVE = "GOVE" + """ + Government and public sector + """ + HEAL = "HEAL" + """ + Health + """ + INTR = "INTR" + """ + International issues + """ + JUST = "JUST" + """ + Justice, legal system and public safety + """ + OP_DATPRO = "OP_DATPRO" + """ + Provisional data + """ + REGI = "REGI" + """ + Regions and cities + """ + SOCI = "SOCI" + """ + Population and society + """ + TECH = "TECH" + """ + Science and technology + """ + TRAN = "TRAN" + """ + Transport + """ + + +class TopLevelMediaTypes(str, Enum): + application = "application" + audio = "audio" + example = "example" + font = "font" + haptics = "haptics" + image = "image" + message = "message" + model = "model" + multipart = "multipart" + text = "text" + video = "video" + + +class QUDTQuantityKindEnum(str): + """ + Possible kinds of quantifiable attribute types provided as QUDT QualityKind instances. + """ + pass + + +class QUDTUnitEnum(str): + """ + Possible kinds of QUDT unit instances. + """ + pass + + +class PhysicalStateEnum(str, Enum): + SOLID = "SOLID" + """ + A state of matter in which molecules are closely packed and cannot move past each other. + """ + CRYSTAL = "CRYSTAL" + """ + A solid state of matter whose constituents (such as atoms, molecules, or ions) are arranged in a highly ordered microscopic structure, forming a crystal lattice that extends in all directions. + """ + LIQUID = "LIQUID" + """ + A state of matter with a definite volume but no fixed shape. Liquids adapt to the shape of their container and are nearly incompressible, maintaining their volume even under pressure. + """ + GASEOUS = "GASEOUS" + """ + A state of matter with neither fixed volume nor fixed shape. + """ + + + +class DryingMixin(ConfiguredBaseModel): + """ + Mixin providing drying step parameters. Used by preparation methods that + include a drying step after synthesis or precipitation + (Impregnation, CoPrecipitation, DepositionPrecipitation, + SonochemicalSynthesis, MolecularSynthesis). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'mixin': True}) + + drying_device: Optional[list[str]] = Field(default=[], description="""Device used for drying (e.g. oven, rotary evaporator).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], 'slot_uri': 'coremeta4cat:drying_device'} }) + drying_temperature: Optional[list[float]] = Field(default=[], description="""Temperature applied during drying.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], + 'slot_uri': 'coremeta4cat:drying_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + drying_time: Optional[list[float]] = Field(default=[], description="""Duration of the drying step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], + 'slot_uri': 'coremeta4cat:drying_time', + 'unit': {'ucum_code': 'h'}} }) + drying_atmosphere: Optional[list[str]] = Field(default=[], description="""Atmosphere maintained during drying (e.g. air, N2).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], 'slot_uri': 'coremeta4cat:drying_atmosphere'} }) + + +class CalcinationMixin(ConfiguredBaseModel): + """ + Mixin providing calcination step parameters. Used by preparation methods + that include a thermal calcination step + (Impregnation, CoPrecipitation, DepositionPrecipitation, + SonochemicalSynthesis, ExsolutionSynthesis). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'mixin': True}) + + calcination_initial_temperature: Optional[list[float]] = Field(default=[], description="""Initial temperature for calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000057', + 'unit': {'ucum_code': 'Cel'}} }) + calcination_final_temperature: Optional[list[float]] = Field(default=[], description="""Final (target) temperature for calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000058', + 'unit': {'ucum_code': 'Cel'}} }) + calcination_dwelling_time: Optional[list[float]] = Field(default=[], description="""Time held at the final calcination temperature.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000060', + 'unit': {'ucum_code': 'h'}} }) + number_of_cycles: Optional[list[int]] = Field(default=[], description="""Number of repeated cycles in a process (e.g. ALD cycles, impregnation cycles).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin', + 'AtomicLayerDeposition', + 'MolecularSynthesis', + 'XRayAbsorptionSpectroscopy', + 'CyclicVoltammetry'], + 'slot_uri': 'coremeta4cat:number_of_cycles'} }) + calcination_gaseous_environment: Optional[list[str]] = Field(default=[], description="""Gaseous environment maintained during calcination (e.g. air, H2/N2).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], 'slot_uri': 'VOC4CAT:0000055'} }) + calcination_heating_rate: Optional[list[float]] = Field(default=[], description="""Heating rate during calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000059', + 'unit': {'ucum_code': 'Cel/min'}} }) + calcination_gas_flow_rate: Optional[list[float]] = Field(default=[], description="""Gas flow rate maintained during calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000056', + 'unit': {'ucum_code': 'mL/min'}} }) + + +class PrecipitationMixin(ConfiguredBaseModel): + """ + Mixin providing precipitation and wet-chemistry step parameters. Used by + preparation methods based on precipitation from solution + (CoPrecipitation, DepositionPrecipitation). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'mixin': True}) + + precipitating_agent: Optional[list[str]] = Field(default=[], description="""Chemical agent used to induce precipitation (e.g. NaOH, NH3).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:precipitating_agent'} }) + precipitating_concentration: Optional[list[float]] = Field(default=[], description="""Concentration of the precipitating agent.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:precipitating_concentration', + 'unit': {'ucum_code': 'mol/L'}} }) + synthesis_ph: Optional[list[float]] = Field(default=[], description="""pH value maintained or targeted during synthesis.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], 'slot_uri': 'VOC4CAT:0000052'} }) + mixing_rate: Optional[list[float]] = Field(default=[], description="""Stirring rate during mixing of synthesis components.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:mixing_rate', + 'unit': {'ucum_code': 'rpm'}} }) + mixing_time: Optional[list[float]] = Field(default=[], description="""Duration of the mixing step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:mixing_time', + 'unit': {'ucum_code': 'h'}} }) + mixing_temperature: Optional[list[float]] = Field(default=[], description="""Temperature during mixing.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin', 'MolecularSynthesis'], + 'slot_uri': 'coremeta4cat:mixing_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + order_of_addition: Optional[list[str]] = Field(default=[], description="""Order in which reagents or components are combined.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:order_of_addition'} }) + filtration: Optional[list[str]] = Field(default=[], description="""Filtration method used to separate the precipitate (e.g. vacuum filtration).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], 'slot_uri': 'coremeta4cat:filtration'} }) + purification: Optional[list[str]] = Field(default=[], description="""Purification method applied after synthesis (e.g. washing, dialysis).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], 'slot_uri': 'coremeta4cat:purification'} }) + aging_temperature: Optional[list[float]] = Field(default=[], description="""Temperature during aging of the precipitate or gel.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:aging_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + aging_time: Optional[list[float]] = Field(default=[], description="""Duration of the aging step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin', 'SolGel'], + 'slot_uri': 'coremeta4cat:aging_time', + 'unit': {'ucum_code': 'h'}} }) + + +class ThermalSynthesisMixin(ConfiguredBaseModel): + """ + Mixin providing thermal process parameters common to synthesis methods + carried out at elevated temperature in a closed vessel or reactor + (Solvothermal, PlasmaAssisted, CombustionSynthesis, + MicrowaveAssisted, MechanochemicalSynthesis, Sublimation). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'mixin': True}) + + synthesis_temperature: Optional[list[float]] = Field(default=[], description="""Temperature applied during the synthesis step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], + 'slot_uri': 'VOC4CAT:0000051', + 'unit': {'ucum_code': 'Cel'}} }) + synthesis_duration: Optional[list[float]] = Field(default=[], description="""Total duration of the synthesis step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], + 'slot_uri': 'VOC4CAT:0000050', + 'unit': {'ucum_code': 'h'}} }) + equipment: Optional[list[str]] = Field(default=[], description="""Equipment or instrument used in a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], 'slot_uri': 'VOC4CAT:0000187'} }) + vessel_type: Optional[list[str]] = Field(default=[], description="""Type of reaction or synthesis vessel used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], 'slot_uri': 'coremeta4cat:vessel_type'} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + + +class XRaySourceMixin(ConfiguredBaseModel): + """ + Mixin providing X-ray source and monochromator slots, shared by all + X-ray based techniques (PowderXRD, XRayAbsorptionSpectroscopy, XPS, + SingleCrystalXRD). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixin': True}) + + xray_source: Optional[list[str]] = Field(default=[], description="""X-ray source used (e.g. Cu K-alpha, Mo K-alpha, synchrotron).""", json_schema_extra = { "linkml_meta": {'domain_of': ['XRaySourceMixin'], 'slot_uri': 'OBI:0001138'} }) + monochromator: Optional[list[str]] = Field(default=[], description="""Monochromator type or configuration used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['XRaySourceMixin'], 'slot_uri': 'CHMO:0002120'} }) + + +class EnergyRangeMixin(ConfiguredBaseModel): + """ + Mixin providing energy scan range slots, shared by X-ray spectroscopy + techniques that scan over an energy range (XRayAbsorptionSpectroscopy, XPS). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixin': True}) + + minimum_energy: Optional[list[float]] = Field(default=[], description="""Minimum energy of the scan range.""", json_schema_extra = { "linkml_meta": {'domain_of': ['EnergyRangeMixin'], + 'slot_uri': 'coremeta4cat:minimum_energy', + 'unit': {'ucum_code': 'eV'}} }) + maximum_energy: Optional[list[float]] = Field(default=[], description="""Maximum energy of the scan range.""", json_schema_extra = { "linkml_meta": {'domain_of': ['EnergyRangeMixin'], + 'slot_uri': 'coremeta4cat:maximum_energy', + 'unit': {'ucum_code': 'eV'}} }) + + +class ElectronMicroscopyMixin(ConfiguredBaseModel): + """ + Mixin providing electron gun and image parameters shared by electron + microscopy techniques (TransmissionElectronMicroscopy, + ScanningElectronMicroscopy). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixin': True}) + + gun_type: Optional[list[str]] = Field(default=[], description="""Type of electron gun (e.g. FEG, thermionic LaB6).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectronMicroscopyMixin'], 'slot_uri': 'coremeta4cat:gun_type'} }) + acceleration_voltage: Optional[list[float]] = Field(default=[], description="""Acceleration voltage applied to the electron beam.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectronMicroscopyMixin'], + 'slot_uri': 'coremeta4cat:acceleration_voltage', + 'unit': {'ucum_code': 'kV'}} }) + magnification_setting: Optional[list[float]] = Field(default=[], description="""Magnification setting used for imaging.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectronMicroscopyMixin', 'RamanSpectroscopy'], + 'slot_uri': 'AFR:0002226'} }) + + +class TemperatureProgramMixin(ConfiguredBaseModel): + """ + Mixin providing temperature-programme parameters shared by thermal + analysis and temperature-programmed reaction techniques + (Thermogravimetry, TPO, TPR). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixin': True}) + + minimum_temperature: Optional[list[float]] = Field(default=[], description="""Minimum (start) temperature in a temperature programme.""", json_schema_extra = { "linkml_meta": {'domain_of': ['TemperatureProgramMixin'], + 'slot_uri': 'coremeta4cat:minimum_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + maximum_temperature: Optional[list[float]] = Field(default=[], description="""Maximum (final) temperature in a temperature programme.""", json_schema_extra = { "linkml_meta": {'domain_of': ['TemperatureProgramMixin'], + 'slot_uri': 'coremeta4cat:maximum_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + heating_rate: Optional[list[float]] = Field(default=[], description="""Rate at which temperature is increased during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['TemperatureProgramMixin'], + 'slot_uri': 'coremeta4cat:heating_rate', + 'unit': {'ucum_code': 'Cel/min'}} }) + heating_procedure: Optional[list[str]] = Field(default=[], description="""Description of the heating procedure applied.""", json_schema_extra = { "linkml_meta": {'domain_of': ['TemperatureProgramMixin', 'GCMS'], + 'slot_uri': 'coremeta4cat:heating_procedure'} }) + + +class ChromatographyMixin(ConfiguredBaseModel): + """ + Mixin providing chromatographic separation parameters shared by + separation techniques (GCMS, SizeExclusionChromatography, HPLC_MS). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixin': True}) + + column_type: Optional[list[str]] = Field(default=[], description="""Type of chromatographic column used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], 'slot_uri': 'coremeta4cat:column_type'} }) + eluent: Optional[list[str]] = Field(default=[], description="""Eluent or mobile phase used in chromatography.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], 'slot_uri': 'AFRL:0000011'} }) + flow_rate: Optional[list[float]] = Field(default=[], description="""Flow rate of a fluid or gas.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis', + 'ChromatographyMixin', + 'DRIFTS', + 'ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'coremeta4cat:flow_rate', + 'unit': {'ucum_code': 'mL/min'}} }) + injection_volume: Optional[list[float]] = Field(default=[], description="""Volume injected in a chromatographic or mass spectrometric experiment.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], + 'slot_uri': 'coremeta4cat:injection_volume', + 'unit': {'ucum_code': 'uL'}} }) + external_standard: Optional[list[str]] = Field(default=[], description="""External standard used for quantification or calibration.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], + 'slot_uri': 'coremeta4cat:external_standard'} }) + internal_standard: Optional[list[str]] = Field(default=[], description="""Internal standard used for quantification or calibration.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], + 'slot_uri': 'coremeta4cat:internal_standard'} }) + + +class MassRangeMixin(ConfiguredBaseModel): + """ + Mixin providing mass-to-charge scan range slots shared by mass + spectrometry techniques (GCMS, ESI_MS). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixin': True}) + + mz_minimum: Optional[list[float]] = Field(default=[], description="""Minimum m/z value in the mass scan range.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MassRangeMixin'], 'slot_uri': 'AFR:0002652'} }) + mz_maximum: Optional[list[float]] = Field(default=[], description="""Maximum m/z value in the mass scan range.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MassRangeMixin'], 'slot_uri': 'AFR:0002653'} }) + + +class PhotoluminescenceMixin(ConfiguredBaseModel): + """ + Mixin providing optical excitation/emission parameters shared by + photoluminescence techniques (PhotoluminescenceSpectroscopy, + PhotoluminescenceLifetime). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixin': True}) + + excitation_wavelength: Optional[list[float]] = Field(default=[], description="""Excitation wavelength used in photoluminescence measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PhotoluminescenceMixin'], + 'slot_uri': 'AFR:0002479', + 'unit': {'ucum_code': 'nm'}} }) + emission_wavelength: Optional[list[float]] = Field(default=[], description="""Emission wavelength detected in photoluminescence measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PhotoluminescenceMixin'], + 'slot_uri': 'NCIT:C204101', + 'unit': {'ucum_code': 'nm'}} }) + optical_filter: Optional[list[str]] = Field(default=[], description="""Optical filter used in the emission or excitation path.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PhotoluminescenceMixin'], + 'slot_uri': 'coremeta4cat:optical_filter'} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + + +class ElectrochemistryMixin(ConfiguredBaseModel): + """ + Mixin providing electrochemical cell parameters shared by + electrochemical characterization techniques (CyclicVoltammetry, + ConductivityMeasurement). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixin': True}) + + reference_electrode: Optional[list[str]] = Field(default=[], description="""Reference electrode used in electrochemical cell (e.g. Ag/AgCl, RHE).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectrochemistryMixin'], 'slot_uri': 'VOC4CAT:0007204'} }) + working_electrode: Optional[list[str]] = Field(default=[], description="""Working electrode used in electrochemical cell.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectrochemistryMixin'], 'slot_uri': 'VOC4CAT:0007202'} }) + counter_electrode: Optional[list[str]] = Field(default=[], description="""Counter electrode used in electrochemical cell.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectrochemistryMixin'], 'slot_uri': 'VOC4CAT:0007203'} }) + electrolyte_composition: Optional[list[str]] = Field(default=[], description="""Chemical composition of the electrolyte solution.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectrochemistryMixin'], + 'slot_uri': 'coremeta4cat:electrolyte_composition'} }) + electrolyte_concentration: Optional[list[float]] = Field(default=[], description="""Concentration of the electrolyte.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectrochemistryMixin'], + 'slot_uri': 'coremeta4cat:electrolyte_concentration', + 'unit': {'ucum_code': 'mol/L'}} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + + +class Agent(ConfiguredBaseModel): + """ + See [DCAT-AP specs:Agent](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Agent) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'foaf:Agent', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'slot_usage': {'name': {'description': 'A name of the agent.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'name', + 'range': 'string', + 'required': True, + 'slot_uri': 'foaf:name'}, + 'type': {'description': 'The nature of the agent.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'type', + 'range': 'Concept', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcterms:type'}}}) + + name: list[str] = Field(default=..., description="""A name of the agent.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent'], 'slot_uri': 'foaf:name'} }) + type: Optional[Concept] = Field(default=None, description="""The nature of the agent.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'recommended': True, + 'slot_uri': 'dcterms:type'} }) + + +class Catalogue(ConfiguredBaseModel): + """ + See [DCAT-AP specs:Catalogue](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Catalogue) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcat:Catalog', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'slot_usage': {'applicable_legislation': {'description': 'The legislation ' + 'that mandates the ' + 'creation or ' + 'management of the ' + 'Catalog.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'applicable_legislation', + 'range': 'LegalResource', + 'required': False, + 'slot_uri': 'dcatap:applicableLegislation'}, + 'catalogue': {'description': 'A catalogue whose contents are ' + 'of interest in the context of ' + 'this catalogue.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'catalogue', + 'range': 'Catalogue', + 'required': False, + 'slot_uri': 'dcat:catalog'}, + 'creator': {'description': 'An entity responsible for the ' + 'creation of the catalogue.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'creator', + 'range': 'Agent', + 'required': False, + 'slot_uri': 'dcterms:creator'}, + 'description': {'description': 'A free-text account of the ' + 'Catalogue.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'description', + 'range': 'string', + 'required': True, + 'slot_uri': 'dcterms:description'}, + 'geographical_coverage': {'description': 'A geographical area ' + 'covered by the ' + 'Catalogue.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'geographical_coverage', + 'range': 'Location', + 'required': False, + 'slot_uri': 'dcterms:spatial'}, + 'has_dataset': {'description': 'A Dataset that is part of the ' + 'Catalogue.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'has_dataset', + 'range': 'Dataset', + 'required': False, + 'slot_uri': 'dcat:dataset'}, + 'has_part': {'description': 'A related Catalogue that is part ' + 'of the described Catalogue.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'has_part', + 'range': 'Catalogue', + 'required': False, + 'slot_uri': 'dcterms:hasPart'}, + 'homepage': {'description': 'A web page that acts as the main ' + 'page for the Catalogue.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'homepage', + 'range': 'Document', + 'recommended': True, + 'required': False, + 'slot_uri': 'foaf:homepage'}, + 'language': {'description': 'A language used in the textual ' + 'metadata describing titles, ' + 'descriptions, etc. of the ' + 'Datasets in the Catalogue.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'language', + 'range': 'LinguisticSystem', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcterms:language'}, + 'licence': {'description': 'A licence under which the ' + 'Catalogue can be used or reused.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'licence', + 'range': 'LicenseDocument', + 'required': False, + 'slot_uri': 'dcterms:license'}, + 'modification_date': {'description': 'The most recent date on ' + 'which the Catalogue was ' + 'modified.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'modification_date', + 'range': 'date', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcterms:modified'}, + 'publisher': {'description': 'An entity (organisation) ' + 'responsible for making the ' + 'Catalogue available.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'publisher', + 'range': 'Agent', + 'required': True, + 'slot_uri': 'dcterms:publisher'}, + 'record': {'description': 'A Catalogue Record that is part of ' + 'the Catalogue.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'record', + 'range': 'CatalogueRecord', + 'required': False, + 'slot_uri': 'dcat:record'}, + 'release_date': {'description': 'The date of formal issuance ' + '(e.g., publication) of the ' + 'Catalogue.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'release_date', + 'range': 'date', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcterms:issued'}, + 'rights': {'description': 'A statement that specifies rights ' + 'associated with the Catalogue.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'rights', + 'range': 'RightsStatement', + 'required': False, + 'slot_uri': 'dcterms:rights'}, + 'service': {'description': 'A site or end-point (Data Service) ' + 'that is listed in the Catalogue.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'service', + 'range': 'DataService', + 'required': False, + 'slot_uri': 'dcat:service'}, + 'temporal_coverage': {'description': 'A temporal period that ' + 'the Catalogue covers.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'temporal_coverage', + 'range': 'PeriodOfTime', + 'required': False, + 'slot_uri': 'dcterms:temporal'}, + 'themes': {'description': 'A knowledge organization system ' + 'used to classify the Resources that ' + 'are in the Catalogue.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'themes', + 'range': 'ConceptScheme', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcat:themeTaxonomy'}, + 'title': {'description': 'A name given to the Catalogue.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'title', + 'range': 'string', + 'required': True, + 'slot_uri': 'dcterms:title'}}}) + + applicable_legislation: Optional[list[LegalResource]] = Field(default=[], description="""The legislation that mandates the creation or management of the Catalog.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution'], + 'slot_uri': 'dcatap:applicableLegislation'} }) + catalogue: Optional[list[Catalogue]] = Field(default=[], description="""A catalogue whose contents are of interest in the context of this catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue'], 'slot_uri': 'dcat:catalog'} }) + creator: Optional[Agent] = Field(default=None, description="""An entity responsible for the creation of the catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset'], 'slot_uri': 'dcterms:creator'} }) + description: list[str] = Field(default=..., description="""A free-text account of the Catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + geographical_coverage: Optional[list[Location]] = Field(default=[], description="""A geographical area covered by the Catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:spatial'} }) + has_dataset: Optional[list[Dataset]] = Field(default=[], description="""A Dataset that is part of the Catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue'], 'slot_uri': 'dcat:dataset'} }) + has_part: Optional[list[Catalogue]] = Field(default=[], description="""A related Catalogue that is part of the described Catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + homepage: Optional[Document] = Field(default=None, description="""A web page that acts as the main page for the Catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue'], 'recommended': True, 'slot_uri': 'foaf:homepage'} }) + language: Optional[list[LinguisticSystem]] = Field(default=[], description="""A language used in the textual metadata describing titles, descriptions, etc. of the Datasets in the Catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'CatalogueRecord', 'Dataset', 'Distribution'], + 'recommended': True, + 'slot_uri': 'dcterms:language'} }) + licence: Optional[LicenseDocument] = Field(default=None, description="""A licence under which the Catalogue can be used or reused.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'DataService', 'Distribution'], + 'slot_uri': 'dcterms:license'} }) + modification_date: Optional[date] = Field(default=None, description="""The most recent date on which the Catalogue was modified.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', + 'CatalogueRecord', + 'Dataset', + 'DatasetSeries', + 'Distribution'], + 'recommended': True, + 'slot_uri': 'dcterms:modified'} }) + publisher: Agent = Field(default=..., description="""An entity (organisation) responsible for making the Catalogue available.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'DataService', 'Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:publisher'} }) + record: Optional[list[CatalogueRecord]] = Field(default=[], description="""A Catalogue Record that is part of the Catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue'], 'slot_uri': 'dcat:record'} }) + release_date: Optional[date] = Field(default=None, description="""The date of formal issuance (e.g., publication) of the Catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset', 'DatasetSeries', 'Distribution'], + 'recommended': True, + 'slot_uri': 'dcterms:issued'} }) + rights: Optional[RightsStatement] = Field(default=None, description="""A statement that specifies rights associated with the Catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Distribution'], 'slot_uri': 'dcterms:rights'} }) + service: Optional[list[DataService]] = Field(default=[], description="""A site or end-point (Data Service) that is listed in the Catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue'], 'slot_uri': 'dcat:service'} }) + temporal_coverage: Optional[list[PeriodOfTime]] = Field(default=[], description="""A temporal period that the Catalogue covers.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:temporal'} }) + themes: Optional[list[ConceptScheme]] = Field(default=[], description="""A knowledge organization system used to classify the Resources that are in the Catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue'], + 'recommended': True, + 'slot_uri': 'dcat:themeTaxonomy'} }) + title: list[str] = Field(default=..., description="""A name given to the Catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + + +class CatalogueRecord(ConfiguredBaseModel): + """ + See [DCAT-AP specs:CatalogueRecord](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#CatalogueRecord) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcat:CatalogRecord', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'slot_usage': {'application_profile': {'description': 'An Application Profile ' + 'that the Catalogued ' + 'Resource's ' + 'metadata conforms to.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'application_profile', + 'range': 'Standard', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcterms:conformsTo'}, + 'change_type': {'description': 'The status of the catalogue ' + 'record in the context of ' + 'editorial flow of the dataset ' + 'and data service descriptions.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'change_type', + 'range': 'Concept', + 'recommended': True, + 'required': False, + 'slot_uri': 'adms:status'}, + 'description': {'description': 'A free-text account of the ' + 'record. This property can be ' + 'repeated for parallel language ' + 'versions of the description.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'description', + 'range': 'string', + 'required': False, + 'slot_uri': 'dcterms:description'}, + 'language': {'description': 'A language used in the textual ' + 'metadata describing titles, ' + 'descriptions, etc. of the ' + 'Catalogued Resource.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'language', + 'range': 'LinguisticSystem', + 'required': False, + 'slot_uri': 'dcterms:language'}, + 'listing_date': {'description': 'The date on which the ' + 'description of the Resource ' + 'was included in the ' + 'Catalogue.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'listing_date', + 'range': 'date', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcterms:issued'}, + 'modification_date': {'description': 'The most recent date on ' + 'which the Catalogue ' + 'entry was changed or ' + 'modified.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'modification_date', + 'range': 'date', + 'required': True, + 'slot_uri': 'dcterms:modified'}, + 'primary_topic': {'any_of': [{'range': 'Catalogue'}, + {'range': 'Dataset'}, + {'range': 'DatasetSeries'}, + {'range': 'DataService'}], + 'description': 'A link to the Dataset, Data ' + 'service or Catalog described ' + 'in the record.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'primary_topic', + 'range': 'Any', + 'required': True, + 'slot_uri': 'foaf:primaryTopic'}, + 'source_metadata': {'description': 'The original metadata that ' + 'was used in creating ' + 'metadata for the Dataset, ' + 'Data Service or Dataset ' + 'Series.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'source_metadata', + 'range': 'CatalogueRecord', + 'required': False, + 'slot_uri': 'dcterms:source'}, + 'title': {'description': 'A name given to the Catalogue ' + 'Record.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'title', + 'range': 'string', + 'required': False, + 'slot_uri': 'dcterms:title'}}}) + + application_profile: Optional[list[Standard]] = Field(default=[], description="""An Application Profile that the Catalogued Resource's metadata conforms to.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CatalogueRecord'], + 'recommended': True, + 'slot_uri': 'dcterms:conformsTo'} }) + change_type: Optional[Concept] = Field(default=None, description="""The status of the catalogue record in the context of editorial flow of the dataset and data service descriptions.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CatalogueRecord'], + 'recommended': True, + 'slot_uri': 'adms:status'} }) + description: Optional[list[str]] = Field(default=[], description="""A free-text account of the record. This property can be repeated for parallel language versions of the description.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + language: Optional[list[LinguisticSystem]] = Field(default=[], description="""A language used in the textual metadata describing titles, descriptions, etc. of the Catalogued Resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'CatalogueRecord', 'Dataset', 'Distribution'], + 'slot_uri': 'dcterms:language'} }) + listing_date: Optional[date] = Field(default=None, description="""The date on which the description of the Resource was included in the Catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CatalogueRecord'], + 'recommended': True, + 'slot_uri': 'dcterms:issued'} }) + modification_date: date = Field(default=..., description="""The most recent date on which the Catalogue entry was changed or modified.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', + 'CatalogueRecord', + 'Dataset', + 'DatasetSeries', + 'Distribution'], + 'slot_uri': 'dcterms:modified'} }) + primary_topic: Union[Catalogue, DataService, DatasetSeries, str] = Field(default=..., description="""A link to the Dataset, Data service or Catalog described in the record.""", json_schema_extra = { "linkml_meta": {'any_of': [{'range': 'Catalogue'}, + {'range': 'Dataset'}, + {'range': 'DatasetSeries'}, + {'range': 'DataService'}], + 'domain_of': ['CatalogueRecord'], + 'slot_uri': 'foaf:primaryTopic'} }) + source_metadata: Optional[CatalogueRecord] = Field(default=None, description="""The original metadata that was used in creating metadata for the Dataset, Data Service or Dataset Series.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CatalogueRecord'], 'slot_uri': 'dcterms:source'} }) + title: Optional[list[str]] = Field(default=[], description="""A name given to the Catalogue Record.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + + +class Checksum(ConfiguredBaseModel): + """ + See [DCAT-AP specs:Checksum](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Checksum) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'spdx:Checksum', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'slot_usage': {'algorithm': {'description': 'The algorithm used to produce ' + 'the subject Checksum.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'algorithm', + 'range': 'ChecksumAlgorithm', + 'required': True, + 'slot_uri': 'spdx:algorithm'}, + 'checksum_value': {'description': 'A lower case hexadecimal ' + 'encoded digest value ' + 'produced using a specific ' + 'algorithm.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'checksum_value', + 'range': 'hexBinary', + 'required': True, + 'slot_uri': 'spdx:checksumValue'}}}) + + algorithm: ChecksumAlgorithm = Field(default=..., description="""The algorithm used to produce the subject Checksum.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Checksum'], 'slot_uri': 'spdx:algorithm'} }) + checksum_value: str = Field(default=..., description="""A lower case hexadecimal encoded digest value produced using a specific algorithm.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Checksum'], 'slot_uri': 'spdx:checksumValue'} }) + + +class ClassifierMixin(ConfiguredBaseModel): + """ + A mixin with which an entity of this schema can be classified via an additional rdf:type or dcterms:type assertion. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'abstract': True, + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core'], + 'mixin': True, + 'slot_usage': {'type': {'inlined': True, + 'name': 'type', + 'range': 'DefinedTerm'}}}) + + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Activity(ClassifierMixin): + """ + See [DCAT-AP specs:Activity](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Activity) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'prov:Activity', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core'], + 'mixins': ['ClassifierMixin'], + 'notes': ['The specified properties (slots) of this class are part of our ' + 'extension of the DCAT-AP.'], + 'slot_usage': {'carried_out_by': {'name': 'carried_out_by', + 'notes': ['not in DCAT-AP']}, + 'description': {'description': 'The slot to provide a ' + 'description for the Activity.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'description', + 'notes': ['not in DCAT-AP']}, + 'had_input_activity': {'name': 'had_input_activity', + 'notes': ['not in DCAT-AP']}, + 'had_input_entity': {'name': 'had_input_entity', + 'notes': ['not in DCAT-AP']}, + 'had_output_entity': {'name': 'had_output_entity', + 'notes': ['not in DCAT-AP']}, + 'has_part': {'description': 'The slot to provide an Activity ' + 'that is part of the Activity.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'has_part', + 'notes': ['not in DCAT-AP'], + 'range': 'Activity'}, + 'has_qualitative_attribute': {'name': 'has_qualitative_attribute', + 'notes': ['not in DCAT-AP']}, + 'has_quantitative_attribute': {'name': 'has_quantitative_attribute', + 'notes': ['not in DCAT-AP']}, + 'other_identifier': {'description': 'The slot to provide a ' + 'secondary identifier of ' + 'the Activity.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'other_identifier', + 'notes': ['not in DCAT-AP'], + 'range': 'Identifier'}, + 'part_of': {'description': 'The slot to provide an Activity of ' + 'which the Activity is a part.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'part_of', + 'notes': ['not in DCAT-AP'], + 'range': 'Activity'}, + 'title': {'description': 'The slot to provide a title for the ' + 'Activity.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'title', + 'notes': ['not in DCAT-AP']}}}) + + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[list[str]] = Field(default=[], description="""The slot to provide a title for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[list[str]] = Field(default=[], description="""The slot to provide a description for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""The slot to provide a secondary identifier of the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'adms:identifier'} }) + has_part: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity that is part of the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:hasPart'} }) + had_input_entity: Optional[list[Entity]] = Field(default=[], description="""The slot to specify the Entity that was used as an input of an Activity that is to be changed, consumed or transformed.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:used'} }) + had_output_entity: Optional[list[Entity]] = Field(default=[], description="""The slot to specify the Entity that was generated as an output of an Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:generated'} }) + had_input_activity: Optional[list[Activity]] = Field(default=[], description="""The slot to provide a previous Activity that informed the Activity by being causally via a shared participant.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasInformedBy'} }) + carried_out_by: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to specify the AgenticEntity that played a certain part in carrying out the Activity, either via having a specific role, function or disposition that was realized in the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasAssociatedWith'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + part_of: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity of which the Activity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class AgenticEntity(ClassifierMixin): + """ + An entity that is somehow responsible for an Activity to take place. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'prov:Agent', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core'], + 'mixins': ['ClassifierMixin'], + 'slot_usage': {'has_part': {'description': 'The slot to specify parts of an ' + 'AgenticEntity that are themselves ' + 'AgenticEntities.', + 'inlined': True, + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'has_part', + 'range': 'AgenticEntity'}, + 'other_identifier': {'description': 'A slot to provide a ' + 'secondary identifier for ' + 'an Instrument.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'other_identifier', + 'range': 'Identifier', + 'required': False}, + 'part_of': {'description': 'The slot to provide the ' + 'AgenticEntity of which ' + 'theAgenticEntity is a part.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'part_of', + 'notes': ['not in DCAT-AP'], + 'range': 'AgenticEntity'}}}) + + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier for an Instrument.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to specify parts of an AgenticEntity that are themselves AgenticEntities.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to provide the AgenticEntity of which theAgenticEntity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class DataGeneratingActivity(Activity): + """ + An Activity (process) that has the objective to produce information (in form of a dataset) about another Activity or Entity. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'prov:Activity', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core']}) + + evaluated_entity: Optional[list[EvaluatedEntity]] = Field(default=[], description="""The slot to specify the Entity about which the DataGeneratingActivity produced information.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'is_a': 'had_input_entity', + 'recommended': True, + 'slot_uri': 'prov:used'} }) + evaluated_activity: Optional[list[EvaluatedActivity]] = Field(default=[], description="""The slot to specify the Activity about which the DataGeneratingActivity produced information.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'is_a': 'had_input_activity', + 'recommended': True, + 'slot_uri': 'prov:wasInformedBy'} }) + realized_plan: Optional[Plan] = Field(default=None, description="""The slot to specify the Plan (i.e. directive information or procedure) that was realized by an Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:used'} }) + occurred_in: Optional[Surrounding] = Field(default=None, description="""The slot to specify the Surrounding in which an Activity took place.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:atLocation'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[list[str]] = Field(default=[], description="""The slot to provide a title for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[list[str]] = Field(default=[], description="""The slot to provide a description for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""The slot to provide a secondary identifier of the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'adms:identifier'} }) + has_part: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity that is part of the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:hasPart'} }) + had_input_entity: Optional[list[Entity]] = Field(default=[], description="""The slot to specify the Entity that was used as an input of an Activity that is to be changed, consumed or transformed.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:used'} }) + had_output_entity: Optional[list[Entity]] = Field(default=[], description="""The slot to specify the Entity that was generated as an output of an Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:generated'} }) + had_input_activity: Optional[list[Activity]] = Field(default=[], description="""The slot to provide a previous Activity that informed the Activity by being causally via a shared participant.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasInformedBy'} }) + carried_out_by: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to specify the AgenticEntity that played a certain part in carrying out the Activity, either via having a specific role, function or disposition that was realized in the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasAssociatedWith'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + part_of: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity of which the Activity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Synthesis(DataGeneratingActivity): + """ + A DataGeneratingActivity in which a catalyst is prepared. + + The preparation protocol is linked via realized_plan using a + PreparationMethod instance. Input materials (Precursors) are linked via + had_input_entity. The resulting catalyst (CatalystSample) is linked via + had_output_entity. + + The type of synthesis is further specified via rdf_type using an ontology + term (e.g. a voc4cat preparation method term), following DCAT-AP-PLUS + Pattern 3. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'OBI:0000070', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'slot_usage': {'catalyst_measured_properties': {'name': 'catalyst_measured_properties', + 'required': True}, + 'had_input_entity': {'description': 'The Precursor(s) consumed ' + 'during this Synthesis.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'had_input_entity', + 'range': 'Precursor', + 'required': True}, + 'had_output_entity': {'description': 'The CatalystSample ' + 'produced by this ' + 'Synthesis.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'had_output_entity', + 'range': 'CatalystSample', + 'recommended': True}, + 'nominal_composition': {'name': 'nominal_composition', + 'required': True}, + 'realized_plan': {'description': 'The PreparationMethod ' + '(protocol) realized in this ' + 'Synthesis.', + 'name': 'realized_plan', + 'range': 'PreparationMethod', + 'required': True}, + 'storage_conditions': {'name': 'storage_conditions', + 'recommended': True}}}) + + nominal_composition: list[str] = Field(default=..., description="""Nominal elemental or chemical composition of the catalyst (e.g. 5wt% Pt/Al2O3).""", json_schema_extra = { "linkml_meta": {'domain_of': ['Synthesis'], 'slot_uri': 'coremeta4cat:nominal_composition'} }) + catalyst_measured_properties: list[str] = Field(default=..., description="""Key measured properties of the resulting catalyst +(e.g. BET surface area, sieve fraction, molar ratio).""", json_schema_extra = { "linkml_meta": {'domain_of': ['Synthesis'], + 'slot_uri': 'coremeta4cat:catalyst_measured_properties'} }) + storage_conditions: Optional[list[str]] = Field(default=[], description="""Conditions under which the catalyst is stored (e.g. inert atmosphere, 4�C).""", json_schema_extra = { "linkml_meta": {'domain_of': ['Synthesis'], + 'recommended': True, + 'slot_uri': 'coremeta4cat:storage_conditions'} }) + support: Optional[list[str]] = Field(default=[], description="""Support material on which the active phase is deposited (e.g. Al2O3, SiO2).""", json_schema_extra = { "linkml_meta": {'domain_of': ['Synthesis'], 'slot_uri': 'coremeta4cat:support'} }) + solvent: Optional[list[str]] = Field(default=[], description="""Solvent used in a process or sample preparation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Synthesis', + 'NMRSpectroscopy', + 'UVVisSpectroscopy', + 'DynamicLightScattering'], + 'slot_uri': 'VOC4CAT:0007246'} }) + sample_pretreatment: Optional[list[str]] = Field(default=[], description="""Pre-treatment applied to the sample before a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Synthesis', 'Characterization'], 'slot_uri': 'VOC4CAT:0000122'} }) + evaluated_entity: Optional[list[EvaluatedEntity]] = Field(default=[], description="""The slot to specify the Entity about which the DataGeneratingActivity produced information.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'is_a': 'had_input_entity', + 'recommended': True, + 'slot_uri': 'prov:used'} }) + evaluated_activity: Optional[list[EvaluatedActivity]] = Field(default=[], description="""The slot to specify the Activity about which the DataGeneratingActivity produced information.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'is_a': 'had_input_activity', + 'recommended': True, + 'slot_uri': 'prov:wasInformedBy'} }) + realized_plan: PreparationMethod = Field(default=..., description="""The PreparationMethod (protocol) realized in this Synthesis.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:used'} }) + occurred_in: Optional[Surrounding] = Field(default=None, description="""The slot to specify the Surrounding in which an Activity took place.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:atLocation'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[list[str]] = Field(default=[], description="""The slot to provide a title for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[list[str]] = Field(default=[], description="""The slot to provide a description for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""The slot to provide a secondary identifier of the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'adms:identifier'} }) + has_part: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity that is part of the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:hasPart'} }) + had_input_entity: list[Precursor] = Field(default=..., description="""The Precursor(s) consumed during this Synthesis.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:used'} }) + had_output_entity: Optional[list[CatalystSample]] = Field(default=[], description="""The CatalystSample produced by this Synthesis.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:generated'} }) + had_input_activity: Optional[list[Activity]] = Field(default=[], description="""The slot to provide a previous Activity that informed the Activity by being causally via a shared participant.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasInformedBy'} }) + carried_out_by: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to specify the AgenticEntity that played a certain part in carrying out the Activity, either via having a specific role, function or disposition that was realized in the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasAssociatedWith'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + part_of: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity of which the Activity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Characterization(DataGeneratingActivity): + """ + A DataGeneratingActivity in which a catalyst sample or catalytic material + is characterized using an analytical technique. + + The catalyst sample being characterized is linked via evaluated_entity. + The analytical protocol is linked via realized_plan using a + CharacterizationTechnique instance. The instrument used is linked via + carried_out_by as a Device. + + The specific technique type is expressed via rdf_type using an ontology + term (e.g. CHMO:0000158 for powder XRD, CHMO:0000404 for XPS), + following DCAT-AP-PLUS Pattern 3 � exactly as NMRSpectroscopy uses + rdf_type: CHMO:0000613. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'OBI:0000070', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'slot_usage': {'equipment': {'description': 'Instrument or equipment used for ' + 'characterization.', + 'name': 'equipment', + 'required': True}, + 'evaluated_entity': {'description': 'The catalyst sample or ' + 'material being ' + 'characterized.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'evaluated_entity', + 'range': 'EvaluatedEntity', + 'recommended': True}, + 'rdf_type': {'description': 'The type of characterization ' + 'technique as an ontology term, ' + 'e.g.\n' + 'CHMO:0000158 (powder XRD), ' + 'CHMO:0000404 (XPS), ' + 'VOC4CAT:0000075 (SEM).', + 'name': 'rdf_type', + 'recommended': True}, + 'realized_plan': {'description': 'The ' + 'CharacterizationTechnique ' + '(protocol) realized in this ' + 'Characterization.', + 'name': 'realized_plan', + 'range': 'CharacterizationTechnique', + 'required': True}}}) + + sample_state: Optional[list[SampleStateEnum]] = Field(default=[], description="""Physical state of the sample during characterization.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Characterization'], 'slot_uri': 'coremeta4cat:sample_state'} }) + sample_description: Optional[list[str]] = Field(default=[], description="""Free-text description of the sample used in this characterization.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Characterization'], + 'slot_uri': 'coremeta4cat:sample_description'} }) + sample_preparation: Optional[list[str]] = Field(default=[], description="""Sample preparation steps applied immediately before measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Characterization'], 'slot_uri': 'AFP:0001159'} }) + sample_pretreatment: Optional[list[str]] = Field(default=[], description="""Pre-treatment applied to the sample before a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Synthesis', 'Characterization'], 'slot_uri': 'VOC4CAT:0000122'} }) + detector_type: Optional[list[str]] = Field(default=[], description="""Type of detector used in the measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Characterization'], 'slot_uri': 'AFR:0000317'} }) + evaluated_entity: Optional[list[EvaluatedEntity]] = Field(default=[], description="""The catalyst sample or material being characterized.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'is_a': 'had_input_entity', + 'recommended': True, + 'slot_uri': 'prov:used'} }) + evaluated_activity: Optional[list[EvaluatedActivity]] = Field(default=[], description="""The slot to specify the Activity about which the DataGeneratingActivity produced information.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'is_a': 'had_input_activity', + 'recommended': True, + 'slot_uri': 'prov:wasInformedBy'} }) + realized_plan: CharacterizationTechnique = Field(default=..., description="""The CharacterizationTechnique (protocol) realized in this Characterization.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:used'} }) + occurred_in: Optional[Surrounding] = Field(default=None, description="""The slot to specify the Surrounding in which an Activity took place.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:atLocation'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[list[str]] = Field(default=[], description="""The slot to provide a title for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[list[str]] = Field(default=[], description="""The slot to provide a description for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""The slot to provide a secondary identifier of the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'adms:identifier'} }) + has_part: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity that is part of the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:hasPart'} }) + had_input_entity: Optional[list[Entity]] = Field(default=[], description="""The slot to specify the Entity that was used as an input of an Activity that is to be changed, consumed or transformed.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:used'} }) + had_output_entity: Optional[list[Entity]] = Field(default=[], description="""The slot to specify the Entity that was generated as an output of an Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:generated'} }) + had_input_activity: Optional[list[Activity]] = Field(default=[], description="""The slot to provide a previous Activity that informed the Activity by being causally via a shared participant.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasInformedBy'} }) + carried_out_by: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to specify the AgenticEntity that played a certain part in carrying out the Activity, either via having a specific role, function or disposition that was realized in the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasAssociatedWith'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + part_of: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity of which the Activity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The type of characterization technique as an ontology term, e.g. +CHMO:0000158 (powder XRD), CHMO:0000404 (XPS), VOC4CAT:0000075 (SEM).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class DataAnalysis(DataGeneratingActivity): + """ + An Activity that evaluates the data produced by another Activity. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'prov:Activity', + 'close_mappings': ['NCIT:C25391'], + 'exact_mappings': ['OBI:0200000'], + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core'], + 'slot_usage': {'evaluated_entity': {'description': 'A slot to provide the ' + 'data that was analysed by ' + 'the DataAnalysis.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'evaluated_entity', + 'range': 'AnalysisSourceData'}}}) + + evaluated_entity: Optional[list[AnalysisSourceData]] = Field(default=[], description="""A slot to provide the data that was analysed by the DataAnalysis.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'is_a': 'had_input_entity', + 'recommended': True, + 'slot_uri': 'prov:used'} }) + evaluated_activity: Optional[list[EvaluatedActivity]] = Field(default=[], description="""The slot to specify the Activity about which the DataGeneratingActivity produced information.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'is_a': 'had_input_activity', + 'recommended': True, + 'slot_uri': 'prov:wasInformedBy'} }) + realized_plan: Optional[Plan] = Field(default=None, description="""The slot to specify the Plan (i.e. directive information or procedure) that was realized by an Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:used'} }) + occurred_in: Optional[Surrounding] = Field(default=None, description="""The slot to specify the Surrounding in which an Activity took place.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:atLocation'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[list[str]] = Field(default=[], description="""The slot to provide a title for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[list[str]] = Field(default=[], description="""The slot to provide a description for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""The slot to provide a secondary identifier of the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'adms:identifier'} }) + has_part: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity that is part of the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:hasPart'} }) + had_input_entity: Optional[list[Entity]] = Field(default=[], description="""The slot to specify the Entity that was used as an input of an Activity that is to be changed, consumed or transformed.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:used'} }) + had_output_entity: Optional[list[Entity]] = Field(default=[], description="""The slot to specify the Entity that was generated as an output of an Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:generated'} }) + had_input_activity: Optional[list[Activity]] = Field(default=[], description="""The slot to provide a previous Activity that informed the Activity by being causally via a shared participant.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasInformedBy'} }) + carried_out_by: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to specify the AgenticEntity that played a certain part in carrying out the Activity, either via having a specific role, function or disposition that was realized in the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasAssociatedWith'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + part_of: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity of which the Activity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class DataService(ConfiguredBaseModel): + """ + See [DCAT-AP specs:DataService](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#DataService) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcat:DataService', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'slot_usage': {'access_rights': {'description': 'Information regarding access ' + 'or restrictions based on ' + 'privacy, security, or other ' + 'policies.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'access_rights', + 'range': 'RightsStatement', + 'required': False, + 'slot_uri': 'dcterms:accessRights'}, + 'applicable_legislation': {'description': 'The legislation ' + 'that mandates the ' + 'creation or ' + 'management of the ' + 'Data Service.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'applicable_legislation', + 'range': 'LegalResource', + 'required': False, + 'slot_uri': 'dcatap:applicableLegislation'}, + 'conforms_to': {'description': 'An established (technical) ' + 'standard to which the Data ' + 'Service conforms.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'conforms_to', + 'range': 'Standard', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcterms:conformsTo'}, + 'contact_point': {'description': 'Contact information that can ' + 'be used for sending comments ' + 'about the Data Service.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'contact_point', + 'range': 'Kind', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcat:contactPoint'}, + 'description': {'description': 'A free-text account of the ' + 'Data Service.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'description', + 'range': 'string', + 'required': False, + 'slot_uri': 'dcterms:description'}, + 'documentation': {'description': 'A page or document about ' + 'this Data Service', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'documentation', + 'range': 'Document', + 'required': False, + 'slot_uri': 'foaf:page'}, + 'endpoint_URL': {'description': 'The root location or primary ' + 'endpoint of the service (an ' + 'IRI).', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'endpoint_URL', + 'range': 'Resource', + 'required': True, + 'slot_uri': 'dcat:endpointURL'}, + 'endpoint_description': {'description': 'A description of the ' + 'services available ' + 'via the end-points, ' + 'including their ' + 'operations, ' + 'parameters etc.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'endpoint_description', + 'range': 'Resource', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcat:endpointDescription'}, + 'format': {'description': 'The structure that can be returned ' + 'by querying the endpointURL.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'format', + 'range': 'MediaTypeOrExtent', + 'required': False, + 'slot_uri': 'dcterms:format'}, + 'keyword': {'description': 'A keyword or tag describing the ' + 'Data Service.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'keyword', + 'range': 'string', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcat:keyword'}, + 'landing_page': {'description': 'A web page that provides ' + 'access to the Data Service ' + 'and/or additional ' + 'information.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'landing_page', + 'range': 'Document', + 'required': False, + 'slot_uri': 'dcat:landingPage'}, + 'licence': {'description': 'A licence under which the Data ' + 'service is made available.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'licence', + 'range': 'LicenseDocument', + 'required': False, + 'slot_uri': 'dcterms:license'}, + 'publisher': {'description': 'An entity (organisation) ' + 'responsible for making the Data ' + 'Service available.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'publisher', + 'range': 'Agent', + 'required': False, + 'slot_uri': 'dcterms:publisher'}, + 'serves_dataset': {'description': 'This property refers to a ' + 'collection of data that ' + 'this data service can ' + 'distribute.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'serves_dataset', + 'range': 'Dataset', + 'required': False, + 'slot_uri': 'dcat:servesDataset'}, + 'theme': {'description': 'A category of the Data Service.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'theme', + 'range': 'Concept', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcat:theme'}, + 'title': {'description': 'A name given to the Data Service.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'title', + 'range': 'string', + 'required': True, + 'slot_uri': 'dcterms:title'}}}) + + access_rights: Optional[RightsStatement] = Field(default=None, description="""Information regarding access or restrictions based on privacy, security, or other policies.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], 'slot_uri': 'dcterms:accessRights'} }) + applicable_legislation: Optional[list[LegalResource]] = Field(default=[], description="""The legislation that mandates the creation or management of the Data Service.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution'], + 'slot_uri': 'dcatap:applicableLegislation'} }) + conforms_to: Optional[list[Standard]] = Field(default=[], description="""An established (technical) standard to which the Data Service conforms.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], + 'recommended': True, + 'slot_uri': 'dcterms:conformsTo'} }) + contact_point: Optional[list[Kind]] = Field(default=[], description="""Contact information that can be used for sending comments about the Data Service.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset', 'DatasetSeries'], + 'recommended': True, + 'slot_uri': 'dcat:contactPoint'} }) + description: Optional[list[str]] = Field(default=[], description="""A free-text account of the Data Service.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + documentation: Optional[list[Document]] = Field(default=[], description="""A page or document about this Data Service""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset', 'Distribution'], + 'slot_uri': 'foaf:page'} }) + endpoint_URL: list[Resource] = Field(default=..., description="""The root location or primary endpoint of the service (an IRI).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService'], 'slot_uri': 'dcat:endpointURL'} }) + endpoint_description: Optional[list[Resource]] = Field(default=[], description="""A description of the services available via the end-points, including their operations, parameters etc.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService'], + 'recommended': True, + 'slot_uri': 'dcat:endpointDescription'} }) + format: Optional[list[MediaTypeOrExtent]] = Field(default=[], description="""The structure that can be returned by querying the endpointURL.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Distribution'], 'slot_uri': 'dcterms:format'} }) + keyword: Optional[list[str]] = Field(default=[], description="""A keyword or tag describing the Data Service.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], + 'recommended': True, + 'slot_uri': 'dcat:keyword'} }) + landing_page: Optional[list[Document]] = Field(default=[], description="""A web page that provides access to the Data Service and/or additional information.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], 'slot_uri': 'dcat:landingPage'} }) + licence: Optional[LicenseDocument] = Field(default=None, description="""A licence under which the Data service is made available.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'DataService', 'Distribution'], + 'slot_uri': 'dcterms:license'} }) + publisher: Optional[Agent] = Field(default=None, description="""An entity (organisation) responsible for making the Data Service available.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'DataService', 'Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:publisher'} }) + serves_dataset: Optional[list[Dataset]] = Field(default=[], description="""This property refers to a collection of data that this data service can distribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService'], 'slot_uri': 'dcat:servesDataset'} }) + theme: Optional[list[Concept]] = Field(default=[], description="""A category of the Data Service.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], + 'recommended': True, + 'slot_uri': 'dcat:theme'} }) + title: list[str] = Field(default=..., description="""A name given to the Data Service.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + + +class Dataset(ConfiguredBaseModel): + """ + A collection of data, published or curated by a single agent, and available for access or download in one or more representations. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcat:Dataset', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core'], + 'slot_usage': {'access_rights': {'description': 'Information that indicates ' + 'whether the Dataset is ' + 'publicly accessible, has ' + 'access restrictions or is ' + 'not public.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'access_rights', + 'range': 'RightsStatement', + 'required': False, + 'slot_uri': 'dcterms:accessRights'}, + 'applicable_legislation': {'description': 'The legislation ' + 'that mandates the ' + 'creation or ' + 'management of the ' + 'Dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'applicable_legislation', + 'range': 'LegalResource', + 'required': False, + 'slot_uri': 'dcatap:applicableLegislation'}, + 'conforms_to': {'description': 'An implementing rule or other ' + 'specification.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'conforms_to', + 'range': 'Standard', + 'required': False, + 'slot_uri': 'dcterms:conformsTo'}, + 'contact_point': {'description': 'Contact information that can ' + 'be used for sending comments ' + 'about the Dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'contact_point', + 'range': 'Kind', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcat:contactPoint'}, + 'creator': {'description': 'An entity responsible for ' + 'producing the dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'creator', + 'range': 'Agent', + 'required': False, + 'slot_uri': 'dcterms:creator'}, + 'dataset_distribution': {'description': 'An available ' + 'Distribution for the ' + 'Dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'dataset_distribution', + 'range': 'Distribution', + 'required': False, + 'slot_uri': 'dcat:distribution'}, + 'description': {'description': 'A free-text account of the ' + 'Dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'description', + 'range': 'string', + 'required': True, + 'slot_uri': 'dcterms:description'}, + 'documentation': {'description': 'A page or document about ' + 'this Dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'documentation', + 'range': 'Document', + 'required': False, + 'slot_uri': 'foaf:page'}, + 'frequency': {'description': 'The frequency at which the ' + 'Dataset is updated.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'frequency', + 'range': 'Frequency', + 'required': False, + 'slot_uri': 'dcterms:accrualPeriodicity'}, + 'geographical_coverage': {'description': 'A geographic region ' + 'that is covered by ' + 'the Dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'geographical_coverage', + 'range': 'Location', + 'required': False, + 'slot_uri': 'dcterms:spatial'}, + 'has_version': {'description': 'A related Dataset that is a ' + 'version, edition, or ' + 'adaptation of the described ' + 'Dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'has_version', + 'range': 'Dataset', + 'required': False, + 'slot_uri': 'dcat:hasVersion'}, + 'identifier': {'description': 'The main identifier for the ' + 'Dataset, e.g. the URI or other ' + 'unique identifier in the ' + 'context of the Catalogue.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'identifier', + 'range': 'string', + 'required': False, + 'slot_uri': 'dcterms:identifier'}, + 'in_series': {'description': 'A dataset series of which the ' + 'dataset is part.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'in_series', + 'range': 'DatasetSeries', + 'required': False, + 'slot_uri': 'dcat:inSeries'}, + 'is_referenced_by': {'description': 'A related resource, such ' + 'as a publication, that ' + 'references, cites, or ' + 'otherwise points to the ' + 'dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'is_referenced_by', + 'range': 'Resource', + 'required': False, + 'slot_uri': 'dcterms:isReferencedBy'}, + 'keyword': {'description': 'A keyword or tag describing the ' + 'Dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'keyword', + 'range': 'string', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcat:keyword'}, + 'landing_page': {'description': 'A web page that provides ' + 'access to the Dataset, its ' + 'Distributions and/or ' + 'additional information.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'landing_page', + 'range': 'Document', + 'required': False, + 'slot_uri': 'dcat:landingPage'}, + 'language': {'description': 'A language of the Dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'language', + 'range': 'LinguisticSystem', + 'required': False, + 'slot_uri': 'dcterms:language'}, + 'modification_date': {'description': 'The most recent date on ' + 'which the Dataset was ' + 'changed or modified.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'modification_date', + 'range': 'date', + 'required': False, + 'slot_uri': 'dcterms:modified'}, + 'other_identifier': {'description': 'A secondary identifier of ' + 'the Dataset', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'other_identifier', + 'range': 'Identifier', + 'required': False, + 'slot_uri': 'adms:identifier'}, + 'provenance': {'description': 'A statement about the lineage ' + 'of a Dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'provenance', + 'range': 'ProvenanceStatement', + 'required': False, + 'slot_uri': 'dcterms:provenance'}, + 'publisher': {'description': 'An entity (organisation) ' + 'responsible for making the ' + 'Dataset available.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'publisher', + 'range': 'Agent', + 'required': False, + 'slot_uri': 'dcterms:publisher'}, + 'qualified_attribution': {'description': 'An Agent having some ' + 'form of ' + 'responsibility for ' + 'the resource.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'qualified_attribution', + 'range': 'Attribution', + 'required': False, + 'slot_uri': 'prov:qualifiedAttribution'}, + 'qualified_relation': {'description': 'A description of a ' + 'relationship with ' + 'another resource.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'qualified_relation', + 'range': 'Relationship', + 'required': False, + 'slot_uri': 'dcat:qualifiedRelation'}, + 'related_resource': {'description': 'A related resource.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'related_resource', + 'range': 'Resource', + 'required': False, + 'slot_uri': 'dcterms:relation'}, + 'release_date': {'description': 'The date of formal issuance ' + '(e.g., publication) of the ' + 'Dataset.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'release_date', + 'range': 'date', + 'required': False, + 'slot_uri': 'dcterms:issued'}, + 'sample': {'description': 'A sample distribution of the ' + 'dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'sample', + 'range': 'Distribution', + 'required': False, + 'slot_uri': 'adms:sample'}, + 'source': {'description': 'A related Dataset from which the ' + 'described Dataset is derived.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'source', + 'range': 'Dataset', + 'required': False, + 'slot_uri': 'dcterms:source'}, + 'spatial_resolution': {'description': 'The minimum spatial ' + 'separation resolvable ' + 'in a dataset, measured ' + 'in meters.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'spatial_resolution', + 'range': 'decimal', + 'required': False, + 'slot_uri': 'dcat:spatialResolutionInMeters'}, + 'temporal_coverage': {'description': 'A temporal period that ' + 'the Dataset covers.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'temporal_coverage', + 'range': 'PeriodOfTime', + 'required': False, + 'slot_uri': 'dcterms:temporal'}, + 'temporal_resolution': {'description': 'The minimum time ' + 'period resolvable in ' + 'the dataset.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'temporal_resolution', + 'range': 'duration', + 'required': False, + 'slot_uri': 'dcat:temporalResolution'}, + 'theme': {'description': 'A category of the Dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'theme', + 'range': 'Concept', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcat:theme'}, + 'title': {'description': 'A name given to the Dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'title', + 'range': 'string', + 'required': True, + 'slot_uri': 'dcterms:title'}, + 'type': {'description': 'A type of the Dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'type', + 'range': 'Concept', + 'required': False, + 'slot_uri': 'dcterms:type'}, + 'version': {'description': 'The version indicator (name or ' + 'identifier) of a resource.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'version', + 'range': 'string', + 'required': False, + 'slot_uri': 'dcat:version'}, + 'version_notes': {'description': 'A description of the ' + 'differences between this ' + 'version and a previous ' + 'version of the Dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'version_notes', + 'range': 'string', + 'required': False, + 'slot_uri': 'adms:versionNotes'}, + 'was_generated_by': {'description': 'An activity that ' + 'generated, or provides ' + 'the business context for, ' + 'the creation of the ' + 'dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'was_generated_by', + 'notes': ['stricter than DCAT-AP'], + 'range': 'DataGeneratingActivity', + 'required': True, + 'slot_uri': 'prov:wasGeneratedBy'}}}) + + access_rights: Optional[RightsStatement] = Field(default=None, description="""Information that indicates whether the Dataset is publicly accessible, has access restrictions or is not public.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], 'slot_uri': 'dcterms:accessRights'} }) + applicable_legislation: Optional[list[LegalResource]] = Field(default=[], description="""The legislation that mandates the creation or management of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution'], + 'slot_uri': 'dcatap:applicableLegislation'} }) + conforms_to: Optional[list[Standard]] = Field(default=[], description="""An implementing rule or other specification.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], 'slot_uri': 'dcterms:conformsTo'} }) + contact_point: Optional[list[Kind]] = Field(default=[], description="""Contact information that can be used for sending comments about the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset', 'DatasetSeries'], + 'recommended': True, + 'slot_uri': 'dcat:contactPoint'} }) + creator: Optional[list[Agent]] = Field(default=[], description="""An entity responsible for producing the dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset'], 'slot_uri': 'dcterms:creator'} }) + dataset_distribution: Optional[list[Distribution]] = Field(default=[], description="""An available Distribution for the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcat:distribution'} }) + description: list[str] = Field(default=..., description="""A free-text account of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + documentation: Optional[list[Document]] = Field(default=[], description="""A page or document about this Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset', 'Distribution'], + 'slot_uri': 'foaf:page'} }) + frequency: Optional[Frequency] = Field(default=None, description="""The frequency at which the Dataset is updated.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:accrualPeriodicity'} }) + geographical_coverage: Optional[list[Location]] = Field(default=[], description="""A geographic region that is covered by the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:spatial'} }) + has_version: Optional[list[Dataset]] = Field(default=[], description="""A related Dataset that is a version, edition, or adaptation of the described Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcat:hasVersion'} }) + identifier: Optional[list[str]] = Field(default=[], description="""The main identifier for the Dataset, e.g. the URI or other unique identifier in the context of the Catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcterms:identifier'} }) + in_series: Optional[list[DatasetSeries]] = Field(default=[], description="""A dataset series of which the dataset is part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcat:inSeries'} }) + is_referenced_by: Optional[list[Resource]] = Field(default=[], description="""A related resource, such as a publication, that references, cites, or otherwise points to the dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcterms:isReferencedBy'} }) + keyword: Optional[list[str]] = Field(default=[], description="""A keyword or tag describing the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], + 'recommended': True, + 'slot_uri': 'dcat:keyword'} }) + landing_page: Optional[list[Document]] = Field(default=[], description="""A web page that provides access to the Dataset, its Distributions and/or additional information.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], 'slot_uri': 'dcat:landingPage'} }) + language: Optional[list[LinguisticSystem]] = Field(default=[], description="""A language of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'CatalogueRecord', 'Dataset', 'Distribution'], + 'slot_uri': 'dcterms:language'} }) + modification_date: Optional[date] = Field(default=None, description="""The most recent date on which the Dataset was changed or modified.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', + 'CatalogueRecord', + 'Dataset', + 'DatasetSeries', + 'Distribution'], + 'slot_uri': 'dcterms:modified'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A secondary identifier of the Dataset""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + provenance: Optional[list[ProvenanceStatement]] = Field(default=[], description="""A statement about the lineage of a Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcterms:provenance'} }) + publisher: Optional[Agent] = Field(default=None, description="""An entity (organisation) responsible for making the Dataset available.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'DataService', 'Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:publisher'} }) + qualified_attribution: Optional[list[Attribution]] = Field(default=[], description="""An Agent having some form of responsibility for the resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'prov:qualifiedAttribution'} }) + qualified_relation: Optional[list[Relationship]] = Field(default=[], description="""A description of a relationship with another resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcat:qualifiedRelation'} }) + related_resource: Optional[list[Resource]] = Field(default=[], description="""A related resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'ChemicalReaction'], 'slot_uri': 'dcterms:relation'} }) + release_date: Optional[date] = Field(default=None, description="""The date of formal issuance (e.g., publication) of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset', 'DatasetSeries', 'Distribution'], + 'slot_uri': 'dcterms:issued'} }) + sample: Optional[list[Distribution]] = Field(default=[], description="""A sample distribution of the dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'adms:sample'} }) + source: Optional[list[Dataset]] = Field(default=[], description="""A related Dataset from which the described Dataset is derived.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcterms:source'} }) + spatial_resolution: Optional[Decimal] = Field(default=None, description="""The minimum spatial separation resolvable in a dataset, measured in meters.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'Distribution'], + 'slot_uri': 'dcat:spatialResolutionInMeters'} }) + temporal_coverage: Optional[list[PeriodOfTime]] = Field(default=[], description="""A temporal period that the Dataset covers.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:temporal'} }) + temporal_resolution: Optional[str] = Field(default=None, description="""The minimum time period resolvable in the dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'Distribution'], + 'slot_uri': 'dcat:temporalResolution'} }) + theme: Optional[list[Concept]] = Field(default=[], description="""A category of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], + 'recommended': True, + 'slot_uri': 'dcat:theme'} }) + title: list[str] = Field(default=..., description="""A name given to the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + type: Optional[list[Concept]] = Field(default=[], description="""A type of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + version: Optional[str] = Field(default=None, description="""The version indicator (name or identifier) of a resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcat:version'} }) + version_notes: Optional[list[str]] = Field(default=[], description="""A description of the differences between this version and a previous version of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'adms:versionNotes'} }) + was_generated_by: list[DataGeneratingActivity] = Field(default=..., description="""An activity that generated, or provides the business context for, the creation of the dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'EvaluatedEntity'], + 'notes': ['stricter than DCAT-AP'], + 'slot_uri': 'prov:wasGeneratedBy'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + is_about_entity: Optional[list[EvaluatedEntity]] = Field(default=[], description="""A slot to provide the EvaluatedEntity a Dataset is about.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], + 'exact_mappings': ['IAO:0000136'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:subject'} }) + is_about_activity: Optional[list[EvaluatedActivity]] = Field(default=[], description="""A slot to provide the EvaluatedActivity a Dataset is about.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], + 'exact_mappings': ['IAO:0000136'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:subject'} }) + + +class AnalysisDataset(Dataset): + """ + A Dataset that was generated by an analysis of some previously generated data. For example, a dataset that contains the data of an assignment of a chemical structure to a sample based on the spectral data obtained from the sample is an AnalyticalDataset. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcat:Dataset', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core'], + 'slot_usage': {'was_generated_by': {'inlined_as_list': True, + 'multivalued': True, + 'name': 'was_generated_by', + 'range': 'DataAnalysis'}}}) + + access_rights: Optional[RightsStatement] = Field(default=None, description="""Information that indicates whether the Dataset is publicly accessible, has access restrictions or is not public.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], 'slot_uri': 'dcterms:accessRights'} }) + applicable_legislation: Optional[list[LegalResource]] = Field(default=[], description="""The legislation that mandates the creation or management of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution'], + 'slot_uri': 'dcatap:applicableLegislation'} }) + conforms_to: Optional[list[Standard]] = Field(default=[], description="""An implementing rule or other specification.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], 'slot_uri': 'dcterms:conformsTo'} }) + contact_point: Optional[list[Kind]] = Field(default=[], description="""Contact information that can be used for sending comments about the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset', 'DatasetSeries'], + 'recommended': True, + 'slot_uri': 'dcat:contactPoint'} }) + creator: Optional[list[Agent]] = Field(default=[], description="""An entity responsible for producing the dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset'], 'slot_uri': 'dcterms:creator'} }) + dataset_distribution: Optional[list[Distribution]] = Field(default=[], description="""An available Distribution for the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcat:distribution'} }) + description: list[str] = Field(default=..., description="""A free-text account of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + documentation: Optional[list[Document]] = Field(default=[], description="""A page or document about this Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset', 'Distribution'], + 'slot_uri': 'foaf:page'} }) + frequency: Optional[Frequency] = Field(default=None, description="""The frequency at which the Dataset is updated.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:accrualPeriodicity'} }) + geographical_coverage: Optional[list[Location]] = Field(default=[], description="""A geographic region that is covered by the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:spatial'} }) + has_version: Optional[list[Dataset]] = Field(default=[], description="""A related Dataset that is a version, edition, or adaptation of the described Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcat:hasVersion'} }) + identifier: Optional[list[str]] = Field(default=[], description="""The main identifier for the Dataset, e.g. the URI or other unique identifier in the context of the Catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcterms:identifier'} }) + in_series: Optional[list[DatasetSeries]] = Field(default=[], description="""A dataset series of which the dataset is part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcat:inSeries'} }) + is_referenced_by: Optional[list[Resource]] = Field(default=[], description="""A related resource, such as a publication, that references, cites, or otherwise points to the dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcterms:isReferencedBy'} }) + keyword: Optional[list[str]] = Field(default=[], description="""A keyword or tag describing the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], + 'recommended': True, + 'slot_uri': 'dcat:keyword'} }) + landing_page: Optional[list[Document]] = Field(default=[], description="""A web page that provides access to the Dataset, its Distributions and/or additional information.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], 'slot_uri': 'dcat:landingPage'} }) + language: Optional[list[LinguisticSystem]] = Field(default=[], description="""A language of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'CatalogueRecord', 'Dataset', 'Distribution'], + 'slot_uri': 'dcterms:language'} }) + modification_date: Optional[date] = Field(default=None, description="""The most recent date on which the Dataset was changed or modified.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', + 'CatalogueRecord', + 'Dataset', + 'DatasetSeries', + 'Distribution'], + 'slot_uri': 'dcterms:modified'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A secondary identifier of the Dataset""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + provenance: Optional[list[ProvenanceStatement]] = Field(default=[], description="""A statement about the lineage of a Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcterms:provenance'} }) + publisher: Optional[Agent] = Field(default=None, description="""An entity (organisation) responsible for making the Dataset available.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'DataService', 'Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:publisher'} }) + qualified_attribution: Optional[list[Attribution]] = Field(default=[], description="""An Agent having some form of responsibility for the resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'prov:qualifiedAttribution'} }) + qualified_relation: Optional[list[Relationship]] = Field(default=[], description="""A description of a relationship with another resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcat:qualifiedRelation'} }) + related_resource: Optional[list[Resource]] = Field(default=[], description="""A related resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'ChemicalReaction'], 'slot_uri': 'dcterms:relation'} }) + release_date: Optional[date] = Field(default=None, description="""The date of formal issuance (e.g., publication) of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset', 'DatasetSeries', 'Distribution'], + 'slot_uri': 'dcterms:issued'} }) + sample: Optional[list[Distribution]] = Field(default=[], description="""A sample distribution of the dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'adms:sample'} }) + source: Optional[list[Dataset]] = Field(default=[], description="""A related Dataset from which the described Dataset is derived.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcterms:source'} }) + spatial_resolution: Optional[Decimal] = Field(default=None, description="""The minimum spatial separation resolvable in a dataset, measured in meters.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'Distribution'], + 'slot_uri': 'dcat:spatialResolutionInMeters'} }) + temporal_coverage: Optional[list[PeriodOfTime]] = Field(default=[], description="""A temporal period that the Dataset covers.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:temporal'} }) + temporal_resolution: Optional[str] = Field(default=None, description="""The minimum time period resolvable in the dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'Distribution'], + 'slot_uri': 'dcat:temporalResolution'} }) + theme: Optional[list[Concept]] = Field(default=[], description="""A category of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], + 'recommended': True, + 'slot_uri': 'dcat:theme'} }) + title: list[str] = Field(default=..., description="""A name given to the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + type: Optional[list[Concept]] = Field(default=[], description="""A type of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + version: Optional[str] = Field(default=None, description="""The version indicator (name or identifier) of a resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcat:version'} }) + version_notes: Optional[list[str]] = Field(default=[], description="""A description of the differences between this version and a previous version of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'adms:versionNotes'} }) + was_generated_by: list[DataAnalysis] = Field(default=..., description="""An activity that generated, or provides the business context for, the creation of the dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'EvaluatedEntity'], + 'notes': ['stricter than DCAT-AP'], + 'slot_uri': 'prov:wasGeneratedBy'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + is_about_entity: Optional[list[EvaluatedEntity]] = Field(default=[], description="""A slot to provide the EvaluatedEntity a Dataset is about.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], + 'exact_mappings': ['IAO:0000136'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:subject'} }) + is_about_activity: Optional[list[EvaluatedActivity]] = Field(default=[], description="""A slot to provide the EvaluatedActivity a Dataset is about.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], + 'exact_mappings': ['IAO:0000136'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:subject'} }) + + +class DatasetSeries(ConfiguredBaseModel): + """ + See [DCAT-AP specs:DatasetSeries](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#DatasetSeries) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcat:DatasetSeries', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'slot_usage': {'applicable_legislation': {'description': 'The legislation ' + 'that mandates the ' + 'creation or ' + 'management of the ' + 'Dataset Series.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'applicable_legislation', + 'range': 'LegalResource', + 'required': False, + 'slot_uri': 'dcatap:applicableLegislation'}, + 'contact_point': {'description': 'Contact information that can ' + 'be used for sending comments ' + 'about the Dataset Series.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'contact_point', + 'range': 'Kind', + 'required': False, + 'slot_uri': 'dcat:contactPoint'}, + 'description': {'description': 'A free-text account of the ' + 'Dataset Series.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'description', + 'range': 'string', + 'required': True, + 'slot_uri': 'dcterms:description'}, + 'frequency': {'description': 'The frequency at which the ' + 'Dataset Series is updated.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'frequency', + 'range': 'Frequency', + 'required': False, + 'slot_uri': 'dcterms:accrualPeriodicity'}, + 'geographical_coverage': {'description': 'A geographic region ' + 'that is covered by ' + 'the Dataset Series.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'geographical_coverage', + 'range': 'Location', + 'required': False, + 'slot_uri': 'dcterms:spatial'}, + 'modification_date': {'description': 'The most recent date on ' + 'which the Dataset Series ' + 'was changed or modified.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'modification_date', + 'range': 'date', + 'required': False, + 'slot_uri': 'dcterms:modified'}, + 'publisher': {'description': 'An entity (organisation) ' + 'responsible for ensuring the ' + 'coherency of the Dataset Series ', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'publisher', + 'range': 'Agent', + 'required': False, + 'slot_uri': 'dcterms:publisher'}, + 'release_date': {'description': 'The date of formal issuance ' + '(e.g., publication) of the ' + 'Dataset Series.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'release_date', + 'range': 'date', + 'required': False, + 'slot_uri': 'dcterms:issued'}, + 'temporal_coverage': {'description': 'A temporal period that ' + 'the Dataset Series ' + 'covers.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'temporal_coverage', + 'range': 'PeriodOfTime', + 'required': False, + 'slot_uri': 'dcterms:temporal'}, + 'title': {'description': 'A name given to the Dataset Series.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'title', + 'range': 'string', + 'required': True, + 'slot_uri': 'dcterms:title'}}}) + + applicable_legislation: Optional[list[LegalResource]] = Field(default=[], description="""The legislation that mandates the creation or management of the Dataset Series.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution'], + 'slot_uri': 'dcatap:applicableLegislation'} }) + contact_point: Optional[list[Kind]] = Field(default=[], description="""Contact information that can be used for sending comments about the Dataset Series.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset', 'DatasetSeries'], + 'slot_uri': 'dcat:contactPoint'} }) + description: list[str] = Field(default=..., description="""A free-text account of the Dataset Series.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + frequency: Optional[Frequency] = Field(default=None, description="""The frequency at which the Dataset Series is updated.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:accrualPeriodicity'} }) + geographical_coverage: Optional[list[Location]] = Field(default=[], description="""A geographic region that is covered by the Dataset Series.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:spatial'} }) + modification_date: Optional[date] = Field(default=None, description="""The most recent date on which the Dataset Series was changed or modified.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', + 'CatalogueRecord', + 'Dataset', + 'DatasetSeries', + 'Distribution'], + 'slot_uri': 'dcterms:modified'} }) + publisher: Optional[Agent] = Field(default=None, description="""An entity (organisation) responsible for ensuring the coherency of the Dataset Series """, json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'DataService', 'Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:publisher'} }) + release_date: Optional[date] = Field(default=None, description="""The date of formal issuance (e.g., publication) of the Dataset Series.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset', 'DatasetSeries', 'Distribution'], + 'slot_uri': 'dcterms:issued'} }) + temporal_coverage: Optional[list[PeriodOfTime]] = Field(default=[], description="""A temporal period that the Dataset Series covers.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:temporal'} }) + title: list[str] = Field(default=..., description="""A name given to the Dataset Series.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + + +class DefinedTerm(ConfiguredBaseModel): + """ + A word, name, acronym or phrase that is defined in a controlled vocabulary (CV) and that is used to provide an additional rdf:type or dcterms:type of a class within this schema. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'schema:DefinedTerm', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core'], + 'slot_usage': {'title': {'name': 'title', 'slot_uri': 'schema:name'}}}) + + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'schema:name'} }) + from_CV: Optional[str] = Field(default=None, description="""The URL of the controlled vocabulary.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DefinedTerm'], 'slot_uri': 'schema:inDefinedTermSet'} }) + + +class Device(AgenticEntity): + """ + A material instrument that is designed to perform a function primarily by means of its mechanical or electrical nature. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'aliases': ['hardware instrument'], + 'class_uri': 'prov:Agent', + 'exact_mappings': ['epos:Equipment', + 'OBI:0000968', + 'http://purl.obolibrary.org/obo/NCIT_C62103', + 'http://semanticscience.org/resource/SIO_000956', + 'http://purl.allotrope.org/ontologies/equipment#AFE_0000354'], + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core'], + 'slot_usage': {'has_part': {'description': 'The slot to specify parts of a ' + 'Device that are themselves ' + 'Devices.', + 'inlined': True, + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'has_part', + 'range': 'Device'}, + 'other_identifier': {'description': 'A slot to provide a ' + 'secondary identifier for ' + 'a Device.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'other_identifier', + 'range': 'Identifier', + 'required': False}}}) + + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier for a Device.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Device]] = Field(default=[], description="""The slot to specify parts of a Device that are themselves Devices.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to provide the AgenticEntity of which theAgenticEntity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class ReactorDesignType(Device): + """ + Abstract Device representing the type of reactor used in a catalytic experiment. + Concrete subclasses specify the reactor geometry and operating mode. + Linked from Reaction via carried_out_by. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'abstract': True, + 'class_uri': 'VOC4CAT:0007018', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/reaction/'}) + + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier for a Device.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Device]] = Field(default=[], description="""The slot to specify parts of a Device that are themselves Devices.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to provide the AgenticEntity of which theAgenticEntity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class ElectrochemicalReactor(ReactorDesignType): + """ + Electrochemical reactor used in electrocatalytic experiments, including + H-cells, flow cells, and membrane electrode assemblies. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'VOC4CAT:0000193', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/reaction/'}) + + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier for a Device.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Device]] = Field(default=[], description="""The slot to specify parts of a Device that are themselves Devices.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to provide the AgenticEntity of which theAgenticEntity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class CSTR(ReactorDesignType): + """ + Continuous stirred tank reactor (CSTR) � a well-mixed, continuous-flow + reactor operating at steady state. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'VOC4CAT:0007019', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/reaction/'}) + + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier for a Device.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Device]] = Field(default=[], description="""The slot to specify parts of a Device that are themselves Devices.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to provide the AgenticEntity of which theAgenticEntity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class PlugFlowReactor(ReactorDesignType): + """ + Plug flow reactor (PFR) � a tubular reactor in which reactant composition + varies along the axis with no axial mixing. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'VOC4CAT:0007102', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/reaction/'}) + + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier for a Device.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Device]] = Field(default=[], description="""The slot to specify parts of a Device that are themselves Devices.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to provide the AgenticEntity of which theAgenticEntity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Autoclave(ReactorDesignType): + """ + Autoclave reactor � a sealed pressure vessel for batch reactions at + elevated temperature and/or pressure. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'NCIT:C93052', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/reaction/'}) + + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier for a Device.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Device]] = Field(default=[], description="""The slot to specify parts of a Device that are themselves Devices.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to provide the AgenticEntity of which theAgenticEntity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class SlurryReactor(ReactorDesignType): + """ + Slurry reactor � a three-phase reactor in which catalyst particles are + suspended in a liquid phase through which gas is bubbled. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:SlurryReactor', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/reaction/'}) + + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier for a Device.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Device]] = Field(default=[], description="""The slot to specify parts of a Device that are themselves Devices.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to provide the AgenticEntity of which theAgenticEntity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Microreactor(ReactorDesignType): + """ + Microreactor � a miniaturised flow reactor with characteristic dimensions + in the sub-millimetre range, enabling precise thermal control and rapid + screening. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'VOC4CAT:0000234', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/reaction/'}) + + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier for a Device.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Device]] = Field(default=[], description="""The slot to specify parts of a Device that are themselves Devices.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to provide the AgenticEntity of which theAgenticEntity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class FixedBedReactor(ReactorDesignType): + """ + Fixed bed reactor � a tubular reactor packed with a stationary catalyst bed. + The most common reactor type in heterogeneous catalysis testing. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:FixedBedReactor', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/reaction/'}) + + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier for a Device.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Device]] = Field(default=[], description="""The slot to specify parts of a Device that are themselves Devices.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to provide the AgenticEntity of which theAgenticEntity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class FluidizedBedReactor(ReactorDesignType): + """ + Fluidized bed reactor � a reactor in which the catalyst particles are + suspended in an upward-flowing gas or liquid stream. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:FluidizedBedReactor', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/reaction/'}) + + gas_distributor_type: Optional[list[str]] = Field(default=[], description="""Type or design of the gas distributor plate in a fluidized bed reactor.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FluidizedBedReactor'], + 'slot_uri': 'coremeta4cat:gas_distributor_type'} }) + bed_expansion_height: Optional[list[float]] = Field(default=[], description="""Height of bed expansion above the settled bed height under operating conditions.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FluidizedBedReactor'], + 'slot_uri': 'coremeta4cat:bed_expansion_height', + 'unit': {'ucum_code': 'cm'}} }) + bubble_size_distribution: Optional[str] = Field(default=None, description="""Description or characterization of bubble size distribution in the fluidized bed.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FluidizedBedReactor'], + 'slot_uri': 'coremeta4cat:bubble_size_distribution'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier for a Device.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Device]] = Field(default=[], description="""The slot to specify parts of a Device that are themselves Devices.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to provide the AgenticEntity of which theAgenticEntity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Distribution(ConfiguredBaseModel): + """ + See [DCAT-AP specs:Distribution](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Distribution) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcat:Distribution', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'slot_usage': {'access_URL': {'description': 'A URL that gives access to a ' + 'Distribution of the Dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'access_URL', + 'range': 'Resource', + 'required': True, + 'slot_uri': 'dcat:accessURL'}, + 'access_service': {'description': 'A data service that gives ' + 'access to the distribution ' + 'of the dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'access_service', + 'range': 'DataService', + 'required': False, + 'slot_uri': 'dcat:accessService'}, + 'applicable_legislation': {'description': 'The legislation ' + 'that mandates the ' + 'creation or ' + 'management of the ' + 'Distribution.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'applicable_legislation', + 'range': 'LegalResource', + 'required': False, + 'slot_uri': 'dcatap:applicableLegislation'}, + 'availability': {'description': 'An indication how long it is ' + 'planned to keep the ' + 'Distribution of the Dataset ' + 'available.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'availability', + 'range': 'Concept', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcatap:availability'}, + 'byte_size': {'description': 'The size of a Distribution in ' + 'bytes.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'byte_size', + 'range': 'nonNegativeInteger', + 'required': False, + 'slot_uri': 'dcat:byteSize'}, + 'checksum': {'description': 'A mechanism that can be used to ' + 'verify that the contents of a ' + 'distribution have not changed.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'checksum', + 'range': 'Checksum', + 'required': False, + 'slot_uri': 'spdx:checksum'}, + 'compression_format': {'description': 'The format of the file ' + 'in which the data is ' + 'contained in a ' + 'compressed form, e.g. ' + 'to reduce the size of ' + 'the downloadable file.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'compression_format', + 'range': 'MediaType', + 'required': False, + 'slot_uri': 'dcat:compressFormat'}, + 'description': {'description': 'A free-text account of the ' + 'Distribution.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'description', + 'range': 'string', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcterms:description'}, + 'documentation': {'description': 'A page or document about ' + 'this Distribution.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'documentation', + 'range': 'Document', + 'required': False, + 'slot_uri': 'foaf:page'}, + 'download_URL': {'description': 'A URL that is a direct link ' + 'to a downloadable file in a ' + 'given format.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'download_URL', + 'range': 'Resource', + 'required': False, + 'slot_uri': 'dcat:downloadURL'}, + 'format': {'description': 'The file format of the ' + 'Distribution.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'format', + 'range': 'MediaTypeOrExtent', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcterms:format'}, + 'has_policy': {'description': 'The policy expressing the ' + 'rights associated with the ' + 'distribution if using the ' + '[[ODRL]] vocabulary.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'has_policy', + 'range': 'Policy', + 'required': False, + 'slot_uri': 'odrl:hasPolicy'}, + 'language': {'description': 'A language used in the ' + 'Distribution.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'language', + 'range': 'LinguisticSystem', + 'required': False, + 'slot_uri': 'dcterms:language'}, + 'licence': {'description': 'A licence under which the ' + 'Distribution is made available.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'licence', + 'range': 'LicenseDocument', + 'required': False, + 'slot_uri': 'dcterms:license'}, + 'linked_schemas': {'description': 'An established schema to ' + 'which the described ' + 'Distribution conforms.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'linked_schemas', + 'range': 'Standard', + 'required': False, + 'slot_uri': 'dcterms:conformsTo'}, + 'media_type': {'description': 'The media type of the ' + 'Distribution as defined in the ' + 'official register of media ' + 'types managed by IANA.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'media_type', + 'range': 'MediaType', + 'required': False, + 'slot_uri': 'dcat:mediaType'}, + 'modification_date': {'description': 'The most recent date on ' + 'which the Distribution ' + 'was changed or modified.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'modification_date', + 'range': 'date', + 'required': False, + 'slot_uri': 'dcterms:modified'}, + 'packaging_format': {'description': 'The format of the file in ' + 'which one or more data ' + 'files are grouped ' + 'together, e.g. to enable ' + 'a set of related files to ' + 'be downloaded together.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'packaging_format', + 'range': 'MediaType', + 'required': False, + 'slot_uri': 'dcat:packageFormat'}, + 'release_date': {'description': 'The date of formal issuance ' + '(e.g., publication) of the ' + 'Distribution.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'release_date', + 'range': 'date', + 'required': False, + 'slot_uri': 'dcterms:issued'}, + 'rights': {'description': 'A statement that specifies rights ' + 'associated with the Distribution.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'rights', + 'range': 'RightsStatement', + 'required': False, + 'slot_uri': 'dcterms:rights'}, + 'spatial_resolution': {'description': 'The minimum spatial ' + 'separation resolvable ' + 'in a dataset ' + 'distribution, measured ' + 'in meters.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'spatial_resolution', + 'range': 'decimal', + 'required': False, + 'slot_uri': 'dcat:spatialResolutionInMeters'}, + 'status': {'description': 'The status of the distribution in ' + 'the context of maturity lifecycle.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'status', + 'range': 'Concept', + 'required': False, + 'slot_uri': 'adms:status'}, + 'temporal_resolution': {'description': 'The minimum time ' + 'period resolvable in ' + 'the dataset ' + 'distribution.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'temporal_resolution', + 'range': 'duration', + 'required': False, + 'slot_uri': 'dcat:temporalResolution'}, + 'title': {'description': 'A name given to the Distribution.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'title', + 'range': 'string', + 'required': False, + 'slot_uri': 'dcterms:title'}}}) + + access_URL: list[Resource] = Field(default=..., description="""A URL that gives access to a Distribution of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Distribution'], 'slot_uri': 'dcat:accessURL'} }) + access_service: Optional[list[DataService]] = Field(default=[], description="""A data service that gives access to the distribution of the dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Distribution'], 'slot_uri': 'dcat:accessService'} }) + applicable_legislation: Optional[list[LegalResource]] = Field(default=[], description="""The legislation that mandates the creation or management of the Distribution.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution'], + 'slot_uri': 'dcatap:applicableLegislation'} }) + availability: Optional[Concept] = Field(default=None, description="""An indication how long it is planned to keep the Distribution of the Dataset available.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Distribution'], + 'recommended': True, + 'slot_uri': 'dcatap:availability'} }) + byte_size: Optional[int] = Field(default=None, description="""The size of a Distribution in bytes.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Distribution'], 'slot_uri': 'dcat:byteSize'} }) + checksum: Optional[Checksum] = Field(default=None, description="""A mechanism that can be used to verify that the contents of a distribution have not changed.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Distribution'], 'slot_uri': 'spdx:checksum'} }) + compression_format: Optional[MediaType] = Field(default=None, description="""The format of the file in which the data is contained in a compressed form, e.g. to reduce the size of the downloadable file.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Distribution'], 'slot_uri': 'dcat:compressFormat'} }) + description: Optional[list[str]] = Field(default=[], description="""A free-text account of the Distribution.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'recommended': True, + 'slot_uri': 'dcterms:description'} }) + documentation: Optional[list[Document]] = Field(default=[], description="""A page or document about this Distribution.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset', 'Distribution'], + 'slot_uri': 'foaf:page'} }) + download_URL: Optional[list[Resource]] = Field(default=[], description="""A URL that is a direct link to a downloadable file in a given format.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Distribution'], 'slot_uri': 'dcat:downloadURL'} }) + format: Optional[MediaTypeOrExtent] = Field(default=None, description="""The file format of the Distribution.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Distribution'], + 'recommended': True, + 'slot_uri': 'dcterms:format'} }) + has_policy: Optional[Policy] = Field(default=None, description="""The policy expressing the rights associated with the distribution if using the [[ODRL]] vocabulary.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Distribution'], 'slot_uri': 'odrl:hasPolicy'} }) + language: Optional[list[LinguisticSystem]] = Field(default=[], description="""A language used in the Distribution.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'CatalogueRecord', 'Dataset', 'Distribution'], + 'slot_uri': 'dcterms:language'} }) + licence: Optional[LicenseDocument] = Field(default=None, description="""A licence under which the Distribution is made available.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'DataService', 'Distribution'], + 'slot_uri': 'dcterms:license'} }) + linked_schemas: Optional[list[Standard]] = Field(default=[], description="""An established schema to which the described Distribution conforms.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Distribution'], 'slot_uri': 'dcterms:conformsTo'} }) + media_type: Optional[MediaType] = Field(default=None, description="""The media type of the Distribution as defined in the official register of media types managed by IANA.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Distribution'], 'slot_uri': 'dcat:mediaType'} }) + modification_date: Optional[date] = Field(default=None, description="""The most recent date on which the Distribution was changed or modified.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', + 'CatalogueRecord', + 'Dataset', + 'DatasetSeries', + 'Distribution'], + 'slot_uri': 'dcterms:modified'} }) + packaging_format: Optional[MediaType] = Field(default=None, description="""The format of the file in which one or more data files are grouped together, e.g. to enable a set of related files to be downloaded together.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Distribution'], 'slot_uri': 'dcat:packageFormat'} }) + release_date: Optional[date] = Field(default=None, description="""The date of formal issuance (e.g., publication) of the Distribution.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset', 'DatasetSeries', 'Distribution'], + 'slot_uri': 'dcterms:issued'} }) + rights: Optional[RightsStatement] = Field(default=None, description="""A statement that specifies rights associated with the Distribution.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Distribution'], 'slot_uri': 'dcterms:rights'} }) + spatial_resolution: Optional[Decimal] = Field(default=None, description="""The minimum spatial separation resolvable in a dataset distribution, measured in meters.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'Distribution'], + 'slot_uri': 'dcat:spatialResolutionInMeters'} }) + status: Optional[Concept] = Field(default=None, description="""The status of the distribution in the context of maturity lifecycle.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Distribution'], 'slot_uri': 'adms:status'} }) + temporal_resolution: Optional[str] = Field(default=None, description="""The minimum time period resolvable in the dataset distribution.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'Distribution'], + 'slot_uri': 'dcat:temporalResolution'} }) + title: Optional[list[str]] = Field(default=[], description="""A name given to the Distribution.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + + +class Entity(ClassifierMixin): + """ + A physical, digital, conceptual, or other kind of thing with some fixed aspects; entities may be real or imaginary. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'prov:Entity', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core'], + 'mixins': ['ClassifierMixin'], + 'slot_usage': {'description': {'description': 'The slot to provide a ' + 'description for the Entity.', + 'name': 'description'}, + 'has_part': {'description': 'A slot to provide a part of the ' + 'Entity.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'has_part', + 'range': 'Entity'}, + 'other_identifier': {'description': 'A slot to provide a ' + 'secondary identifier of ' + 'the Entity.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'other_identifier', + 'range': 'Identifier', + 'required': False}, + 'part_of': {'description': 'The slot to specify an Entity of ' + 'which the Entity is a part.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'part_of', + 'notes': ['not in DCAT-AP'], + 'range': 'Entity'}, + 'title': {'description': 'The slot to provide a title for the ' + 'Entity.', + 'name': 'title'}}}) + + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Entity]] = Field(default=[], description="""A slot to provide a part of the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[Entity]] = Field(default=[], description="""The slot to specify an Entity of which the Entity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class EvaluatedActivity(Activity): + """ + An activity or process that is being evaluated in a DataGeneratingActivity. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'prov:Activity', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core'], + 'slot_usage': {'other_identifier': {'description': 'A slot to provide a ' + 'secondary identifier of ' + 'the EvaluatedActivity.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'other_identifier', + 'range': 'Identifier', + 'required': False}}}) + + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[list[str]] = Field(default=[], description="""The slot to provide a title for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[list[str]] = Field(default=[], description="""The slot to provide a description for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the EvaluatedActivity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'adms:identifier'} }) + has_part: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity that is part of the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:hasPart'} }) + had_input_entity: Optional[list[Entity]] = Field(default=[], description="""The slot to specify the Entity that was used as an input of an Activity that is to be changed, consumed or transformed.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:used'} }) + had_output_entity: Optional[list[Entity]] = Field(default=[], description="""The slot to specify the Entity that was generated as an output of an Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:generated'} }) + had_input_activity: Optional[list[Activity]] = Field(default=[], description="""The slot to provide a previous Activity that informed the Activity by being causally via a shared participant.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasInformedBy'} }) + carried_out_by: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to specify the AgenticEntity that played a certain part in carrying out the Activity, either via having a specific role, function or disposition that was realized in the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasAssociatedWith'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + part_of: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity of which the Activity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Reaction(EvaluatedActivity): + """ + An EvaluatedActivity representing the catalytic reaction being studied. + + Reaction is NOT a DataGeneratingActivity � it is the catalytic process + being observed, not the process that generates the dataset. A CatalysisDataset + is linked to the Reaction it is about via is_about_activity. + + For operando experiments (e.g. in-situ XRD during a reaction), the dataset + carries both: + was_generated_by: Characterization (the measurement producing data) + is_about_activity: Reaction (the catalytic process being monitored) + + The reactor is linked via carried_out_by as a ReactorDesignType (Device). + Reactants are linked via had_input_entity. The type of catalytic reaction + (e.g. ammonia synthesis, CO oxidation) is expressed via rdf_type using a + voc4cat or ChemO term. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'SIO:010345', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/reaction/', + 'slot_usage': {'carried_out_by': {'description': 'The reactor in which the ' + 'Reaction takes place, ' + 'provided as a\n' + 'ReactorDesignType (Device) ' + 'instance.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'carried_out_by', + 'range': 'ReactorDesignType', + 'required': True}, + 'had_input_entity': {'description': 'The reactant chemicals or ' + 'feeds entering the ' + 'reactor.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'had_input_entity', + 'range': 'EvaluatedEntity', + 'recommended': True}, + 'product_identification_method': {'description': 'The ' + 'analytical ' + 'method used ' + 'to identify ' + 'and/or ' + 'quantify ' + 'reaction ' + 'products.\n' + 'Should ' + 'reference a ' + 'CharacterizationTechnique ' + 'instance ' + '(e.g. a GCMS ' + 'or\n' + 'HPLC_MS ' + 'object from ' + 'coremeta4cat_characterization_ap). ' + 'The abstract ' + 'stub\n' + 'ProductIdentificationMethod ' + 'is retained ' + 'for backward ' + 'compatibility.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'product_identification_method', + 'range': 'ProductIdentificationMethod', + 'required': True}, + 'rdf_type': {'description': 'The type of catalytic reaction as ' + 'an ontology term (e.g. ' + 'VOC4CAT:0007010\n' + 'for a specific reaction type, or ' + 'a ChemO/RXNO term).', + 'name': 'rdf_type', + 'recommended': True}}}) + + catalyst_quantity: list[float] = Field(default=..., description="""Mass of catalyst loaded into the reactor.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Reaction'], + 'slot_uri': 'coremeta4cat:catalyst_quantity', + 'unit': {'ucum_code': 'g'}} }) + reactant: list[str] = Field(default=..., description="""Reactant(s) used in the reaction. Provide compound name, CAS number, +or SMILES. For feeds, include composition and flow rate where known.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Reaction'], 'slot_uri': 'VOC4CAT:0000101'} }) + catalyst_type: Optional[list[str]] = Field(default=[], description="""Type of catalyst used (e.g. heterogeneous, homogeneous, biocatalyst). +For heterogeneous catalysts, use voc4cat terms where available.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Reaction'], 'recommended': True, 'slot_uri': 'VOC4CAT:0007014'} }) + reactor_temperature_range: Optional[list[str]] = Field(default=[], description="""Temperature range used in the reactor during the reaction, expressed +as a string range (e.g. \"200�400 �C\") or a single set-point.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Reaction'], 'slot_uri': 'VOC4CAT:0007032'} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + experiment_pressure: Optional[list[float]] = Field(default=[], description="""Total pressure in the reactor during the experiment.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Reaction'], + 'slot_uri': 'VOC4CAT:0000118', + 'unit': {'ucum_code': 'bar'}} }) + feed_composition_range: Optional[list[str]] = Field(default=[], description="""Feed gas or liquid composition range studied (e.g. \"1�10 vol% CO in N2\"). +Record as a string; for individual component concentrations use reactant.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Reaction'], 'slot_uri': 'coremeta4cat:feed_composition_range'} }) + experiment_duration: Optional[list[float]] = Field(default=[], description="""Total duration of the experiment or measurement run.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PowderXRD', 'Reaction'], + 'slot_uri': 'AFR:0002455', + 'unit': {'ucum_code': 'h'}} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[list[str]] = Field(default=[], description="""The slot to provide a title for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[list[str]] = Field(default=[], description="""The slot to provide a description for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the EvaluatedActivity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'adms:identifier'} }) + has_part: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity that is part of the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:hasPart'} }) + had_input_entity: Optional[list[EvaluatedEntity]] = Field(default=[], description="""The reactant chemicals or feeds entering the reactor.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:used'} }) + had_output_entity: Optional[list[Entity]] = Field(default=[], description="""The slot to specify the Entity that was generated as an output of an Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:generated'} }) + had_input_activity: Optional[list[Activity]] = Field(default=[], description="""The slot to provide a previous Activity that informed the Activity by being causally via a shared participant.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasInformedBy'} }) + carried_out_by: list[ReactorDesignType] = Field(default=..., description="""The reactor in which the Reaction takes place, provided as a +ReactorDesignType (Device) instance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasAssociatedWith'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + part_of: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity of which the Activity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The type of catalytic reaction as an ontology term (e.g. VOC4CAT:0007010 +for a specific reaction type, or a ChemO/RXNO term).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class EvaluatedEntity(Entity): + """ + An Entity that is being evaluated in a DataGeneratingActivity. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'prov:Entity', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core'], + 'slot_usage': {'description': {'description': 'The slot to provide a ' + 'description for the ' + 'EvaluatedEntity.', + 'name': 'description'}, + 'other_identifier': {'description': 'A slot to provide a ' + 'secondary identifier of ' + 'the EvaluatedEntity.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'other_identifier', + 'range': 'Identifier', + 'required': False}, + 'title': {'description': 'The slot to provide a title for the ' + 'EvaluatedEntity.', + 'name': 'title'}, + 'was_generated_by': {'description': 'A slot to provide the ' + 'Activity which created ' + 'the EvaluatedEntity.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'was_generated_by', + 'range': 'Activity'}}}) + + was_generated_by: Optional[list[Activity]] = Field(default=[], description="""A slot to provide the Activity which created the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'EvaluatedEntity'], 'slot_uri': 'prov:wasGeneratedBy'} }) + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Entity]] = Field(default=[], description="""A slot to provide a part of the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[Entity]] = Field(default=[], description="""The slot to specify an Entity of which the Entity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class AnalysisSourceData(EvaluatedEntity): + """ + Information that was evaluated within a DataAnalysis. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'prov:Entity', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core'], + 'slot_usage': {'was_generated_by': {'description': 'A slot to provide the ' + 'Activity which created ' + 'the AnalysisSourceData.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'was_generated_by', + 'range': 'DataGeneratingActivity'}}}) + + was_generated_by: Optional[list[DataGeneratingActivity]] = Field(default=[], description="""A slot to provide the Activity which created the AnalysisSourceData.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'EvaluatedEntity'], 'slot_uri': 'prov:wasGeneratedBy'} }) + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Entity]] = Field(default=[], description="""A slot to provide a part of the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[Entity]] = Field(default=[], description="""The slot to specify an Entity of which the Entity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Kind(ConfiguredBaseModel): + """ + See [DCAT-AP specs:Kind](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Kind) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'vcard:Kind', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + pass + + +class Location(ConfiguredBaseModel): + """ + See [DCAT-AP specs:Location](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Location) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcterms:Location', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'slot_usage': {'bbox': {'description': 'The geographic bounding box of a ' + 'resource.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'bbox', + 'range': 'string', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcat:bbox'}, + 'centroid': {'description': 'The geographic center (centroid) ' + 'of a resource.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'centroid', + 'range': 'string', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcat:centroid'}, + 'geometry': {'description': 'The corresponding geometry for a ' + 'resource.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'geometry', + 'range': 'Geometry', + 'required': False, + 'slot_uri': 'locn:geometry'}}}) + + bbox: Optional[str] = Field(default=None, description="""The geographic bounding box of a resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Location'], 'recommended': True, 'slot_uri': 'dcat:bbox'} }) + centroid: Optional[str] = Field(default=None, description="""The geographic center (centroid) of a resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Location'], 'recommended': True, 'slot_uri': 'dcat:centroid'} }) + geometry: Optional[Geometry] = Field(default=None, description="""The corresponding geometry for a resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Location'], 'slot_uri': 'locn:geometry'} }) + + +class Plan(ClassifierMixin): + """ + A piece of information that specifies how an activity has to be carried out by its agents including what kind of steps have to be taken and what kind of parameters have to be met/set. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'aliases': ['Plan Specification', 'Method', 'Procedure'], + 'class_uri': 'prov:Plan', + 'examples': [{'description': 'We assigned the structure of sample CRS-37013 ' + 'using a 13C NMR (CHMO:0000595) and the ' + 'settings: pulse sequence: zgpg30, temperature: ' + '298.0 K, number of scans: 1024, Solvent : ' + 'chloroform-D1 (CDCl3).'}], + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core'], + 'mixins': ['ClassifierMixin']}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class PreparationMethod(Plan): + """ + An abstract Plan describing the protocol used to prepare a catalyst. + Concrete subclasses (Impregnation, CoPrecipitation, �) specify the + method-specific parameters. Linked from Synthesis via realized_plan. + + The specific preparation method type should additionally be expressed + via rdf_type on the Synthesis activity using a voc4cat term + (e.g. VOC4CAT:0007016 for preparation method). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'abstract': True, + 'class_uri': 'OBI:0000272', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Impregnation(PreparationMethod, CalcinationMixin, DryingMixin): + """ + Catalyst preparation by impregnation: a solution of the active phase + precursor is brought into contact with the support material. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:Impregnation', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'mixins': ['DryingMixin', 'CalcinationMixin']}) + + impregnation_type: Optional[list[ImpregnationTypeEnum]] = Field(default=[], description="""Type of impregnation used (wet, dry, incipient wetness).""", json_schema_extra = { "linkml_meta": {'domain_of': ['Impregnation'], 'slot_uri': 'coremeta4cat:impregnation_type'} }) + impregnation_duration: Optional[list[float]] = Field(default=[], description="""Duration of the impregnation step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Impregnation'], + 'slot_uri': 'coremeta4cat:impregnation_duration', + 'unit': {'ucum_code': 'h'}} }) + impregnation_temperature: Optional[list[float]] = Field(default=[], description="""Temperature during the impregnation step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Impregnation'], + 'slot_uri': 'coremeta4cat:impregnation_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + drying_device: Optional[list[str]] = Field(default=[], description="""Device used for drying (e.g. oven, rotary evaporator).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], 'slot_uri': 'coremeta4cat:drying_device'} }) + drying_temperature: Optional[list[float]] = Field(default=[], description="""Temperature applied during drying.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], + 'slot_uri': 'coremeta4cat:drying_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + drying_time: Optional[list[float]] = Field(default=[], description="""Duration of the drying step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], + 'slot_uri': 'coremeta4cat:drying_time', + 'unit': {'ucum_code': 'h'}} }) + drying_atmosphere: Optional[list[str]] = Field(default=[], description="""Atmosphere maintained during drying (e.g. air, N2).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], 'slot_uri': 'coremeta4cat:drying_atmosphere'} }) + calcination_initial_temperature: Optional[list[float]] = Field(default=[], description="""Initial temperature for calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000057', + 'unit': {'ucum_code': 'Cel'}} }) + calcination_final_temperature: Optional[list[float]] = Field(default=[], description="""Final (target) temperature for calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000058', + 'unit': {'ucum_code': 'Cel'}} }) + calcination_dwelling_time: Optional[list[float]] = Field(default=[], description="""Time held at the final calcination temperature.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000060', + 'unit': {'ucum_code': 'h'}} }) + number_of_cycles: Optional[list[int]] = Field(default=[], description="""Number of repeated cycles in a process (e.g. ALD cycles, impregnation cycles).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin', + 'AtomicLayerDeposition', + 'MolecularSynthesis', + 'XRayAbsorptionSpectroscopy', + 'CyclicVoltammetry'], + 'slot_uri': 'coremeta4cat:number_of_cycles'} }) + calcination_gaseous_environment: Optional[list[str]] = Field(default=[], description="""Gaseous environment maintained during calcination (e.g. air, H2/N2).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], 'slot_uri': 'VOC4CAT:0000055'} }) + calcination_heating_rate: Optional[list[float]] = Field(default=[], description="""Heating rate during calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000059', + 'unit': {'ucum_code': 'Cel/min'}} }) + calcination_gas_flow_rate: Optional[list[float]] = Field(default=[], description="""Gas flow rate maintained during calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000056', + 'unit': {'ucum_code': 'mL/min'}} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class CoPrecipitation(PreparationMethod, PrecipitationMixin, CalcinationMixin, DryingMixin): + """ + Catalyst preparation by co-precipitation: precursor salts are + simultaneously precipitated from solution by a precipitating agent. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:CoPrecipitation', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'mixins': ['PrecipitationMixin', 'DryingMixin', 'CalcinationMixin']}) + + precipitating_agent: Optional[list[str]] = Field(default=[], description="""Chemical agent used to induce precipitation (e.g. NaOH, NH3).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:precipitating_agent'} }) + precipitating_concentration: Optional[list[float]] = Field(default=[], description="""Concentration of the precipitating agent.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:precipitating_concentration', + 'unit': {'ucum_code': 'mol/L'}} }) + synthesis_ph: Optional[list[float]] = Field(default=[], description="""pH value maintained or targeted during synthesis.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], 'slot_uri': 'VOC4CAT:0000052'} }) + mixing_rate: Optional[list[float]] = Field(default=[], description="""Stirring rate during mixing of synthesis components.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:mixing_rate', + 'unit': {'ucum_code': 'rpm'}} }) + mixing_time: Optional[list[float]] = Field(default=[], description="""Duration of the mixing step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:mixing_time', + 'unit': {'ucum_code': 'h'}} }) + mixing_temperature: Optional[list[float]] = Field(default=[], description="""Temperature during mixing.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin', 'MolecularSynthesis'], + 'slot_uri': 'coremeta4cat:mixing_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + order_of_addition: Optional[list[str]] = Field(default=[], description="""Order in which reagents or components are combined.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:order_of_addition'} }) + filtration: Optional[list[str]] = Field(default=[], description="""Filtration method used to separate the precipitate (e.g. vacuum filtration).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], 'slot_uri': 'coremeta4cat:filtration'} }) + purification: Optional[list[str]] = Field(default=[], description="""Purification method applied after synthesis (e.g. washing, dialysis).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], 'slot_uri': 'coremeta4cat:purification'} }) + aging_temperature: Optional[list[float]] = Field(default=[], description="""Temperature during aging of the precipitate or gel.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:aging_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + aging_time: Optional[list[float]] = Field(default=[], description="""Duration of the aging step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin', 'SolGel'], + 'slot_uri': 'coremeta4cat:aging_time', + 'unit': {'ucum_code': 'h'}} }) + drying_device: Optional[list[str]] = Field(default=[], description="""Device used for drying (e.g. oven, rotary evaporator).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], 'slot_uri': 'coremeta4cat:drying_device'} }) + drying_temperature: Optional[list[float]] = Field(default=[], description="""Temperature applied during drying.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], + 'slot_uri': 'coremeta4cat:drying_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + drying_time: Optional[list[float]] = Field(default=[], description="""Duration of the drying step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], + 'slot_uri': 'coremeta4cat:drying_time', + 'unit': {'ucum_code': 'h'}} }) + drying_atmosphere: Optional[list[str]] = Field(default=[], description="""Atmosphere maintained during drying (e.g. air, N2).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], 'slot_uri': 'coremeta4cat:drying_atmosphere'} }) + calcination_initial_temperature: Optional[list[float]] = Field(default=[], description="""Initial temperature for calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000057', + 'unit': {'ucum_code': 'Cel'}} }) + calcination_final_temperature: Optional[list[float]] = Field(default=[], description="""Final (target) temperature for calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000058', + 'unit': {'ucum_code': 'Cel'}} }) + calcination_dwelling_time: Optional[list[float]] = Field(default=[], description="""Time held at the final calcination temperature.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000060', + 'unit': {'ucum_code': 'h'}} }) + number_of_cycles: Optional[list[int]] = Field(default=[], description="""Number of repeated cycles in a process (e.g. ALD cycles, impregnation cycles).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin', + 'AtomicLayerDeposition', + 'MolecularSynthesis', + 'XRayAbsorptionSpectroscopy', + 'CyclicVoltammetry'], + 'slot_uri': 'coremeta4cat:number_of_cycles'} }) + calcination_gaseous_environment: Optional[list[str]] = Field(default=[], description="""Gaseous environment maintained during calcination (e.g. air, H2/N2).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], 'slot_uri': 'VOC4CAT:0000055'} }) + calcination_heating_rate: Optional[list[float]] = Field(default=[], description="""Heating rate during calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000059', + 'unit': {'ucum_code': 'Cel/min'}} }) + calcination_gas_flow_rate: Optional[list[float]] = Field(default=[], description="""Gas flow rate maintained during calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000056', + 'unit': {'ucum_code': 'mL/min'}} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class SolGel(PreparationMethod, DryingMixin): + """ + Catalyst preparation by the sol-gel process: hydrolysis and condensation + of precursor molecules to form a colloidal network (gel). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:SolGel', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'mixins': ['DryingMixin']}) + + hydrolysis_ratio: Optional[list[float]] = Field(default=[], description="""Molar ratio of water to alkoxide precursor used in hydrolysis.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SolGel'], 'slot_uri': 'coremeta4cat:hydrolysis_ratio'} }) + aging_time: Optional[list[float]] = Field(default=[], description="""Duration of the aging step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin', 'SolGel'], + 'slot_uri': 'coremeta4cat:aging_time', + 'unit': {'ucum_code': 'h'}} }) + drying: Optional[list[str]] = Field(default=[], description="""Drying method used for the gel (e.g. supercritical drying, freeze drying).""", json_schema_extra = { "linkml_meta": {'domain_of': ['SolGel'], 'slot_uri': 'coremeta4cat:drying'} }) + surfactant_template: Optional[list[str]] = Field(default=[], description="""Surfactant or structure-directing agent used as a template.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SolGel'], 'slot_uri': 'coremeta4cat:surfactant_template'} }) + drying_device: Optional[list[str]] = Field(default=[], description="""Device used for drying (e.g. oven, rotary evaporator).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], 'slot_uri': 'coremeta4cat:drying_device'} }) + drying_temperature: Optional[list[float]] = Field(default=[], description="""Temperature applied during drying.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], + 'slot_uri': 'coremeta4cat:drying_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + drying_time: Optional[list[float]] = Field(default=[], description="""Duration of the drying step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], + 'slot_uri': 'coremeta4cat:drying_time', + 'unit': {'ucum_code': 'h'}} }) + drying_atmosphere: Optional[list[str]] = Field(default=[], description="""Atmosphere maintained during drying (e.g. air, N2).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], 'slot_uri': 'coremeta4cat:drying_atmosphere'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Solvothermal(PreparationMethod, ThermalSynthesisMixin): + """ + Catalyst preparation under elevated temperature and pressure in a + sealed vessel using a non-aqueous solvent. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:Solvothermal', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'mixins': ['ThermalSynthesisMixin']}) + + filling_volume: Optional[list[float]] = Field(default=[], description="""Volume of solution relative to autoclave volume (filling degree).""", json_schema_extra = { "linkml_meta": {'domain_of': ['Solvothermal'], + 'slot_uri': 'coremeta4cat:filling_volume', + 'unit': {'ucum_code': 'mL'}} }) + stirrer_type: Optional[list[str]] = Field(default=[], description="""Type of stirrer used (e.g. magnetic, mechanical, none).""", json_schema_extra = { "linkml_meta": {'domain_of': ['Solvothermal'], 'slot_uri': 'coremeta4cat:stirrer_type'} }) + cooling_rate: Optional[list[float]] = Field(default=[], description="""Rate at which the reactor is cooled after synthesis.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Solvothermal'], + 'slot_uri': 'coremeta4cat:cooling_rate', + 'unit': {'ucum_code': 'Cel/min'}} }) + synthesis_temperature: Optional[list[float]] = Field(default=[], description="""Temperature applied during the synthesis step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], + 'slot_uri': 'VOC4CAT:0000051', + 'unit': {'ucum_code': 'Cel'}} }) + synthesis_duration: Optional[list[float]] = Field(default=[], description="""Total duration of the synthesis step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], + 'slot_uri': 'VOC4CAT:0000050', + 'unit': {'ucum_code': 'h'}} }) + equipment: Optional[list[str]] = Field(default=[], description="""Equipment or instrument used in a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], 'slot_uri': 'VOC4CAT:0000187'} }) + vessel_type: Optional[list[str]] = Field(default=[], description="""Type of reaction or synthesis vessel used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], 'slot_uri': 'coremeta4cat:vessel_type'} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class PlasmaAssisted(PreparationMethod, ThermalSynthesisMixin): + """ + Catalyst preparation using plasma treatment to modify surface + properties or deposit active components. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:PlasmaAssisted', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'mixins': ['ThermalSynthesisMixin']}) + + plasma_type: Optional[list[str]] = Field(default=[], description="""Type of plasma used (e.g. DBD, microwave, RF plasma).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PlasmaAssisted'], 'slot_uri': 'coremeta4cat:plasma_type'} }) + power_input: Optional[list[float]] = Field(default=[], description="""Power input to the plasma reactor or other energy source.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PlasmaAssisted'], + 'slot_uri': 'coremeta4cat:power_input', + 'unit': {'ucum_code': 'W'}} }) + exposure_time: Optional[list[float]] = Field(default=[], description="""Duration of plasma or other energy exposure.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PlasmaAssisted'], + 'slot_uri': 'coremeta4cat:exposure_time', + 'unit': {'ucum_code': 'min'}} }) + synthesis_pressure: Optional[list[float]] = Field(default=[], description="""Pressure applied during synthesis (e.g. in autoclave or plasma reactor).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PlasmaAssisted', 'Sublimation'], + 'slot_uri': 'VOC4CAT:0000053', + 'unit': {'ucum_code': 'bar'}} }) + synthesis_temperature: Optional[list[float]] = Field(default=[], description="""Temperature applied during the synthesis step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], + 'slot_uri': 'VOC4CAT:0000051', + 'unit': {'ucum_code': 'Cel'}} }) + synthesis_duration: Optional[list[float]] = Field(default=[], description="""Total duration of the synthesis step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], + 'slot_uri': 'VOC4CAT:0000050', + 'unit': {'ucum_code': 'h'}} }) + equipment: Optional[list[str]] = Field(default=[], description="""Equipment or instrument used in a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], 'slot_uri': 'VOC4CAT:0000187'} }) + vessel_type: Optional[list[str]] = Field(default=[], description="""Type of reaction or synthesis vessel used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], 'slot_uri': 'coremeta4cat:vessel_type'} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class CombustionSynthesis(PreparationMethod, ThermalSynthesisMixin): + """ + Catalyst preparation by combustion of a fuel/oxidizer mixture, + producing metal oxide catalysts in a single rapid step. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:CombustionSynthesis', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'mixins': ['ThermalSynthesisMixin']}) + + fuel: Optional[list[str]] = Field(default=[], description="""Organic fuel used in combustion synthesis (e.g. urea, glycine).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CombustionSynthesis'], 'slot_uri': 'coremeta4cat:fuel'} }) + oxidizer: Optional[list[str]] = Field(default=[], description="""Oxidizer used in combustion synthesis (e.g. metal nitrates).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CombustionSynthesis'], 'slot_uri': 'coremeta4cat:oxidizer'} }) + fuel_to_oxidizer_ratio: Optional[list[float]] = Field(default=[], description="""Molar ratio of fuel to oxidizer.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CombustionSynthesis'], + 'slot_uri': 'coremeta4cat:fuel_to_oxidizer_ratio'} }) + set_temperature: Optional[list[float]] = Field(default=[], description="""Target temperature set for the combustion reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CombustionSynthesis'], + 'slot_uri': 'coremeta4cat:set_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + post_treatment: Optional[list[str]] = Field(default=[], description="""Post-synthesis treatment applied to the combustion product.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CombustionSynthesis'], + 'slot_uri': 'coremeta4cat:post_treatment'} }) + synthesis_temperature: Optional[list[float]] = Field(default=[], description="""Temperature applied during the synthesis step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], + 'slot_uri': 'VOC4CAT:0000051', + 'unit': {'ucum_code': 'Cel'}} }) + synthesis_duration: Optional[list[float]] = Field(default=[], description="""Total duration of the synthesis step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], + 'slot_uri': 'VOC4CAT:0000050', + 'unit': {'ucum_code': 'h'}} }) + equipment: Optional[list[str]] = Field(default=[], description="""Equipment or instrument used in a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], 'slot_uri': 'VOC4CAT:0000187'} }) + vessel_type: Optional[list[str]] = Field(default=[], description="""Type of reaction or synthesis vessel used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], 'slot_uri': 'coremeta4cat:vessel_type'} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class AtomicLayerDeposition(PreparationMethod): + """ + Catalyst preparation by atomic layer deposition (ALD): sequential + self-limiting surface reactions deposit a conformal thin film + of active phase onto a substrate. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:AtomicLayerDeposition', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/'}) + + substrate: Optional[list[str]] = Field(default=[], description="""Substrate material on which the ALD film is deposited.""", json_schema_extra = { "linkml_meta": {'domain_of': ['AtomicLayerDeposition'], 'slot_uri': 'VOC4CAT:0000024'} }) + pulse_time: Optional[list[float]] = Field(default=[], description="""Duration of the precursor pulse in each ALD cycle.""", json_schema_extra = { "linkml_meta": {'domain_of': ['AtomicLayerDeposition'], + 'slot_uri': 'coremeta4cat:pulse_time', + 'unit': {'ucum_code': 's'}} }) + purging_duration: Optional[list[float]] = Field(default=[], description="""Duration of the purge step between ALD pulses.""", json_schema_extra = { "linkml_meta": {'domain_of': ['AtomicLayerDeposition'], + 'slot_uri': 'VOC4CAT:0000112', + 'unit': {'ucum_code': 's'}} }) + number_of_cycles: Optional[list[int]] = Field(default=[], description="""Number of repeated cycles in a process (e.g. ALD cycles, impregnation cycles).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin', + 'AtomicLayerDeposition', + 'MolecularSynthesis', + 'XRayAbsorptionSpectroscopy', + 'CyclicVoltammetry'], + 'slot_uri': 'coremeta4cat:number_of_cycles'} }) + deposition_temperature: Optional[list[float]] = Field(default=[], description="""Temperature during the deposition step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['AtomicLayerDeposition', 'DepositionPrecipitation'], + 'slot_uri': 'coremeta4cat:deposition_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + carrier_gas: Optional[list[str]] = Field(default=[], description="""Carrier gas used in a process (e.g. in GC analysis or ALD deposition).""", json_schema_extra = { "linkml_meta": {'domain_of': ['AtomicLayerDeposition', + 'ElementalAnalysis', + 'ElectroSprayIonizationMassSpectrometry', + 'GCMS'], + 'slot_uri': 'coremeta4cat:carrier_gas'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class DepositionPrecipitation(PreparationMethod, PrecipitationMixin, CalcinationMixin, DryingMixin): + """ + Catalyst preparation by deposition-precipitation: the active phase + is precipitated directly onto the support surface. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:DepositionPrecipitation', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'mixins': ['PrecipitationMixin', 'DryingMixin', 'CalcinationMixin']}) + + deposition_temperature: Optional[list[float]] = Field(default=[], description="""Temperature during the deposition step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['AtomicLayerDeposition', 'DepositionPrecipitation'], + 'slot_uri': 'coremeta4cat:deposition_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + deposition_time: Optional[list[float]] = Field(default=[], description="""Duration of the deposition step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DepositionPrecipitation'], + 'slot_uri': 'coremeta4cat:deposition_time', + 'unit': {'ucum_code': 'h'}} }) + precipitating_agent: Optional[list[str]] = Field(default=[], description="""Chemical agent used to induce precipitation (e.g. NaOH, NH3).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:precipitating_agent'} }) + precipitating_concentration: Optional[list[float]] = Field(default=[], description="""Concentration of the precipitating agent.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:precipitating_concentration', + 'unit': {'ucum_code': 'mol/L'}} }) + synthesis_ph: Optional[list[float]] = Field(default=[], description="""pH value maintained or targeted during synthesis.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], 'slot_uri': 'VOC4CAT:0000052'} }) + mixing_rate: Optional[list[float]] = Field(default=[], description="""Stirring rate during mixing of synthesis components.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:mixing_rate', + 'unit': {'ucum_code': 'rpm'}} }) + mixing_time: Optional[list[float]] = Field(default=[], description="""Duration of the mixing step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:mixing_time', + 'unit': {'ucum_code': 'h'}} }) + mixing_temperature: Optional[list[float]] = Field(default=[], description="""Temperature during mixing.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin', 'MolecularSynthesis'], + 'slot_uri': 'coremeta4cat:mixing_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + order_of_addition: Optional[list[str]] = Field(default=[], description="""Order in which reagents or components are combined.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:order_of_addition'} }) + filtration: Optional[list[str]] = Field(default=[], description="""Filtration method used to separate the precipitate (e.g. vacuum filtration).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], 'slot_uri': 'coremeta4cat:filtration'} }) + purification: Optional[list[str]] = Field(default=[], description="""Purification method applied after synthesis (e.g. washing, dialysis).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], 'slot_uri': 'coremeta4cat:purification'} }) + aging_temperature: Optional[list[float]] = Field(default=[], description="""Temperature during aging of the precipitate or gel.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin'], + 'slot_uri': 'coremeta4cat:aging_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + aging_time: Optional[list[float]] = Field(default=[], description="""Duration of the aging step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin', 'SolGel'], + 'slot_uri': 'coremeta4cat:aging_time', + 'unit': {'ucum_code': 'h'}} }) + drying_device: Optional[list[str]] = Field(default=[], description="""Device used for drying (e.g. oven, rotary evaporator).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], 'slot_uri': 'coremeta4cat:drying_device'} }) + drying_temperature: Optional[list[float]] = Field(default=[], description="""Temperature applied during drying.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], + 'slot_uri': 'coremeta4cat:drying_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + drying_time: Optional[list[float]] = Field(default=[], description="""Duration of the drying step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], + 'slot_uri': 'coremeta4cat:drying_time', + 'unit': {'ucum_code': 'h'}} }) + drying_atmosphere: Optional[list[str]] = Field(default=[], description="""Atmosphere maintained during drying (e.g. air, N2).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], 'slot_uri': 'coremeta4cat:drying_atmosphere'} }) + calcination_initial_temperature: Optional[list[float]] = Field(default=[], description="""Initial temperature for calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000057', + 'unit': {'ucum_code': 'Cel'}} }) + calcination_final_temperature: Optional[list[float]] = Field(default=[], description="""Final (target) temperature for calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000058', + 'unit': {'ucum_code': 'Cel'}} }) + calcination_dwelling_time: Optional[list[float]] = Field(default=[], description="""Time held at the final calcination temperature.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000060', + 'unit': {'ucum_code': 'h'}} }) + number_of_cycles: Optional[list[int]] = Field(default=[], description="""Number of repeated cycles in a process (e.g. ALD cycles, impregnation cycles).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin', + 'AtomicLayerDeposition', + 'MolecularSynthesis', + 'XRayAbsorptionSpectroscopy', + 'CyclicVoltammetry'], + 'slot_uri': 'coremeta4cat:number_of_cycles'} }) + calcination_gaseous_environment: Optional[list[str]] = Field(default=[], description="""Gaseous environment maintained during calcination (e.g. air, H2/N2).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], 'slot_uri': 'VOC4CAT:0000055'} }) + calcination_heating_rate: Optional[list[float]] = Field(default=[], description="""Heating rate during calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000059', + 'unit': {'ucum_code': 'Cel/min'}} }) + calcination_gas_flow_rate: Optional[list[float]] = Field(default=[], description="""Gas flow rate maintained during calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000056', + 'unit': {'ucum_code': 'mL/min'}} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class MicrowaveAssisted(PreparationMethod, ThermalSynthesisMixin): + """ + Catalyst preparation using microwave irradiation to rapidly and + uniformly heat the reaction mixture. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:MicrowaveAssisted', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'mixins': ['ThermalSynthesisMixin']}) + + power: Optional[list[float]] = Field(default=[], description="""Microwave power applied.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MicrowaveAssisted'], + 'slot_uri': 'coremeta4cat:power', + 'unit': {'ucum_code': 'W'}} }) + microwave_frequency: Optional[list[float]] = Field(default=[], description="""Frequency of microwave irradiation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MicrowaveAssisted'], + 'slot_uri': 'coremeta4cat:microwave_frequency', + 'unit': {'ucum_code': 'GHz'}} }) + synthesis_temperature: Optional[list[float]] = Field(default=[], description="""Temperature applied during the synthesis step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], + 'slot_uri': 'VOC4CAT:0000051', + 'unit': {'ucum_code': 'Cel'}} }) + synthesis_duration: Optional[list[float]] = Field(default=[], description="""Total duration of the synthesis step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], + 'slot_uri': 'VOC4CAT:0000050', + 'unit': {'ucum_code': 'h'}} }) + equipment: Optional[list[str]] = Field(default=[], description="""Equipment or instrument used in a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], 'slot_uri': 'VOC4CAT:0000187'} }) + vessel_type: Optional[list[str]] = Field(default=[], description="""Type of reaction or synthesis vessel used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], 'slot_uri': 'coremeta4cat:vessel_type'} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class SonochemicalSynthesis(PreparationMethod, CalcinationMixin, DryingMixin): + """ + Catalyst preparation using ultrasonic irradiation to drive chemical + reactions via acoustic cavitation. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:SonochemicalSynthesis', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'mixins': ['DryingMixin', 'CalcinationMixin']}) + + sonication_power: Optional[list[float]] = Field(default=[], description="""Acoustic power applied during sonication.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis'], + 'slot_uri': 'coremeta4cat:sonication_power', + 'unit': {'ucum_code': 'W'}} }) + sonication_duration: Optional[list[float]] = Field(default=[], description="""Duration of ultrasonic irradiation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis'], + 'slot_uri': 'coremeta4cat:sonication_duration', + 'unit': {'ucum_code': 'min'}} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + drying_device: Optional[list[str]] = Field(default=[], description="""Device used for drying (e.g. oven, rotary evaporator).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], 'slot_uri': 'coremeta4cat:drying_device'} }) + drying_temperature: Optional[list[float]] = Field(default=[], description="""Temperature applied during drying.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], + 'slot_uri': 'coremeta4cat:drying_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + drying_time: Optional[list[float]] = Field(default=[], description="""Duration of the drying step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], + 'slot_uri': 'coremeta4cat:drying_time', + 'unit': {'ucum_code': 'h'}} }) + drying_atmosphere: Optional[list[str]] = Field(default=[], description="""Atmosphere maintained during drying (e.g. air, N2).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], 'slot_uri': 'coremeta4cat:drying_atmosphere'} }) + calcination_initial_temperature: Optional[list[float]] = Field(default=[], description="""Initial temperature for calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000057', + 'unit': {'ucum_code': 'Cel'}} }) + calcination_final_temperature: Optional[list[float]] = Field(default=[], description="""Final (target) temperature for calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000058', + 'unit': {'ucum_code': 'Cel'}} }) + calcination_dwelling_time: Optional[list[float]] = Field(default=[], description="""Time held at the final calcination temperature.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000060', + 'unit': {'ucum_code': 'h'}} }) + number_of_cycles: Optional[list[int]] = Field(default=[], description="""Number of repeated cycles in a process (e.g. ALD cycles, impregnation cycles).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin', + 'AtomicLayerDeposition', + 'MolecularSynthesis', + 'XRayAbsorptionSpectroscopy', + 'CyclicVoltammetry'], + 'slot_uri': 'coremeta4cat:number_of_cycles'} }) + calcination_gaseous_environment: Optional[list[str]] = Field(default=[], description="""Gaseous environment maintained during calcination (e.g. air, H2/N2).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], 'slot_uri': 'VOC4CAT:0000055'} }) + calcination_heating_rate: Optional[list[float]] = Field(default=[], description="""Heating rate during calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000059', + 'unit': {'ucum_code': 'Cel/min'}} }) + calcination_gas_flow_rate: Optional[list[float]] = Field(default=[], description="""Gas flow rate maintained during calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000056', + 'unit': {'ucum_code': 'mL/min'}} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class FlameSprayPyrolysis(PreparationMethod): + """ + Catalyst preparation by flame spray pyrolysis (FSP): a liquid precursor + solution is atomised and combusted in a flame to produce nanoparticles. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'VOC4CAT:0007031', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/'}) + + flame_type: Optional[list[str]] = Field(default=[], description="""Type of flame used in FSP (e.g. methane/oxygen, H2/O2).""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis'], 'slot_uri': 'coremeta4cat:flame_type'} }) + flow_rate: Optional[list[float]] = Field(default=[], description="""Flow rate of a fluid or gas.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis', + 'ChromatographyMixin', + 'DRIFTS', + 'ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'coremeta4cat:flow_rate', + 'unit': {'ucum_code': 'mL/min'}} }) + inlet_system: Optional[list[str]] = Field(default=[], description="""Configuration of the precursor inlet system.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis'], 'slot_uri': 'coremeta4cat:inlet_system'} }) + flame_ring: Optional[list[str]] = Field(default=[], description="""Configuration of the supporting flame ring.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis'], 'slot_uri': 'coremeta4cat:flame_ring'} }) + dispersant: Optional[list[str]] = Field(default=[], description="""Dispersant used (e.g. in DLS measurement or flame spray pyrolysis).""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis', 'DynamicLightScattering'], + 'slot_uri': 'coremeta4cat:dispersant'} }) + capillary_pressure: Optional[list[float]] = Field(default=[], description="""Pressure applied at the capillary nozzle during FSP.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis'], + 'slot_uri': 'coremeta4cat:capillary_pressure', + 'unit': {'ucum_code': 'bar'}} }) + fuel_dispersant_ratio: Optional[list[float]] = Field(default=[], description="""Volume ratio of fuel to dispersant used in FSP.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis'], + 'slot_uri': 'coremeta4cat:fuel_dispersant_ratio'} }) + filtration_device: Optional[list[str]] = Field(default=[], description="""Device used for filtration.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis', 'MolecularSynthesis'], + 'slot_uri': 'coremeta4cat:filtration_device'} }) + filter_type: Optional[list[str]] = Field(default=[], description="""Type of filter membrane or medium used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis', 'MolecularSynthesis'], + 'slot_uri': 'coremeta4cat:filter_type'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class MechanochemicalSynthesis(PreparationMethod, ThermalSynthesisMixin): + """ + Catalyst preparation by mechanical milling or grinding, optionally + combined with thermal treatment. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:MechanochemicalSynthesis', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'mixins': ['ThermalSynthesisMixin']}) + + vessel_volume: Optional[list[float]] = Field(default=[], description="""Volume of the milling vessel.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MechanochemicalSynthesis'], + 'slot_uri': 'coremeta4cat:vessel_volume', + 'unit': {'ucum_code': 'mL'}} }) + size_and_material: Optional[list[str]] = Field(default=[], description="""Size and material of the milling vessel and components.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MechanochemicalSynthesis'], + 'slot_uri': 'coremeta4cat:size_and_material'} }) + milling_speed: Optional[list[float]] = Field(default=[], description="""Rotational speed during milling.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MechanochemicalSynthesis'], + 'slot_uri': 'coremeta4cat:milling_speed', + 'unit': {'ucum_code': 'rpm'}} }) + milling_duration: Optional[list[float]] = Field(default=[], description="""Total duration of the milling process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MechanochemicalSynthesis'], + 'slot_uri': 'coremeta4cat:milling_duration', + 'unit': {'ucum_code': 'h'}} }) + ball_material: Optional[list[str]] = Field(default=[], description="""Material of the milling balls (e.g. zirconia, stainless steel).""", json_schema_extra = { "linkml_meta": {'domain_of': ['MechanochemicalSynthesis'], + 'slot_uri': 'coremeta4cat:ball_material'} }) + ball_size: Optional[list[float]] = Field(default=[], description="""Diameter of the milling balls.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MechanochemicalSynthesis'], + 'slot_uri': 'coremeta4cat:ball_size', + 'unit': {'ucum_code': 'mm'}} }) + ball_to_powder_ratio: Optional[list[float]] = Field(default=[], description="""Mass ratio of milling balls to powder charge.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MechanochemicalSynthesis'], + 'slot_uri': 'coremeta4cat:ball_to_powder_ratio'} }) + synthesis_temperature: Optional[list[float]] = Field(default=[], description="""Temperature applied during the synthesis step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], + 'slot_uri': 'VOC4CAT:0000051', + 'unit': {'ucum_code': 'Cel'}} }) + synthesis_duration: Optional[list[float]] = Field(default=[], description="""Total duration of the synthesis step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], + 'slot_uri': 'VOC4CAT:0000050', + 'unit': {'ucum_code': 'h'}} }) + equipment: Optional[list[str]] = Field(default=[], description="""Equipment or instrument used in a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], 'slot_uri': 'VOC4CAT:0000187'} }) + vessel_type: Optional[list[str]] = Field(default=[], description="""Type of reaction or synthesis vessel used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], 'slot_uri': 'coremeta4cat:vessel_type'} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Sublimation(PreparationMethod, ThermalSynthesisMixin): + """ + Catalyst preparation by sublimation: a solid precursor is vaporised + and deposited onto a substrate without passing through a liquid phase. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:Sublimation', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'mixins': ['ThermalSynthesisMixin']}) + + synthesis_pressure: Optional[list[float]] = Field(default=[], description="""Pressure applied during synthesis (e.g. in autoclave or plasma reactor).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PlasmaAssisted', 'Sublimation'], + 'slot_uri': 'VOC4CAT:0000053', + 'unit': {'ucum_code': 'bar'}} }) + synthesis_temperature: Optional[list[float]] = Field(default=[], description="""Temperature applied during the synthesis step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], + 'slot_uri': 'VOC4CAT:0000051', + 'unit': {'ucum_code': 'Cel'}} }) + synthesis_duration: Optional[list[float]] = Field(default=[], description="""Total duration of the synthesis step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], + 'slot_uri': 'VOC4CAT:0000050', + 'unit': {'ucum_code': 'h'}} }) + equipment: Optional[list[str]] = Field(default=[], description="""Equipment or instrument used in a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], 'slot_uri': 'VOC4CAT:0000187'} }) + vessel_type: Optional[list[str]] = Field(default=[], description="""Type of reaction or synthesis vessel used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin'], 'slot_uri': 'coremeta4cat:vessel_type'} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class MolecularSynthesis(PreparationMethod, DryingMixin): + """ + Catalyst preparation by molecular (organometallic or coordination) + chemistry routes, including crystallisation and purification steps. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:MolecularSynthesis', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'mixins': ['DryingMixin']}) + + reaction_vessel: Optional[list[str]] = Field(default=[], description="""Type of reaction vessel used (e.g. Schlenk flask, round-bottom flask).""", json_schema_extra = { "linkml_meta": {'domain_of': ['MolecularSynthesis'], + 'slot_uri': 'coremeta4cat:reaction_vessel'} }) + mixing_device: Optional[list[str]] = Field(default=[], description="""Device used for mixing (e.g. magnetic stirrer, vortex mixer).""", json_schema_extra = { "linkml_meta": {'domain_of': ['MolecularSynthesis'], 'slot_uri': 'coremeta4cat:mixing_device'} }) + stirring_duration: Optional[list[float]] = Field(default=[], description="""Duration of stirring or agitation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MolecularSynthesis'], + 'slot_uri': 'coremeta4cat:stirring_duration', + 'unit': {'ucum_code': 'h'}} }) + stirring_speed: Optional[list[float]] = Field(default=[], description="""Rotational speed of stirring or agitation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MolecularSynthesis'], + 'slot_uri': 'coremeta4cat:stirring_speed', + 'unit': {'ucum_code': 'rpm'}} }) + mixing_temperature: Optional[list[float]] = Field(default=[], description="""Temperature during mixing.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PrecipitationMixin', 'MolecularSynthesis'], + 'slot_uri': 'coremeta4cat:mixing_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + filtration_device: Optional[list[str]] = Field(default=[], description="""Device used for filtration.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis', 'MolecularSynthesis'], + 'slot_uri': 'coremeta4cat:filtration_device'} }) + filter_type: Optional[list[str]] = Field(default=[], description="""Type of filter membrane or medium used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis', 'MolecularSynthesis'], + 'slot_uri': 'coremeta4cat:filter_type'} }) + crystallisation_solvents: Optional[list[str]] = Field(default=[], description="""Solvent(s) used for crystallisation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MolecularSynthesis'], + 'slot_uri': 'coremeta4cat:crystallisation_solvents'} }) + precipitation_agent: Optional[list[str]] = Field(default=[], description="""Agent used to induce precipitation in molecular synthesis.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MolecularSynthesis'], + 'slot_uri': 'coremeta4cat:precipitation_agent'} }) + crystallisation_duration: Optional[list[float]] = Field(default=[], description="""Duration of the crystallisation step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MolecularSynthesis'], + 'slot_uri': 'coremeta4cat:crystallisation_duration', + 'unit': {'ucum_code': 'h'}} }) + purification_solvent: Optional[list[str]] = Field(default=[], description="""Solvent used for washing or recrystallisation during purification.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MolecularSynthesis'], + 'slot_uri': 'coremeta4cat:purification_solvent'} }) + number_of_cycles: Optional[list[int]] = Field(default=[], description="""Number of repeated cycles in a process (e.g. ALD cycles, impregnation cycles).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin', + 'AtomicLayerDeposition', + 'MolecularSynthesis', + 'XRayAbsorptionSpectroscopy', + 'CyclicVoltammetry'], + 'slot_uri': 'coremeta4cat:number_of_cycles'} }) + temperature_ramp: Optional[list[float]] = Field(default=[], description="""Temperature ramp rate applied during drying or activation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MolecularSynthesis'], + 'slot_uri': 'coremeta4cat:temperature_ramp', + 'unit': {'ucum_code': 'Cel/min'}} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + drying_device: Optional[list[str]] = Field(default=[], description="""Device used for drying (e.g. oven, rotary evaporator).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], 'slot_uri': 'coremeta4cat:drying_device'} }) + drying_temperature: Optional[list[float]] = Field(default=[], description="""Temperature applied during drying.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], + 'slot_uri': 'coremeta4cat:drying_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + drying_time: Optional[list[float]] = Field(default=[], description="""Duration of the drying step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], + 'slot_uri': 'coremeta4cat:drying_time', + 'unit': {'ucum_code': 'h'}} }) + drying_atmosphere: Optional[list[str]] = Field(default=[], description="""Atmosphere maintained during drying (e.g. air, N2).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DryingMixin'], 'slot_uri': 'coremeta4cat:drying_atmosphere'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class ExsolutionSynthesis(PreparationMethod, CalcinationMixin): + """ + Catalyst preparation by exsolution: metal nanoparticles are grown on + a perovskite oxide surface by reduction/oxidation cycling. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:ExsolutionSynthesis', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'mixins': ['CalcinationMixin']}) + + calcination_initial_temperature: Optional[list[float]] = Field(default=[], description="""Initial temperature for calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000057', + 'unit': {'ucum_code': 'Cel'}} }) + calcination_final_temperature: Optional[list[float]] = Field(default=[], description="""Final (target) temperature for calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000058', + 'unit': {'ucum_code': 'Cel'}} }) + calcination_dwelling_time: Optional[list[float]] = Field(default=[], description="""Time held at the final calcination temperature.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000060', + 'unit': {'ucum_code': 'h'}} }) + number_of_cycles: Optional[list[int]] = Field(default=[], description="""Number of repeated cycles in a process (e.g. ALD cycles, impregnation cycles).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin', + 'AtomicLayerDeposition', + 'MolecularSynthesis', + 'XRayAbsorptionSpectroscopy', + 'CyclicVoltammetry'], + 'slot_uri': 'coremeta4cat:number_of_cycles'} }) + calcination_gaseous_environment: Optional[list[str]] = Field(default=[], description="""Gaseous environment maintained during calcination (e.g. air, H2/N2).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], 'slot_uri': 'VOC4CAT:0000055'} }) + calcination_heating_rate: Optional[list[float]] = Field(default=[], description="""Heating rate during calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000059', + 'unit': {'ucum_code': 'Cel/min'}} }) + calcination_gas_flow_rate: Optional[list[float]] = Field(default=[], description="""Gas flow rate maintained during calcination.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin'], + 'slot_uri': 'VOC4CAT:0000056', + 'unit': {'ucum_code': 'mL/min'}} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class CharacterizationTechnique(Plan): + """ + An abstract Plan describing the analytical protocol used to characterize + a catalyst. Concrete subclasses specify technique-specific parameters. + Linked from Characterization via realized_plan. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'abstract': True, + 'class_uri': 'OBI:0000272', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class PowderXRD(CharacterizationTechnique, XRaySourceMixin): + """ + Powder X-ray diffraction for phase identification and structural analysis. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHMO:0000158', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixins': ['XRaySourceMixin']}) + + minimum_2theta: Optional[list[float]] = Field(default=[], description="""Minimum 2theta angle in the diffraction scan.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PowderXRD'], + 'slot_uri': 'coremeta4cat:minimum_2theta', + 'unit': {'ucum_code': 'deg'}} }) + maximum_2theta: Optional[list[float]] = Field(default=[], description="""Maximum 2theta angle in the diffraction scan.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PowderXRD'], + 'slot_uri': 'coremeta4cat:maximum_2theta', + 'unit': {'ucum_code': 'deg'}} }) + step_size: Optional[list[float]] = Field(default=[], description="""Step size for a scan (angle, wavelength, energy, or potential).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'PhotoluminescenceSpectroscopy'], + 'slot_uri': 'AFR:0000950'} }) + operation_mode: Optional[list[str]] = Field(default=[], description="""Operation mode of an instrument (e.g. transmission, reflection, AC, DC).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PowderXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'TransmissionElectronMicroscopy', + 'Thermogravimetry', + 'ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'VOC4CAT:0000108'} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + sample_spinning_speed: Optional[list[float]] = Field(default=[], description="""Sample spinning speed during XRD measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PowderXRD'], + 'slot_uri': 'coremeta4cat:sample_spinning_speed', + 'unit': {'ucum_code': 'rpm'}} }) + experiment_duration: Optional[list[float]] = Field(default=[], description="""Total duration of the experiment or measurement run.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PowderXRD', 'Reaction'], + 'slot_uri': 'AFR:0002455', + 'unit': {'ucum_code': 'h'}} }) + xray_source: Optional[list[str]] = Field(default=[], description="""X-ray source used (e.g. Cu K-alpha, Mo K-alpha, synchrotron).""", json_schema_extra = { "linkml_meta": {'domain_of': ['XRaySourceMixin'], 'slot_uri': 'OBI:0001138'} }) + monochromator: Optional[list[str]] = Field(default=[], description="""Monochromator type or configuration used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['XRaySourceMixin'], 'slot_uri': 'CHMO:0002120'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class SingleCrystalXRD(CharacterizationTechnique, XRaySourceMixin): + """ + Single crystal X-ray diffraction for structure determination. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHMO:0000852', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixins': ['XRaySourceMixin']}) + + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + xray_source: Optional[list[str]] = Field(default=[], description="""X-ray source used (e.g. Cu K-alpha, Mo K-alpha, synchrotron).""", json_schema_extra = { "linkml_meta": {'domain_of': ['XRaySourceMixin'], 'slot_uri': 'OBI:0001138'} }) + monochromator: Optional[list[str]] = Field(default=[], description="""Monochromator type or configuration used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['XRaySourceMixin'], 'slot_uri': 'CHMO:0002120'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class XRayAbsorptionSpectroscopy(CharacterizationTechnique, EnergyRangeMixin, XRaySourceMixin): + """ + X-ray absorption spectroscopy (XAS/XANES/EXAFS) for electronic and local structure analysis. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'VOC4CAT:0000286', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixins': ['XRaySourceMixin', 'EnergyRangeMixin']}) + + operation_mode: Optional[list[str]] = Field(default=[], description="""Operation mode of an instrument (e.g. transmission, reflection, AC, DC).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PowderXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'TransmissionElectronMicroscopy', + 'Thermogravimetry', + 'ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'VOC4CAT:0000108'} }) + element_analyzed: Optional[list[str]] = Field(default=[], description="""Chemical element analysed (e.g. Fe, Cu, Pt).""", json_schema_extra = { "linkml_meta": {'domain_of': ['XRayAbsorptionSpectroscopy', 'ICPAES'], + 'slot_uri': 'coremeta4cat:element_analyzed'} }) + absorption_edge: Optional[list[str]] = Field(default=[], description="""X-ray absorption edge measured (e.g. K-edge, L3-edge).""", json_schema_extra = { "linkml_meta": {'domain_of': ['XRayAbsorptionSpectroscopy'], + 'slot_uri': 'coremeta4cat:absorption_edge'} }) + energy_resolution: Optional[list[float]] = Field(default=[], description="""Energy resolution of the spectrometer or monochromator.""", json_schema_extra = { "linkml_meta": {'domain_of': ['XRayAbsorptionSpectroscopy'], + 'slot_uri': 'AFR:0000950', + 'unit': {'ucum_code': 'eV'}} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + beamline_source: Optional[list[str]] = Field(default=[], description="""Synchrotron beamline or X-ray source identifier.""", json_schema_extra = { "linkml_meta": {'domain_of': ['XRayAbsorptionSpectroscopy'], + 'slot_uri': 'coremeta4cat:beamline_source'} }) + noise_of_measurement: Optional[list[float]] = Field(default=[], description="""Noise level of the XAS measurement (signal-to-noise ratio).""", json_schema_extra = { "linkml_meta": {'domain_of': ['XRayAbsorptionSpectroscopy'], + 'slot_uri': 'coremeta4cat:noise_of_measurement'} }) + number_of_cycles: Optional[list[int]] = Field(default=[], description="""Number of repeated cycles in a process (e.g. ALD cycles, impregnation cycles).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin', + 'AtomicLayerDeposition', + 'MolecularSynthesis', + 'XRayAbsorptionSpectroscopy', + 'CyclicVoltammetry'], + 'slot_uri': 'coremeta4cat:number_of_cycles'} }) + xray_source: Optional[list[str]] = Field(default=[], description="""X-ray source used (e.g. Cu K-alpha, Mo K-alpha, synchrotron).""", json_schema_extra = { "linkml_meta": {'domain_of': ['XRaySourceMixin'], 'slot_uri': 'OBI:0001138'} }) + monochromator: Optional[list[str]] = Field(default=[], description="""Monochromator type or configuration used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['XRaySourceMixin'], 'slot_uri': 'CHMO:0002120'} }) + minimum_energy: Optional[list[float]] = Field(default=[], description="""Minimum energy of the scan range.""", json_schema_extra = { "linkml_meta": {'domain_of': ['EnergyRangeMixin'], + 'slot_uri': 'coremeta4cat:minimum_energy', + 'unit': {'ucum_code': 'eV'}} }) + maximum_energy: Optional[list[float]] = Field(default=[], description="""Maximum energy of the scan range.""", json_schema_extra = { "linkml_meta": {'domain_of': ['EnergyRangeMixin'], + 'slot_uri': 'coremeta4cat:maximum_energy', + 'unit': {'ucum_code': 'eV'}} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class XPS(CharacterizationTechnique, EnergyRangeMixin, XRaySourceMixin): + """ + X-ray photoelectron spectroscopy for surface elemental and chemical state analysis. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHMO:0000404', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixins': ['XRaySourceMixin', 'EnergyRangeMixin']}) + + total_acquisition_time: Optional[list[float]] = Field(default=[], description="""Total time for XPS spectrum acquisition.""", json_schema_extra = { "linkml_meta": {'domain_of': ['XPS'], + 'slot_uri': 'coremeta4cat:total_acquisition_time', + 'unit': {'ucum_code': 's'}} }) + number_of_scans: Optional[list[int]] = Field(default=[], description="""Number of scans or accumulations recorded.""", json_schema_extra = { "linkml_meta": {'domain_of': ['XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy'], + 'slot_uri': 'coremeta4cat:number_of_scans'} }) + step_size: Optional[list[float]] = Field(default=[], description="""Step size for a scan (angle, wavelength, energy, or potential).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'PhotoluminescenceSpectroscopy'], + 'slot_uri': 'AFR:0000950'} }) + pass_energy: Optional[list[float]] = Field(default=[], description="""Analyser pass energy setting in XPS.""", json_schema_extra = { "linkml_meta": {'domain_of': ['XPS'], + 'slot_uri': 'coremeta4cat:pass_energy', + 'unit': {'ucum_code': 'eV'}} }) + spot_size: Optional[list[float]] = Field(default=[], description="""X-ray spot size on the sample surface.""", json_schema_extra = { "linkml_meta": {'domain_of': ['XPS'], + 'slot_uri': 'coremeta4cat:spot_size', + 'unit': {'ucum_code': 'mm'}} }) + lense_mode: Optional[list[str]] = Field(default=[], description="""Electron lens mode setting in XPS analyser.""", json_schema_extra = { "linkml_meta": {'domain_of': ['XPS'], 'slot_uri': 'VOC4CAT:0000108'} }) + charge_compensation: Optional[list[str]] = Field(default=[], description="""Charge compensation method applied during XPS measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['XPS'], 'slot_uri': 'coremeta4cat:charge_compensation'} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + xray_source: Optional[list[str]] = Field(default=[], description="""X-ray source used (e.g. Cu K-alpha, Mo K-alpha, synchrotron).""", json_schema_extra = { "linkml_meta": {'domain_of': ['XRaySourceMixin'], 'slot_uri': 'OBI:0001138'} }) + monochromator: Optional[list[str]] = Field(default=[], description="""Monochromator type or configuration used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['XRaySourceMixin'], 'slot_uri': 'CHMO:0002120'} }) + minimum_energy: Optional[list[float]] = Field(default=[], description="""Minimum energy of the scan range.""", json_schema_extra = { "linkml_meta": {'domain_of': ['EnergyRangeMixin'], + 'slot_uri': 'coremeta4cat:minimum_energy', + 'unit': {'ucum_code': 'eV'}} }) + maximum_energy: Optional[list[float]] = Field(default=[], description="""Maximum energy of the scan range.""", json_schema_extra = { "linkml_meta": {'domain_of': ['EnergyRangeMixin'], + 'slot_uri': 'coremeta4cat:maximum_energy', + 'unit': {'ucum_code': 'eV'}} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class EDX(CharacterizationTechnique): + """ + Energy-dispersive X-ray spectroscopy for elemental mapping and quantification. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHMO:0000309', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/'}) + + primary_energy: Optional[list[float]] = Field(default=[], description="""Primary electron beam energy for EDX excitation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['EDX'], + 'slot_uri': 'coremeta4cat:primary_energy', + 'unit': {'ucum_code': 'keV'}} }) + counting_time: Optional[list[float]] = Field(default=[], description="""X-ray counting time per point or spectrum.""", json_schema_extra = { "linkml_meta": {'domain_of': ['EDX'], + 'slot_uri': 'coremeta4cat:counting_time', + 'unit': {'ucum_code': 's'}} }) + resolution: Optional[list[float]] = Field(default=[], description="""Resolution of a measurement or detector.""", json_schema_extra = { "linkml_meta": {'domain_of': ['EDX', 'DRIFTS'], 'slot_uri': 'coremeta4cat:resolution'} }) + calibration_method: Optional[list[str]] = Field(default=[], description="""Calibration method applied during a measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['EDX', 'ICPAES'], 'slot_uri': 'coremeta4cat:calibration_method'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class InfraredSpectroscopy(CharacterizationTechnique): + """ + Infrared spectroscopy (FTIR/ATR) for functional group and surface species identification. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:InfraredSpectroscopy', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/'}) + + operation_mode: Optional[list[str]] = Field(default=[], description="""Operation mode of an instrument (e.g. transmission, reflection, AC, DC).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PowderXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'TransmissionElectronMicroscopy', + 'Thermogravimetry', + 'ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'VOC4CAT:0000108'} }) + minimum_wavenumber: Optional[list[float]] = Field(default=[], description="""Minimum wavenumber of the IR scan range.""", json_schema_extra = { "linkml_meta": {'domain_of': ['InfraredSpectroscopy'], + 'slot_uri': 'coremeta4cat:minimum_wavenumber', + 'unit': {'ucum_code': 'cm-1'}} }) + maximum_wavenumber: Optional[list[float]] = Field(default=[], description="""Maximum wavenumber of the IR scan range.""", json_schema_extra = { "linkml_meta": {'domain_of': ['InfraredSpectroscopy'], + 'slot_uri': 'coremeta4cat:maximum_wavenumber', + 'unit': {'ucum_code': 'cm-1'}} }) + step_size: Optional[list[float]] = Field(default=[], description="""Step size for a scan (angle, wavelength, energy, or potential).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'PhotoluminescenceSpectroscopy'], + 'slot_uri': 'AFR:0000950'} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + background_correction: Optional[list[str]] = Field(default=[], description="""Background correction method applied to IR spectra.""", json_schema_extra = { "linkml_meta": {'domain_of': ['InfraredSpectroscopy'], 'slot_uri': 'AFP:0003721'} }) + number_of_scans: Optional[list[int]] = Field(default=[], description="""Number of scans or accumulations recorded.""", json_schema_extra = { "linkml_meta": {'domain_of': ['XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy'], + 'slot_uri': 'coremeta4cat:number_of_scans'} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class DRIFTS(CharacterizationTechnique): + """ + Diffuse reflectance infrared Fourier transform spectroscopy for in-situ + surface species identification under reactive gas conditions. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHMO:0000645', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/'}) + + adsorption_gas: Optional[list[str]] = Field(default=[], description="""Probe gas adsorbed during in-situ DRIFTS measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DRIFTS'], 'slot_uri': 'coremeta4cat:adsorption_gas'} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + flow_rate: Optional[list[float]] = Field(default=[], description="""Flow rate of a fluid or gas.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis', + 'ChromatographyMixin', + 'DRIFTS', + 'ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'coremeta4cat:flow_rate', + 'unit': {'ucum_code': 'mL/min'}} }) + diluting_reference: Optional[list[str]] = Field(default=[], description="""Reference material used to dilute the DRIFTS sample (e.g. KBr).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DRIFTS'], 'slot_uri': 'coremeta4cat:diluting_reference'} }) + ratio_reference_sample: Optional[list[float]] = Field(default=[], description="""Mass ratio of reference material to catalyst sample in DRIFTS cup.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DRIFTS'], 'slot_uri': 'coremeta4cat:ratio_reference_sample'} }) + step_size: Optional[list[float]] = Field(default=[], description="""Step size for a scan (angle, wavelength, energy, or potential).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'PhotoluminescenceSpectroscopy'], + 'slot_uri': 'AFR:0000950'} }) + resolution: Optional[list[float]] = Field(default=[], description="""Resolution of a measurement or detector.""", json_schema_extra = { "linkml_meta": {'domain_of': ['EDX', 'DRIFTS'], 'slot_uri': 'coremeta4cat:resolution'} }) + background_correction_method: Optional[list[str]] = Field(default=[], description="""Specific background correction method used in DRIFTS.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DRIFTS'], + 'slot_uri': 'coremeta4cat:background_correction_method'} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + number_of_scans: Optional[list[int]] = Field(default=[], description="""Number of scans or accumulations recorded.""", json_schema_extra = { "linkml_meta": {'domain_of': ['XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy'], + 'slot_uri': 'coremeta4cat:number_of_scans'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class RamanSpectroscopy(CharacterizationTechnique): + """ + Raman spectroscopy for vibrational and structural characterization. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'VOC4CAT:0000069', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/'}) + + excitation_laser_wavelength: Optional[list[float]] = Field(default=[], description="""Wavelength of excitation laser used in Raman spectroscopy.""", json_schema_extra = { "linkml_meta": {'domain_of': ['RamanSpectroscopy'], + 'slot_uri': 'AFR:0001594', + 'unit': {'ucum_code': 'nm'}} }) + excitation_laser_power: Optional[list[float]] = Field(default=[], description="""Power of the excitation laser at the sample.""", json_schema_extra = { "linkml_meta": {'domain_of': ['RamanSpectroscopy'], + 'slot_uri': 'AFR:0001595', + 'unit': {'ucum_code': 'mW'}} }) + magnification_setting: Optional[list[float]] = Field(default=[], description="""Magnification setting used for imaging.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectronMicroscopyMixin', 'RamanSpectroscopy'], + 'slot_uri': 'AFR:0002226'} }) + integration_time: Optional[list[float]] = Field(default=[], description="""Integration or acquisition time per measurement step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['RamanSpectroscopy', 'PhotoluminescenceSpectroscopy'], + 'slot_uri': 'coremeta4cat:integration_time', + 'unit': {'ucum_code': 's'}} }) + number_of_scans: Optional[list[int]] = Field(default=[], description="""Number of scans or accumulations recorded.""", json_schema_extra = { "linkml_meta": {'domain_of': ['XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy'], + 'slot_uri': 'coremeta4cat:number_of_scans'} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + filter_or_grating: Optional[list[str]] = Field(default=[], description="""Optical filter or grating used in Raman spectrometer.""", json_schema_extra = { "linkml_meta": {'domain_of': ['RamanSpectroscopy'], + 'slot_uri': 'coremeta4cat:filter_or_grating'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class NMRSpectroscopy(CharacterizationTechnique): + """ + Nuclear magnetic resonance spectroscopy for structure elucidation. + Note: for detailed liquid-state NMR minimum information, the dedicated + nmr_dcat_ap profile (MARGARITAS) should be used in combination with + this subprofile. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'VOC4CAT:0000073', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/'}) + + nucleus: Optional[list[str]] = Field(default=[], description="""NMR-active nucleus observed (e.g. 1H, 13C, 31P).""", json_schema_extra = { "linkml_meta": {'domain_of': ['NMRSpectroscopy'], 'slot_uri': 'coremeta4cat:nucleus'} }) + solvent: Optional[list[str]] = Field(default=[], description="""Solvent used in a process or sample preparation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Synthesis', + 'NMRSpectroscopy', + 'UVVisSpectroscopy', + 'DynamicLightScattering'], + 'slot_uri': 'VOC4CAT:0007246'} }) + irradiation_frequency: Optional[list[float]] = Field(default=[], description="""Irradiation frequency of the NMR spectrometer.""", json_schema_extra = { "linkml_meta": {'domain_of': ['NMRSpectroscopy'], + 'slot_uri': 'coremeta4cat:irradiation_frequency', + 'unit': {'ucum_code': 'MHz'}} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + nmr_pulse_sequence: Optional[list[str]] = Field(default=[], description="""NMR pulse sequence used (e.g. zgpg30, dept).""", json_schema_extra = { "linkml_meta": {'domain_of': ['NMRSpectroscopy'], + 'slot_uri': 'coremeta4cat:nmr_pulse_sequence'} }) + nmr_sample_tube: Optional[list[str]] = Field(default=[], description="""NMR sample tube type (e.g. 5mm standard, Shigemi tube).""", json_schema_extra = { "linkml_meta": {'domain_of': ['NMRSpectroscopy'], 'slot_uri': 'coremeta4cat:nmr_sample_tube'} }) + number_of_scans: Optional[list[int]] = Field(default=[], description="""Number of scans or accumulations recorded.""", json_schema_extra = { "linkml_meta": {'domain_of': ['XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy'], + 'slot_uri': 'coremeta4cat:number_of_scans'} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class TransmissionElectronMicroscopy(CharacterizationTechnique, ElectronMicroscopyMixin): + """ + TEM for atomic-resolution imaging and diffraction of catalyst particles. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'VOC4CAT:0000078', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixins': ['ElectronMicroscopyMixin']}) + + operation_mode: Optional[list[str]] = Field(default=[], description="""Operation mode of an instrument (e.g. transmission, reflection, AC, DC).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PowderXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'TransmissionElectronMicroscopy', + 'Thermogravimetry', + 'ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'VOC4CAT:0000108'} }) + gun_type: Optional[list[str]] = Field(default=[], description="""Type of electron gun (e.g. FEG, thermionic LaB6).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectronMicroscopyMixin'], 'slot_uri': 'coremeta4cat:gun_type'} }) + acceleration_voltage: Optional[list[float]] = Field(default=[], description="""Acceleration voltage applied to the electron beam.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectronMicroscopyMixin'], + 'slot_uri': 'coremeta4cat:acceleration_voltage', + 'unit': {'ucum_code': 'kV'}} }) + magnification_setting: Optional[list[float]] = Field(default=[], description="""Magnification setting used for imaging.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectronMicroscopyMixin', 'RamanSpectroscopy'], + 'slot_uri': 'AFR:0002226'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class ScanningElectronMicroscopy(CharacterizationTechnique, ElectronMicroscopyMixin): + """ + SEM for surface morphology and particle size/shape imaging. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'VOC4CAT:0000075', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixins': ['ElectronMicroscopyMixin']}) + + image_resolution: Optional[list[float]] = Field(default=[], description="""Spatial resolution of SEM images.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ScanningElectronMicroscopy'], + 'slot_uri': 'coremeta4cat:image_resolution', + 'unit': {'ucum_code': 'nm'}} }) + field_emitter: Optional[list[str]] = Field(default=[], description="""Type of field emitter used in FE-SEM instrument.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ScanningElectronMicroscopy'], + 'slot_uri': 'coremeta4cat:field_emitter'} }) + gun_type: Optional[list[str]] = Field(default=[], description="""Type of electron gun (e.g. FEG, thermionic LaB6).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectronMicroscopyMixin'], 'slot_uri': 'coremeta4cat:gun_type'} }) + acceleration_voltage: Optional[list[float]] = Field(default=[], description="""Acceleration voltage applied to the electron beam.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectronMicroscopyMixin'], + 'slot_uri': 'coremeta4cat:acceleration_voltage', + 'unit': {'ucum_code': 'kV'}} }) + magnification_setting: Optional[list[float]] = Field(default=[], description="""Magnification setting used for imaging.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectronMicroscopyMixin', 'RamanSpectroscopy'], + 'slot_uri': 'AFR:0002226'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Thermogravimetry(CharacterizationTechnique, TemperatureProgramMixin): + """ + Thermogravimetric analysis (TGA/DTG) for mass loss, decomposition, and oxidation state characterization. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHMO:0000690', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixins': ['TemperatureProgramMixin']}) + + operation_mode: Optional[list[str]] = Field(default=[], description="""Operation mode of an instrument (e.g. transmission, reflection, AC, DC).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PowderXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'TransmissionElectronMicroscopy', + 'Thermogravimetry', + 'ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'VOC4CAT:0000108'} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + initial_temperature: Optional[list[float]] = Field(default=[], description="""Initial temperature at the start of a thermal analysis run.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Thermogravimetry'], + 'slot_uri': 'NCIT:C164644', + 'unit': {'ucum_code': 'Cel'}} }) + final_temperature: Optional[list[float]] = Field(default=[], description="""Final temperature at the end of a thermal analysis run.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Thermogravimetry'], + 'slot_uri': 'NCIT:C164644', + 'unit': {'ucum_code': 'Cel'}} }) + sample_mass: Optional[list[float]] = Field(default=[], description="""Mass of the sample used in a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Thermogravimetry', 'BET'], + 'slot_uri': 'coremeta4cat:sample_mass', + 'unit': {'ucum_code': 'mg'}} }) + minimum_temperature: Optional[list[float]] = Field(default=[], description="""Minimum (start) temperature in a temperature programme.""", json_schema_extra = { "linkml_meta": {'domain_of': ['TemperatureProgramMixin'], + 'slot_uri': 'coremeta4cat:minimum_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + maximum_temperature: Optional[list[float]] = Field(default=[], description="""Maximum (final) temperature in a temperature programme.""", json_schema_extra = { "linkml_meta": {'domain_of': ['TemperatureProgramMixin'], + 'slot_uri': 'coremeta4cat:maximum_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + heating_rate: Optional[list[float]] = Field(default=[], description="""Rate at which temperature is increased during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['TemperatureProgramMixin'], + 'slot_uri': 'coremeta4cat:heating_rate', + 'unit': {'ucum_code': 'Cel/min'}} }) + heating_procedure: Optional[list[str]] = Field(default=[], description="""Description of the heating procedure applied.""", json_schema_extra = { "linkml_meta": {'domain_of': ['TemperatureProgramMixin', 'GCMS'], + 'slot_uri': 'coremeta4cat:heating_procedure'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class TPR(CharacterizationTechnique, TemperatureProgramMixin): + """ + Temperature-programmed reduction for reducibility and metal-support interaction characterization. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHMO:0002908', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixins': ['TemperatureProgramMixin']}) + + reducing_gas_composition: Optional[list[str]] = Field(default=[], description="""Composition of reducing gas used in TPR (e.g. 5% H2/Ar).""", json_schema_extra = { "linkml_meta": {'domain_of': ['TPR'], 'slot_uri': 'coremeta4cat:reducing_gas_composition'} }) + minimum_temperature: Optional[list[float]] = Field(default=[], description="""Minimum (start) temperature in a temperature programme.""", json_schema_extra = { "linkml_meta": {'domain_of': ['TemperatureProgramMixin'], + 'slot_uri': 'coremeta4cat:minimum_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + maximum_temperature: Optional[list[float]] = Field(default=[], description="""Maximum (final) temperature in a temperature programme.""", json_schema_extra = { "linkml_meta": {'domain_of': ['TemperatureProgramMixin'], + 'slot_uri': 'coremeta4cat:maximum_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + heating_rate: Optional[list[float]] = Field(default=[], description="""Rate at which temperature is increased during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['TemperatureProgramMixin'], + 'slot_uri': 'coremeta4cat:heating_rate', + 'unit': {'ucum_code': 'Cel/min'}} }) + heating_procedure: Optional[list[str]] = Field(default=[], description="""Description of the heating procedure applied.""", json_schema_extra = { "linkml_meta": {'domain_of': ['TemperatureProgramMixin', 'GCMS'], + 'slot_uri': 'coremeta4cat:heating_procedure'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class TPO(CharacterizationTechnique, TemperatureProgramMixin): + """ + Temperature-programmed oxidation for coke quantification and reoxidation characterization. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHMO:0002907', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixins': ['TemperatureProgramMixin']}) + + oxidizing_gas_composition: Optional[list[str]] = Field(default=[], description="""Composition of oxidising gas used in TPO (e.g. 5% O2/Ar).""", json_schema_extra = { "linkml_meta": {'domain_of': ['TPO'], 'slot_uri': 'coremeta4cat:oxidizing_gas_composition'} }) + minimum_temperature: Optional[list[float]] = Field(default=[], description="""Minimum (start) temperature in a temperature programme.""", json_schema_extra = { "linkml_meta": {'domain_of': ['TemperatureProgramMixin'], + 'slot_uri': 'coremeta4cat:minimum_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + maximum_temperature: Optional[list[float]] = Field(default=[], description="""Maximum (final) temperature in a temperature programme.""", json_schema_extra = { "linkml_meta": {'domain_of': ['TemperatureProgramMixin'], + 'slot_uri': 'coremeta4cat:maximum_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + heating_rate: Optional[list[float]] = Field(default=[], description="""Rate at which temperature is increased during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['TemperatureProgramMixin'], + 'slot_uri': 'coremeta4cat:heating_rate', + 'unit': {'ucum_code': 'Cel/min'}} }) + heating_procedure: Optional[list[str]] = Field(default=[], description="""Description of the heating procedure applied.""", json_schema_extra = { "linkml_meta": {'domain_of': ['TemperatureProgramMixin', 'GCMS'], + 'slot_uri': 'coremeta4cat:heating_procedure'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class BET(CharacterizationTechnique): + """ + Brunauer-Emmett-Teller analysis for specific surface area and pore size distribution. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:BET', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/'}) + + adsorbate_gas: Optional[list[str]] = Field(default=[], description="""Adsorbate gas used in BET surface area measurement (e.g. N2, Ar).""", json_schema_extra = { "linkml_meta": {'domain_of': ['BET'], 'slot_uri': 'coremeta4cat:adsorbate_gas'} }) + degassing_temperature: Optional[list[float]] = Field(default=[], description="""Temperature at which sample is degassed before BET measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['BET'], + 'slot_uri': 'coremeta4cat:degassing_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + measurement_temperature: Optional[list[float]] = Field(default=[], description="""Temperature at which BET adsorption isotherm is measured (e.g. 77 K for N2).""", json_schema_extra = { "linkml_meta": {'domain_of': ['BET'], + 'slot_uri': 'coremeta4cat:measurement_temperature', + 'unit': {'ucum_code': 'K'}} }) + pore_size_distribution_method: Optional[list[str]] = Field(default=[], description="""Method used for pore size distribution calculation (e.g. BJH, DFT, HK).""", json_schema_extra = { "linkml_meta": {'domain_of': ['BET'], 'slot_uri': 'coremeta4cat:pore_size_distribution_method'} }) + sample_mass: Optional[list[float]] = Field(default=[], description="""Mass of the sample used in a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Thermogravimetry', 'BET'], + 'slot_uri': 'coremeta4cat:sample_mass', + 'unit': {'ucum_code': 'mg'}} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class ICPAES(CharacterizationTechnique): + """ + Inductively coupled plasma atomic emission spectroscopy for bulk elemental composition. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHMO:0000267', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/'}) + + element_analyzed: Optional[list[str]] = Field(default=[], description="""Chemical element analysed (e.g. Fe, Cu, Pt).""", json_schema_extra = { "linkml_meta": {'domain_of': ['XRayAbsorptionSpectroscopy', 'ICPAES'], + 'slot_uri': 'coremeta4cat:element_analyzed'} }) + calibration_method: Optional[list[str]] = Field(default=[], description="""Calibration method applied during a measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['EDX', 'ICPAES'], 'slot_uri': 'coremeta4cat:calibration_method'} }) + detection_limit: Optional[list[float]] = Field(default=[], description="""Detection limit of the analytical method.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ICPAES'], 'slot_uri': 'NCIT:C105701'} }) + matrix_effect_correction: Optional[list[str]] = Field(default=[], description="""Method used to correct for matrix effects in ICP-AES.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ICPAES'], 'slot_uri': 'coremeta4cat:matrix_effect_correction'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class ElementalAnalysis(CharacterizationTechnique): + """ + Combustion elemental analysis (CHNS/O) for carbon, hydrogen, nitrogen, sulfur content. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHMO:0001075', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/'}) + + elements_analyzed: Optional[list[str]] = Field(default=[], description="""List of elements analysed by combustion elemental analysis (e.g. C, H, N, S).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElementalAnalysis'], + 'slot_uri': 'coremeta4cat:elements_analyzed'} }) + combustion_temperature: Optional[list[float]] = Field(default=[], description="""Combustion furnace temperature for elemental analysis.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElementalAnalysis'], + 'slot_uri': 'coremeta4cat:combustion_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + carrier_gas: Optional[list[str]] = Field(default=[], description="""Carrier gas used in a process (e.g. in GC analysis or ALD deposition).""", json_schema_extra = { "linkml_meta": {'domain_of': ['AtomicLayerDeposition', + 'ElementalAnalysis', + 'ElectroSprayIonizationMassSpectrometry', + 'GCMS'], + 'slot_uri': 'coremeta4cat:carrier_gas'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class UVVisSpectroscopy(CharacterizationTechnique): + """ + UV-Vis spectroscopy for electronic transitions, band gap, and concentration determination. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'VOC4CAT:0000079', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/'}) + + minimum_wavelength: Optional[list[float]] = Field(default=[], description="""Minimum wavelength of the UV-Vis scan range.""", json_schema_extra = { "linkml_meta": {'domain_of': ['UVVisSpectroscopy'], + 'slot_uri': 'coremeta4cat:minimum_wavelength', + 'unit': {'ucum_code': 'nm'}} }) + maximum_wavelength: Optional[list[float]] = Field(default=[], description="""Maximum wavelength of the UV-Vis scan range.""", json_schema_extra = { "linkml_meta": {'domain_of': ['UVVisSpectroscopy'], + 'slot_uri': 'coremeta4cat:maximum_wavelength', + 'unit': {'ucum_code': 'nm'}} }) + path_length: Optional[list[float]] = Field(default=[], description="""Optical path length of the measurement cell.""", json_schema_extra = { "linkml_meta": {'domain_of': ['UVVisSpectroscopy'], + 'slot_uri': 'AFQ:0000268', + 'unit': {'ucum_code': 'cm'}} }) + solvent: Optional[list[str]] = Field(default=[], description="""Solvent used in a process or sample preparation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Synthesis', + 'NMRSpectroscopy', + 'UVVisSpectroscopy', + 'DynamicLightScattering'], + 'slot_uri': 'VOC4CAT:0007246'} }) + concentration: Optional[list[float]] = Field(default=[], description="""Concentration of a substance in a sample or solution.""", json_schema_extra = { "linkml_meta": {'domain_of': ['UVVisSpectroscopy', + 'DynamicLightScattering', + 'ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'coremeta4cat:concentration', + 'unit': {'ucum_code': 'mol/L'}} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class PhotoluminescenceSpectroscopy(CharacterizationTechnique, PhotoluminescenceMixin): + """ + Photoluminescence spectroscopy for defect and charge carrier characterization. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:PhotoluminescenceSpectroscopy', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixins': ['PhotoluminescenceMixin']}) + + emission_range: Optional[list[str]] = Field(default=[], description="""Wavelength range over which emission is detected.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PhotoluminescenceSpectroscopy'], + 'slot_uri': 'coremeta4cat:emission_range'} }) + slit_width: Optional[list[float]] = Field(default=[], description="""Spectrometer entrance or exit slit width.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PhotoluminescenceSpectroscopy'], + 'slot_uri': 'coremeta4cat:slit_width', + 'unit': {'ucum_code': 'nm'}} }) + step_size: Optional[list[float]] = Field(default=[], description="""Step size for a scan (angle, wavelength, energy, or potential).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'PhotoluminescenceSpectroscopy'], + 'slot_uri': 'AFR:0000950'} }) + integration_time: Optional[list[float]] = Field(default=[], description="""Integration or acquisition time per measurement step.""", json_schema_extra = { "linkml_meta": {'domain_of': ['RamanSpectroscopy', 'PhotoluminescenceSpectroscopy'], + 'slot_uri': 'coremeta4cat:integration_time', + 'unit': {'ucum_code': 's'}} }) + excitation_wavelength: Optional[list[float]] = Field(default=[], description="""Excitation wavelength used in photoluminescence measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PhotoluminescenceMixin'], + 'slot_uri': 'AFR:0002479', + 'unit': {'ucum_code': 'nm'}} }) + emission_wavelength: Optional[list[float]] = Field(default=[], description="""Emission wavelength detected in photoluminescence measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PhotoluminescenceMixin'], + 'slot_uri': 'NCIT:C204101', + 'unit': {'ucum_code': 'nm'}} }) + optical_filter: Optional[list[str]] = Field(default=[], description="""Optical filter used in the emission or excitation path.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PhotoluminescenceMixin'], + 'slot_uri': 'coremeta4cat:optical_filter'} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class PhotoluminescenceLifetime(CharacterizationTechnique, PhotoluminescenceMixin): + """ + Time-resolved photoluminescence for charge carrier lifetime and recombination dynamics. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:PhotoluminescenceLifetime', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixins': ['PhotoluminescenceMixin']}) + + lifetime_fitting_model: Optional[list[str]] = Field(default=[], description="""Mathematical model used for fluorescence lifetime fitting (e.g. mono-exponential, bi-exponential).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PhotoluminescenceLifetime'], + 'slot_uri': 'coremeta4cat:lifetime_fitting_model'} }) + number_of_shots: Optional[list[int]] = Field(default=[], description="""Number of laser shots accumulated per measurement point.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PhotoluminescenceLifetime'], + 'slot_uri': 'coremeta4cat:number_of_shots'} }) + excitation_wavelength: Optional[list[float]] = Field(default=[], description="""Excitation wavelength used in photoluminescence measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PhotoluminescenceMixin'], + 'slot_uri': 'AFR:0002479', + 'unit': {'ucum_code': 'nm'}} }) + emission_wavelength: Optional[list[float]] = Field(default=[], description="""Emission wavelength detected in photoluminescence measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PhotoluminescenceMixin'], + 'slot_uri': 'NCIT:C204101', + 'unit': {'ucum_code': 'nm'}} }) + optical_filter: Optional[list[str]] = Field(default=[], description="""Optical filter used in the emission or excitation path.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PhotoluminescenceMixin'], + 'slot_uri': 'coremeta4cat:optical_filter'} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class CyclicVoltammetry(CharacterizationTechnique, ElectrochemistryMixin): + """ + Cyclic voltammetry for electrochemical activity, redox potential, and capacitance characterization. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHMO:0000025', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixins': ['ElectrochemistryMixin']}) + + scan_rate: Optional[list[float]] = Field(default=[], description="""Potential scan rate in cyclic voltammetry.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CyclicVoltammetry'], + 'slot_uri': 'VOC4CAT:0007213', + 'unit': {'ucum_code': 'mV/s'}} }) + minimum_potential: Optional[list[float]] = Field(default=[], description="""Lower potential limit in cyclic voltammetry.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CyclicVoltammetry'], + 'slot_uri': 'coremeta4cat:minimum_potential', + 'unit': {'ucum_code': 'V'}} }) + maximum_potential: Optional[list[float]] = Field(default=[], description="""Upper potential limit in cyclic voltammetry.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CyclicVoltammetry'], + 'slot_uri': 'coremeta4cat:maximum_potential', + 'unit': {'ucum_code': 'V'}} }) + step_size_potential: Optional[list[float]] = Field(default=[], description="""Potential step size in cyclic voltammetry.""", json_schema_extra = { "linkml_meta": {'domain_of': ['CyclicVoltammetry'], + 'slot_uri': 'VOC4CAT:0007218', + 'unit': {'ucum_code': 'mV'}} }) + number_of_cycles: Optional[list[int]] = Field(default=[], description="""Number of repeated cycles in a process (e.g. ALD cycles, impregnation cycles).""", json_schema_extra = { "linkml_meta": {'domain_of': ['CalcinationMixin', + 'AtomicLayerDeposition', + 'MolecularSynthesis', + 'XRayAbsorptionSpectroscopy', + 'CyclicVoltammetry'], + 'slot_uri': 'coremeta4cat:number_of_cycles'} }) + reference_electrode: Optional[list[str]] = Field(default=[], description="""Reference electrode used in electrochemical cell (e.g. Ag/AgCl, RHE).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectrochemistryMixin'], 'slot_uri': 'VOC4CAT:0007204'} }) + working_electrode: Optional[list[str]] = Field(default=[], description="""Working electrode used in electrochemical cell.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectrochemistryMixin'], 'slot_uri': 'VOC4CAT:0007202'} }) + counter_electrode: Optional[list[str]] = Field(default=[], description="""Counter electrode used in electrochemical cell.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectrochemistryMixin'], 'slot_uri': 'VOC4CAT:0007203'} }) + electrolyte_composition: Optional[list[str]] = Field(default=[], description="""Chemical composition of the electrolyte solution.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectrochemistryMixin'], + 'slot_uri': 'coremeta4cat:electrolyte_composition'} }) + electrolyte_concentration: Optional[list[float]] = Field(default=[], description="""Concentration of the electrolyte.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectrochemistryMixin'], + 'slot_uri': 'coremeta4cat:electrolyte_concentration', + 'unit': {'ucum_code': 'mol/L'}} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class ConductivityMeasurement(CharacterizationTechnique, ElectrochemistryMixin): + """ + Electrical conductivity measurement for ionic and electronic transport characterization. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:ConductivityMeasurement', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixins': ['ElectrochemistryMixin']}) + + electrode_configuration: Optional[list[str]] = Field(default=[], description="""Configuration of electrodes used in conductivity measurement (e.g. 2-probe, 4-probe).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ConductivityMeasurement'], + 'slot_uri': 'coremeta4cat:electrode_configuration'} }) + ac_frequency: Optional[list[float]] = Field(default=[], description="""Frequency of AC signal applied in impedance or conductivity measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ConductivityMeasurement'], + 'slot_uri': 'VOC4CAT:0007239', + 'unit': {'ucum_code': 'Hz'}} }) + ac_dc_mode: Optional[list[str]] = Field(default=[], description="""AC or DC measurement mode used in conductivity measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ConductivityMeasurement'], + 'slot_uri': 'coremeta4cat:ac_dc_mode'} }) + sample_geometry: Optional[list[str]] = Field(default=[], description="""Geometry of the sample used in conductivity measurement (e.g. pellet, thin film).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ConductivityMeasurement'], + 'slot_uri': 'coremeta4cat:sample_geometry'} }) + reference_electrode: Optional[list[str]] = Field(default=[], description="""Reference electrode used in electrochemical cell (e.g. Ag/AgCl, RHE).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectrochemistryMixin'], 'slot_uri': 'VOC4CAT:0007204'} }) + working_electrode: Optional[list[str]] = Field(default=[], description="""Working electrode used in electrochemical cell.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectrochemistryMixin'], 'slot_uri': 'VOC4CAT:0007202'} }) + counter_electrode: Optional[list[str]] = Field(default=[], description="""Counter electrode used in electrochemical cell.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectrochemistryMixin'], 'slot_uri': 'VOC4CAT:0007203'} }) + electrolyte_composition: Optional[list[str]] = Field(default=[], description="""Chemical composition of the electrolyte solution.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectrochemistryMixin'], + 'slot_uri': 'coremeta4cat:electrolyte_composition'} }) + electrolyte_concentration: Optional[list[float]] = Field(default=[], description="""Concentration of the electrolyte.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectrochemistryMixin'], + 'slot_uri': 'coremeta4cat:electrolyte_concentration', + 'unit': {'ucum_code': 'mol/L'}} }) + atmosphere: Optional[list[str]] = Field(default=[], description="""Gaseous environment or atmospheric conditions during a process.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermalSynthesisMixin', + 'MolecularSynthesis', + 'ElectrochemistryMixin', + 'PowderXRD', + 'XPS', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'Thermogravimetry', + 'Reaction'], + 'slot_uri': 'coremeta4cat:atmosphere'} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class DynamicLightScattering(CharacterizationTechnique): + """ + Dynamic light scattering for hydrodynamic particle size distribution in suspension. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHMO:0000167', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/'}) + + solvent: Optional[list[str]] = Field(default=[], description="""Solvent used in a process or sample preparation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Synthesis', + 'NMRSpectroscopy', + 'UVVisSpectroscopy', + 'DynamicLightScattering'], + 'slot_uri': 'VOC4CAT:0007246'} }) + concentration: Optional[list[float]] = Field(default=[], description="""Concentration of a substance in a sample or solution.""", json_schema_extra = { "linkml_meta": {'domain_of': ['UVVisSpectroscopy', + 'DynamicLightScattering', + 'ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'coremeta4cat:concentration', + 'unit': {'ucum_code': 'mol/L'}} }) + light_wavelength: Optional[list[float]] = Field(default=[], description="""Wavelength of the laser used in DLS measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DynamicLightScattering'], + 'slot_uri': 'VOC4CAT:0000176', + 'unit': {'ucum_code': 'nm'}} }) + scattering_angle: Optional[list[float]] = Field(default=[], description="""Scattering angle at which intensity is detected in DLS.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DynamicLightScattering'], + 'slot_uri': 'coremeta4cat:scattering_angle', + 'unit': {'ucum_code': 'deg'}} }) + refractive_index: Optional[list[float]] = Field(default=[], description="""Refractive index of the solvent used in DLS measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DynamicLightScattering'], + 'slot_uri': 'coremeta4cat:refractive_index'} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + dispersant: Optional[list[str]] = Field(default=[], description="""Dispersant used (e.g. in DLS measurement or flame spray pyrolysis).""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis', 'DynamicLightScattering'], + 'slot_uri': 'coremeta4cat:dispersant'} }) + measurement_duration: Optional[list[float]] = Field(default=[], description="""Duration of a single DLS acquisition.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DynamicLightScattering'], + 'slot_uri': 'coremeta4cat:measurement_duration', + 'unit': {'ucum_code': 's'}} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class ElectroSprayIonizationMassSpectrometry(CharacterizationTechnique, MassRangeMixin): + """ + Electrospray ionisation mass spectrometry for molecular mass and identity determination. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHMO:0000482', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixins': ['MassRangeMixin']}) + + operation_mode: Optional[list[str]] = Field(default=[], description="""Operation mode of an instrument (e.g. transmission, reflection, AC, DC).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PowderXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'TransmissionElectronMicroscopy', + 'Thermogravimetry', + 'ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'VOC4CAT:0000108'} }) + spray_voltage: Optional[list[float]] = Field(default=[], description="""Spray voltage applied in electrospray ionisation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'CHMO:0002792', + 'unit': {'ucum_code': 'kV'}} }) + capillary_temperature: Optional[list[float]] = Field(default=[], description="""Capillary or desolvation temperature in ESI source.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'coremeta4cat:capillary_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + solvent_composition: Optional[list[str]] = Field(default=[], description="""Solvent composition used for ESI spray solution.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'VOC4CAT:0007246'} }) + flow_rate: Optional[list[float]] = Field(default=[], description="""Flow rate of a fluid or gas.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis', + 'ChromatographyMixin', + 'DRIFTS', + 'ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'coremeta4cat:flow_rate', + 'unit': {'ucum_code': 'mL/min'}} }) + carrier_gas: Optional[list[str]] = Field(default=[], description="""Carrier gas used in a process (e.g. in GC analysis or ALD deposition).""", json_schema_extra = { "linkml_meta": {'domain_of': ['AtomicLayerDeposition', + 'ElementalAnalysis', + 'ElectroSprayIonizationMassSpectrometry', + 'GCMS'], + 'slot_uri': 'coremeta4cat:carrier_gas'} }) + concentration: Optional[list[float]] = Field(default=[], description="""Concentration of a substance in a sample or solution.""", json_schema_extra = { "linkml_meta": {'domain_of': ['UVVisSpectroscopy', + 'DynamicLightScattering', + 'ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'coremeta4cat:concentration', + 'unit': {'ucum_code': 'mol/L'}} }) + mz_minimum: Optional[list[float]] = Field(default=[], description="""Minimum m/z value in the mass scan range.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MassRangeMixin'], 'slot_uri': 'AFR:0002652'} }) + mz_maximum: Optional[list[float]] = Field(default=[], description="""Maximum m/z value in the mass scan range.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MassRangeMixin'], 'slot_uri': 'AFR:0002653'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class GCMS(CharacterizationTechnique, MassRangeMixin, ChromatographyMixin): + """ + Gas chromatography-mass spectrometry for volatile compound identification and quantification. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHMO:0000497', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixins': ['ChromatographyMixin', 'MassRangeMixin']}) + + carrier_gas: Optional[list[str]] = Field(default=[], description="""Carrier gas used in a process (e.g. in GC analysis or ALD deposition).""", json_schema_extra = { "linkml_meta": {'domain_of': ['AtomicLayerDeposition', + 'ElementalAnalysis', + 'ElectroSprayIonizationMassSpectrometry', + 'GCMS'], + 'slot_uri': 'coremeta4cat:carrier_gas'} }) + carrier_gas_purity: Optional[list[str]] = Field(default=[], description="""Purity grade of the carrier gas used in GC.""", json_schema_extra = { "linkml_meta": {'domain_of': ['GCMS'], 'slot_uri': 'coremeta4cat:carrier_gas_purity'} }) + inlet_temperature: Optional[list[float]] = Field(default=[], description="""GC inlet temperature.""", json_schema_extra = { "linkml_meta": {'domain_of': ['GCMS'], + 'slot_uri': 'coremeta4cat:inlet_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + minimum_oven_temperature: Optional[list[float]] = Field(default=[], description="""Minimum oven temperature in GC temperature programme.""", json_schema_extra = { "linkml_meta": {'domain_of': ['GCMS'], + 'slot_uri': 'coremeta4cat:minimum_oven_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + maximum_oven_temperature: Optional[list[float]] = Field(default=[], description="""Maximum oven temperature in GC temperature programme.""", json_schema_extra = { "linkml_meta": {'domain_of': ['GCMS'], + 'slot_uri': 'coremeta4cat:maximum_oven_temperature', + 'unit': {'ucum_code': 'Cel'}} }) + heating_ramp: Optional[list[float]] = Field(default=[], description="""Temperature ramp rate in GC oven programme.""", json_schema_extra = { "linkml_meta": {'domain_of': ['GCMS'], + 'slot_uri': 'coremeta4cat:heating_ramp', + 'unit': {'ucum_code': 'Cel/min'}} }) + heating_procedure: Optional[list[str]] = Field(default=[], description="""Description of the heating procedure applied.""", json_schema_extra = { "linkml_meta": {'domain_of': ['TemperatureProgramMixin', 'GCMS'], + 'slot_uri': 'coremeta4cat:heating_procedure'} }) + acquisition_mode: Optional[list[str]] = Field(default=[], description="""Mass spectrometer acquisition mode (e.g. full scan, SIM, SRM).""", json_schema_extra = { "linkml_meta": {'domain_of': ['GCMS'], 'slot_uri': 'coremeta4cat:acquisition_mode'} }) + solvent_delay: Optional[list[float]] = Field(default=[], description="""Solvent delay time before MS acquisition begins.""", json_schema_extra = { "linkml_meta": {'domain_of': ['GCMS'], + 'slot_uri': 'coremeta4cat:solvent_delay', + 'unit': {'ucum_code': 'min'}} }) + trace_ion_detection: Optional[list[str]] = Field(default=[], description="""Trace ion detection setting or threshold.""", json_schema_extra = { "linkml_meta": {'domain_of': ['GCMS'], 'slot_uri': 'coremeta4cat:trace_ion_detection'} }) + split_ratio: Optional[list[float]] = Field(default=[], description="""Split ratio at the GC injector.""", json_schema_extra = { "linkml_meta": {'domain_of': ['GCMS'], 'slot_uri': 'coremeta4cat:split_ratio'} }) + column_type: Optional[list[str]] = Field(default=[], description="""Type of chromatographic column used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], 'slot_uri': 'coremeta4cat:column_type'} }) + eluent: Optional[list[str]] = Field(default=[], description="""Eluent or mobile phase used in chromatography.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], 'slot_uri': 'AFRL:0000011'} }) + flow_rate: Optional[list[float]] = Field(default=[], description="""Flow rate of a fluid or gas.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis', + 'ChromatographyMixin', + 'DRIFTS', + 'ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'coremeta4cat:flow_rate', + 'unit': {'ucum_code': 'mL/min'}} }) + injection_volume: Optional[list[float]] = Field(default=[], description="""Volume injected in a chromatographic or mass spectrometric experiment.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], + 'slot_uri': 'coremeta4cat:injection_volume', + 'unit': {'ucum_code': 'uL'}} }) + external_standard: Optional[list[str]] = Field(default=[], description="""External standard used for quantification or calibration.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], + 'slot_uri': 'coremeta4cat:external_standard'} }) + internal_standard: Optional[list[str]] = Field(default=[], description="""Internal standard used for quantification or calibration.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], + 'slot_uri': 'coremeta4cat:internal_standard'} }) + mz_minimum: Optional[list[float]] = Field(default=[], description="""Minimum m/z value in the mass scan range.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MassRangeMixin'], 'slot_uri': 'AFR:0002652'} }) + mz_maximum: Optional[list[float]] = Field(default=[], description="""Maximum m/z value in the mass scan range.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MassRangeMixin'], 'slot_uri': 'AFR:0002653'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class SizeExclusionChromatography(CharacterizationTechnique, ChromatographyMixin): + """ + Size exclusion chromatography for molecular weight distribution determination. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'AFP:0000843', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixins': ['ChromatographyMixin']}) + + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + calibration_standard: Optional[list[str]] = Field(default=[], description="""Calibration standard used for molecular weight or retention time calibration.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SizeExclusionChromatography'], + 'slot_uri': 'coremeta4cat:calibration_standard'} }) + column_type: Optional[list[str]] = Field(default=[], description="""Type of chromatographic column used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], 'slot_uri': 'coremeta4cat:column_type'} }) + eluent: Optional[list[str]] = Field(default=[], description="""Eluent or mobile phase used in chromatography.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], 'slot_uri': 'AFRL:0000011'} }) + flow_rate: Optional[list[float]] = Field(default=[], description="""Flow rate of a fluid or gas.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis', + 'ChromatographyMixin', + 'DRIFTS', + 'ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'coremeta4cat:flow_rate', + 'unit': {'ucum_code': 'mL/min'}} }) + injection_volume: Optional[list[float]] = Field(default=[], description="""Volume injected in a chromatographic or mass spectrometric experiment.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], + 'slot_uri': 'coremeta4cat:injection_volume', + 'unit': {'ucum_code': 'uL'}} }) + external_standard: Optional[list[str]] = Field(default=[], description="""External standard used for quantification or calibration.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], + 'slot_uri': 'coremeta4cat:external_standard'} }) + internal_standard: Optional[list[str]] = Field(default=[], description="""Internal standard used for quantification or calibration.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], + 'slot_uri': 'coremeta4cat:internal_standard'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class HighPerformanceLiquidChromatographyMassSpectrometry(CharacterizationTechnique, ChromatographyMixin): + """ + High-performance liquid chromatography-mass spectrometry for compound identification and quantification. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHMO:0000796', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/characterization/', + 'mixins': ['ChromatographyMixin']}) + + gradient_program: Optional[list[str]] = Field(default=[], description="""Gradient elution programme used in HPLC-MS.""", json_schema_extra = { "linkml_meta": {'domain_of': ['HighPerformanceLiquidChromatographyMassSpectrometry'], + 'slot_uri': 'coremeta4cat:gradient_program'} }) + ionization_mode: Optional[list[str]] = Field(default=[], description="""Ionisation mode used in HPLC-MS (e.g. positive, negative, APCI, ESI).""", json_schema_extra = { "linkml_meta": {'domain_of': ['HighPerformanceLiquidChromatographyMassSpectrometry'], + 'slot_uri': 'coremeta4cat:ionization_mode'} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + column_type: Optional[list[str]] = Field(default=[], description="""Type of chromatographic column used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], 'slot_uri': 'coremeta4cat:column_type'} }) + eluent: Optional[list[str]] = Field(default=[], description="""Eluent or mobile phase used in chromatography.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], 'slot_uri': 'AFRL:0000011'} }) + flow_rate: Optional[list[float]] = Field(default=[], description="""Flow rate of a fluid or gas.""", json_schema_extra = { "linkml_meta": {'domain_of': ['FlameSprayPyrolysis', + 'ChromatographyMixin', + 'DRIFTS', + 'ElectroSprayIonizationMassSpectrometry'], + 'slot_uri': 'coremeta4cat:flow_rate', + 'unit': {'ucum_code': 'mL/min'}} }) + injection_volume: Optional[list[float]] = Field(default=[], description="""Volume injected in a chromatographic or mass spectrometric experiment.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], + 'slot_uri': 'coremeta4cat:injection_volume', + 'unit': {'ucum_code': 'uL'}} }) + external_standard: Optional[list[str]] = Field(default=[], description="""External standard used for quantification or calibration.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], + 'slot_uri': 'coremeta4cat:external_standard'} }) + internal_standard: Optional[list[str]] = Field(default=[], description="""Internal standard used for quantification or calibration.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChromatographyMixin'], + 'slot_uri': 'coremeta4cat:internal_standard'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class ProductIdentificationMethod(Plan): + """ + Abstract Plan representing the method used to identify and quantify reaction + products. In practice, users should reference a concrete CharacterizationTechnique + subclass from coremeta4cat_characterization_ap (e.g. GCMS, HPLC_MS, NMRSpectroscopy). + + This abstract class is retained for backward compatibility with the original + CoreMeta4Cat monolith. It is a subclass of Plan (prov:Plan / OBI:0000272) so that + it can participate in the realized_plan slot if needed. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'abstract': True, + 'class_uri': 'OBI:0000272', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/reaction/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class QualitativeAttribute(ClassifierMixin): + """ + A piece of information that is attributed to an Entity, Activity or AgenticEntity. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'prov:Entity', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core'], + 'mixins': ['ClassifierMixin'], + 'slot_usage': {'value': {'description': 'The slot to provide the literal ' + 'value of the QualitativeAttribute.', + 'name': 'value', + 'required': True}}}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class QuantitativeAttribute(ClassifierMixin): + """ + A quantifiable piece of information that is attributed to an Entity, Activity or AgenticEntity. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'qudt:Quantity', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core'], + 'mixins': ['ClassifierMixin'], + 'slot_usage': {'value': {'description': 'The slot to provide the literal ' + 'value of the QuantitativeAttribute.', + 'name': 'value', + 'range': 'float', + 'required': True}}}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: float = Field(default=..., description="""The slot to provide the literal value of the QuantitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + has_quantity_type: str = Field(default=..., description="""The type of quality that is quantifiable according to the QUDT ontology.""", json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Binds the type of a quantifiable attribute to a ' + 'QUDT Quantity Kind instance from the QUDT ' + 'Quantity Kind vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTQuantityKindEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'slot_uri': 'qudt:hasQuantityKind'} }) + unit: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Restricts the allowable defined terms to the ' + 'QUDT Unit vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTUnitEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'recommended': True, + 'slot_uri': 'qudt:unit'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Relationship(ConfiguredBaseModel): + """ + See [DCAT-AP specs:Relationship](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Relationship) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcat:Relationship', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'slot_usage': {'had_role': {'description': 'A function of an entity or agent ' + 'with respect to another entity or ' + 'resource.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'had_role', + 'range': 'Role', + 'required': True, + 'slot_uri': 'dcat:hadRole'}, + 'relation': {'description': 'A resource related to the source ' + 'resource.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'relation', + 'range': 'Resource', + 'required': True, + 'slot_uri': 'dcterms:relation'}}}) + + had_role: list[Role] = Field(default=..., description="""A function of an entity or agent with respect to another entity or resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Relationship'], 'slot_uri': 'dcat:hadRole'} }) + relation: list[Resource] = Field(default=..., description="""A resource related to the source resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Relationship'], 'slot_uri': 'dcterms:relation'} }) + + +class Software(AgenticEntity): + """ + An instrument composed of a series of instructions that can be interpreted by or directly executed by a computer. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'prov:SoftwareAgent', + 'exact_mappings': ['schema:SoftwareApplication'], + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core'], + 'slot_usage': {'has_part': {'description': 'The slot to specify parts of a ' + 'Software that are themselves ' + 'Software.', + 'inlined': True, + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'has_part', + 'range': 'Software'}, + 'other_identifier': {'description': 'A slot to provide a ' + 'secondary identifier for ' + 'a Software.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'other_identifier', + 'range': 'Identifier', + 'required': False}}}) + + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier for a Software.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Software]] = Field(default=[], description="""The slot to specify parts of a Software that are themselves Software.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to provide the AgenticEntity of which theAgenticEntity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class SupportiveEntity(ConfiguredBaseModel): + """ + The supportive entities are supporting the main entities in the Application Profile. They are included in the Application Profile because they form the range of properties. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class Attribution(SupportiveEntity): + """ + See [DCAT-AP specs:Attribution](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Attribution) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'prov:Attribution', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class ChecksumAlgorithm(SupportiveEntity): + """ + See [DCAT-AP specs:ChecksumAlgorithm](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#ChecksumAlgorithm) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'spdx:ChecksumAlgorithm', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class Concept(SupportiveEntity): + """ + See [DCAT-AP specs:Concept](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Concept) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'skos:Concept', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'slot_usage': {'preferred_label': {'description': 'A preferred label of the ' + 'concept.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'preferred_label', + 'range': 'string', + 'required': True, + 'slot_uri': 'skos:prefLabel'}}}) + + preferred_label: list[str] = Field(default=..., description="""A preferred label of the concept.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Concept'], 'slot_uri': 'skos:prefLabel'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class ConceptScheme(SupportiveEntity): + """ + See [DCAT-AP specs:ConceptScheme](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#ConceptScheme) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'skos:ConceptScheme', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'slot_usage': {'title': {'description': 'A name of the concept scheme.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'title', + 'range': 'string', + 'required': True, + 'slot_uri': 'dcterms:title'}}}) + + title: list[str] = Field(default=..., description="""A name of the concept scheme.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class Document(SupportiveEntity): + """ + See [DCAT-AP specs:Document](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Document) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'foaf:Document', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class Frequency(SupportiveEntity): + """ + See [DCAT-AP specs:Frequency](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Frequency) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcterms:Frequency', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class Geometry(SupportiveEntity): + """ + See [DCAT-AP specs:Geometry](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Geometry) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'locn:Geometry', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class Identifier(SupportiveEntity): + """ + See [DCAT-AP specs:Identifier](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Identifier) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'adms:Identifier', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'slot_usage': {'notation': {'description': 'A string that is an identifier in ' + 'the context of the identifier ' + 'scheme referenced by its ' + 'datatype.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'notation', + 'range': 'string', + 'required': True, + 'slot_uri': 'skos:notation'}}}) + + notation: str = Field(default=..., description="""A string that is an identifier in the context of the identifier scheme referenced by its datatype.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Identifier'], 'slot_uri': 'skos:notation'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class LegalResource(SupportiveEntity): + """ + See [DCAT-AP specs:LegalResource](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#LegalResource) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'eli:LegalResource', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class LicenseDocument(SupportiveEntity): + """ + See [DCAT-AP specs:LicenseDocument](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#LicenseDocument) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcterms:LicenseDocument', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'slot_usage': {'type': {'description': 'A type of licence, e.g. indicating ' + "'public domain' or 'royalties " + "required'.", + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'type', + 'range': 'Concept', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcterms:type'}}}) + + type: Optional[list[Concept]] = Field(default=[], description="""A type of licence, e.g. indicating 'public domain' or 'royalties required'.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'recommended': True, + 'slot_uri': 'dcterms:type'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class LinguisticSystem(SupportiveEntity): + """ + See [DCAT-AP specs:LinguisticSystem](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#LinguisticSystem) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcterms:LinguisticSystem', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class MediaType(SupportiveEntity): + """ + See [DCAT-AP specs:MediaType](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#MediaType) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcterms:MediaType', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class MediaTypeOrExtent(SupportiveEntity): + """ + See [DCAT-AP specs:MediaTypeOrExtent](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#MediaTypeOrExtent) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcterms:MediaTypeOrExtent', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class PeriodOfTime(SupportiveEntity): + """ + See [DCAT-AP specs:PeriodOfTime](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#PeriodOfTime) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcterms:PeriodOfTime', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'slot_usage': {'beginning': {'description': 'The beginning of a period or ' + 'interval.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'beginning', + 'range': 'TimeInstant', + 'required': False, + 'slot_uri': 'time:hasBeginning'}, + 'end': {'description': 'The end of a period or interval.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'end', + 'range': 'TimeInstant', + 'required': False, + 'slot_uri': 'time:hasEnd'}, + 'end_date': {'description': 'The end of the period.', + 'inlined_as_list': True, + 'multivalued': False, + 'name': 'end_date', + 'range': 'date', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcat:endDate'}, + 'start_date': {'description': 'The start of the period.', + 'inlined_as_list': False, + 'multivalued': False, + 'name': 'start_date', + 'range': 'date', + 'recommended': True, + 'required': False, + 'slot_uri': 'dcat:startDate'}}}) + + beginning: Optional[TimeInstant] = Field(default=None, description="""The beginning of a period or interval.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PeriodOfTime'], 'slot_uri': 'time:hasBeginning'} }) + end: Optional[TimeInstant] = Field(default=None, description="""The end of a period or interval.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PeriodOfTime'], 'slot_uri': 'time:hasEnd'} }) + end_date: Optional[date] = Field(default=None, description="""The end of the period.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PeriodOfTime'], 'recommended': True, 'slot_uri': 'dcat:endDate'} }) + start_date: Optional[date] = Field(default=None, description="""The start of the period.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PeriodOfTime'], + 'recommended': True, + 'slot_uri': 'dcat:startDate'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class Policy(SupportiveEntity): + """ + See [DCAT-AP specs:Policy](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Policy) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'odrl:Policy', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class ProvenanceStatement(SupportiveEntity): + """ + See [DCAT-AP specs:ProvenanceStatement](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#ProvenanceStatement) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcterms:ProvenanceStatement', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class Resource(SupportiveEntity): + """ + See [DCAT-AP specs:Resource](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Resource) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'rdfs:Resource', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class RightsStatement(SupportiveEntity): + """ + See [DCAT-AP specs:RightsStatement](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#RightsStatement) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcterms:RightsStatement', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class Role(SupportiveEntity): + """ + See [DCAT-AP specs:Role](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Role) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcat:Role', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class Standard(SupportiveEntity): + """ + See [DCAT-AP specs:Standard](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#Standard) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcterms:Standard', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class Surrounding(ClassifierMixin): + """ + The surrounding in which the dataset creating activity took place (e.g. a lab). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'prov:Location', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/', + 'in_subset': ['domain_agnostic_core'], + 'mixins': ['ClassifierMixin']}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class TimeInstant(SupportiveEntity): + """ + See [DCAT-AP specs:TimeInstant](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#TimeInstant) + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'time:Instant', + 'from_schema': 'https://w3id.org/nfdi-de/dcat-ap-plus/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + + +class InChIKey(QualitativeAttribute): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHEMINF:000059', + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_entities_ap.yaml'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class InChi(QualitativeAttribute): + """ + A structure descriptor which conforms to the InChI format specification. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHEMINF:000113', + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_entities_ap.yaml'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class MolecularFormula(QualitativeAttribute): + """ + A structure descriptor which identifies each constituent element by its chemical symbol and indicates the number of atoms of each element found in each discrete molecule of that compound. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHEMINF:000042', + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_entities_ap.yaml'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class IUPACName(QualitativeAttribute): + """ + A systematic name which is formulated according to the rules and recommendations for chemical nomenclature set out by the International Union of Pure and Applied Chemistry (IUPAC). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHEMINF:000107', + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_entities_ap.yaml'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class SMILES(QualitativeAttribute): + """ + A structure descriptor that denotes a molecular structure as a graph and conforms to the SMILES format specification. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHEMINF:000018', + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_entities_ap.yaml'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Concentration(QuantitativeAttribute): + """ + A QuantitativeAttribute of a ChemicalSubstance that represents the amount of a constituent divided by the volume of the mixture. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHMO:0002820', + 'close_mappings': ['PATO:0000033'], + 'exact_mappings': ['EDAM:2140', + 'NCIT:C41185', + 'VOC4CAT:0007244', + 'AFR:0002036'], + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_entities_ap.yaml', + 'narrow_mappings': ['CHMO:0002822']}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: float = Field(default=..., description="""The slot to provide the literal value of the QuantitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + has_quantity_type: str = Field(default=..., description="""The type of quality that is quantifiable according to the QUDT ontology.""", json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Binds the type of a quantifiable attribute to a ' + 'QUDT Quantity Kind instance from the QUDT ' + 'Quantity Kind vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTQuantityKindEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'slot_uri': 'qudt:hasQuantityKind'} }) + unit: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Restricts the allowable defined terms to the ' + 'QUDT Unit vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTUnitEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'recommended': True, + 'slot_uri': 'qudt:unit'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class AmountOfSubstance(QuantitativeAttribute): + """ + The total amount of substance used in a ChemicalReaction. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'aliases': ['SubstanceAmount'], + 'class_uri': 'qudt:Quantity', + 'close_mappings': ['PATO:0000070'], + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_entities_ap.yaml'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: float = Field(default=..., description="""The slot to provide the literal value of the QuantitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + has_quantity_type: str = Field(default=..., description="""The type of quality that is quantifiable according to the QUDT ontology.""", json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Binds the type of a quantifiable attribute to a ' + 'QUDT Quantity Kind instance from the QUDT ' + 'Quantity Kind vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTQuantityKindEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'slot_uri': 'qudt:hasQuantityKind'} }) + unit: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Restricts the allowable defined terms to the ' + 'QUDT Unit vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTUnitEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'recommended': True, + 'slot_uri': 'qudt:unit'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class PHValue(QuantitativeAttribute): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'SIO:001089', + 'close_mappings': ['PATO:0001842'], + 'exact_mappings': ['NCIT:C45997', 'AFR:0001142'], + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_entities_ap.yaml'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: float = Field(default=..., description="""The slot to provide the literal value of the QuantitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + has_quantity_type: str = Field(default=..., description="""The type of quality that is quantifiable according to the QUDT ontology.""", json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Binds the type of a quantifiable attribute to a ' + 'QUDT Quantity Kind instance from the QUDT ' + 'Quantity Kind vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTQuantityKindEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'slot_uri': 'qudt:hasQuantityKind'} }) + unit: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Restricts the allowable defined terms to the ' + 'QUDT Unit vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTUnitEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'recommended': True, + 'slot_uri': 'qudt:unit'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Materialistic(ConfiguredBaseModel): + """ + A LinkML mixin used to pass down properties common to all material entities. It is needed for example to have MaterialSample have the same properties as MaterialEntity, although it is defined as a subclass of EvaluatedEntity. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/material_entities_ap.yaml', + 'mixin': True}) + + alternative_label: Optional[str] = Field(default=None, description="""The slot to specify an alternative label, name or title for a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'skos:altLabel', + 'todos': ['Should probably rather declared on Entity or in some common ' + 'metadata mixin instead.']} }) + has_physical_state: Optional[PhysicalStateEnum] = Field(default=None, description="""The slot to specify the physical state of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'SIO:000008', + 'todos': ['Find out how to make this a subproperty of ' + 'has_qualitative_attribute, as it currently throws the error ' + "'physical_state enumerations cannot be inlined' due to the fact " + 'that we are using an enum here.']} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to provide the Temperature of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_mass: Optional[list[Mass]] = Field(default=[], description="""The slot to provide the Mass of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_volume: Optional[list[Volume]] = Field(default=[], description="""The slot to provide the Volume of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_density: Optional[list[Density]] = Field(default=[], description="""The slot to provide the Density of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to provide the Pressure of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + + +class MaterialEntity(Materialistic, Entity): + """ + A material is an Entity that has some portion of matter as proper part. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'BFO:0000040', + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/material_entities_ap.yaml', + 'mixins': ['Materialistic'], + 'slot_usage': {'has_part': {'description': 'The slot to provide the parts of ' + 'a MaterialEntity.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'has_part', + 'range': 'MaterialEntity', + 'recommended': True, + 'slot_uri': 'BFO:0000051'}}}) + + alternative_label: Optional[str] = Field(default=None, description="""The slot to specify an alternative label, name or title for a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'skos:altLabel', + 'todos': ['Should probably rather declared on Entity or in some common ' + 'metadata mixin instead.']} }) + has_physical_state: Optional[PhysicalStateEnum] = Field(default=None, description="""The slot to specify the physical state of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'SIO:000008', + 'todos': ['Find out how to make this a subproperty of ' + 'has_qualitative_attribute, as it currently throws the error ' + "'physical_state enumerations cannot be inlined' due to the fact " + 'that we are using an enum here.']} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to provide the Temperature of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_mass: Optional[list[Mass]] = Field(default=[], description="""The slot to provide the Mass of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_volume: Optional[list[Volume]] = Field(default=[], description="""The slot to provide the Volume of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_density: Optional[list[Density]] = Field(default=[], description="""The slot to provide the Density of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to provide the Pressure of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[MaterialEntity]] = Field(default=[], description="""The slot to provide the parts of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + part_of: Optional[list[Entity]] = Field(default=[], description="""The slot to specify an Entity of which the Entity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class ChemicalEntity(MaterialEntity): + """ + Any constitutionally or isotopically distinct atom, molecule, ion, ion pair, radical, radical ion, complex, conformer etc., identifiable as a separately distinguishable entity. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHEBI:23367', + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_entities_ap.yaml'}) + + inchi: Optional[list[InChi]] = Field(default=[], description="""The slot to provide the InChi descriptor of a ChemicalEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalEntity'], + 'is_a': 'has_qualitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + inchikey: Optional[list[InChIKey]] = Field(default=[], description="""The slot to provide the InChiKey of a ChemicalEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalEntity'], + 'is_a': 'has_qualitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + smiles: Optional[list[SMILES]] = Field(default=[], description="""The slot to provide the canonical SMILES descriptor of a ChemicalEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalEntity'], + 'is_a': 'has_qualitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + molecular_formula: Optional[list[MolecularFormula]] = Field(default=[], description="""The slot to provide the IUPAC formula of a ChemicalEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalEntity'], + 'is_a': 'has_qualitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + iupac_name: Optional[list[IUPACName]] = Field(default=[], description="""The slot to provide the IUPAC name of a ChemicalEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalEntity'], + 'is_a': 'has_qualitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_molar_mass: Optional[list[MolarMass]] = Field(default=[], description="""The slot to provide the MolarMass of a ChemicalEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalEntity'], + 'is_a': 'has_mass', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + alternative_label: Optional[str] = Field(default=None, description="""The slot to specify an alternative label, name or title for a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'skos:altLabel', + 'todos': ['Should probably rather declared on Entity or in some common ' + 'metadata mixin instead.']} }) + has_physical_state: Optional[PhysicalStateEnum] = Field(default=None, description="""The slot to specify the physical state of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'SIO:000008', + 'todos': ['Find out how to make this a subproperty of ' + 'has_qualitative_attribute, as it currently throws the error ' + "'physical_state enumerations cannot be inlined' due to the fact " + 'that we are using an enum here.']} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to provide the Temperature of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_mass: Optional[list[Mass]] = Field(default=[], description="""The slot to provide the Mass of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_volume: Optional[list[Volume]] = Field(default=[], description="""The slot to provide the Volume of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_density: Optional[list[Density]] = Field(default=[], description="""The slot to provide the Density of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to provide the Pressure of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[MaterialEntity]] = Field(default=[], description="""The slot to provide the parts of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + part_of: Optional[list[Entity]] = Field(default=[], description="""The slot to specify an Entity of which the Entity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Atom(ChemicalEntity): + """ + A MaterialEntity constituting the smallest component of an element having the chemical properties of the element. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHEBI:33250', + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_entities_ap.yaml', + 'slot_usage': {'rdf_type': {'description': 'The slot to provide the Atom as a ' + 'ChEBI ID from the atom ' + '(CHEBI:33250) branch.', + 'name': 'rdf_type', + 'required': True}}}) + + inchi: Optional[list[InChi]] = Field(default=[], description="""The slot to provide the InChi descriptor of a ChemicalEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalEntity'], + 'is_a': 'has_qualitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + inchikey: Optional[list[InChIKey]] = Field(default=[], description="""The slot to provide the InChiKey of a ChemicalEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalEntity'], + 'is_a': 'has_qualitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + smiles: Optional[list[SMILES]] = Field(default=[], description="""The slot to provide the canonical SMILES descriptor of a ChemicalEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalEntity'], + 'is_a': 'has_qualitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + molecular_formula: Optional[list[MolecularFormula]] = Field(default=[], description="""The slot to provide the IUPAC formula of a ChemicalEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalEntity'], + 'is_a': 'has_qualitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + iupac_name: Optional[list[IUPACName]] = Field(default=[], description="""The slot to provide the IUPAC name of a ChemicalEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalEntity'], + 'is_a': 'has_qualitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_molar_mass: Optional[list[MolarMass]] = Field(default=[], description="""The slot to provide the MolarMass of a ChemicalEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalEntity'], + 'is_a': 'has_mass', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + alternative_label: Optional[str] = Field(default=None, description="""The slot to specify an alternative label, name or title for a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'skos:altLabel', + 'todos': ['Should probably rather declared on Entity or in some common ' + 'metadata mixin instead.']} }) + has_physical_state: Optional[PhysicalStateEnum] = Field(default=None, description="""The slot to specify the physical state of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'SIO:000008', + 'todos': ['Find out how to make this a subproperty of ' + 'has_qualitative_attribute, as it currently throws the error ' + "'physical_state enumerations cannot be inlined' due to the fact " + 'that we are using an enum here.']} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to provide the Temperature of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_mass: Optional[list[Mass]] = Field(default=[], description="""The slot to provide the Mass of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_volume: Optional[list[Volume]] = Field(default=[], description="""The slot to provide the Volume of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_density: Optional[list[Density]] = Field(default=[], description="""The slot to provide the Density of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to provide the Pressure of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[MaterialEntity]] = Field(default=[], description="""The slot to provide the parts of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + part_of: Optional[list[Entity]] = Field(default=[], description="""The slot to specify an Entity of which the Entity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: DefinedTerm = Field(default=..., description="""The slot to provide the Atom as a ChEBI ID from the atom (CHEBI:33250) branch.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class ChemicalSubstance(MaterialEntity): + """ + A MaterialEntity of constant composition, composed of chemical entities of the same type or of different types. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHEBI:59999', + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_entities_ap.yaml', + 'mixin': True}) + + has_concentration: Optional[list[Concentration]] = Field(default=[], description="""The slot to provide the Concentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_ph_value: Optional[list[PHValue]] = Field(default=[], description="""The slot to provide the PHValue of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + composed_of: Optional[list[ChemicalEntity]] = Field(default=[], description="""The slot to provide the chemical entities of which a ChemicalSubstance is composed of.""", json_schema_extra = { "linkml_meta": {'close_mappings': ['AFX:0000940'], + 'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_part', + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + has_molar_equivalent: Optional[list[MolarEquivalent]] = Field(default=[], description="""A slot to provide the MolarEquivalent of a ChemicalSubstance, such as the DissolvingSubstance, Starting Material or Reactant, within the context of a chemical reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'StartingMaterial', 'Reagent', 'Catalyst'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_amount: Optional[list[AmountOfSubstance]] = Field(default=[], description="""The slot to provide the AmountConcentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_percentage_of_total: Optional[list[PercentageOfTotal]] = Field(default=[], description="""A slot to specify the percentage of a specific ChemicalSubstance in relation to the total amount of that same substance used across a multi-step reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'DissolvingSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + alternative_label: Optional[str] = Field(default=None, description="""The slot to specify an alternative label, name or title for a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'skos:altLabel', + 'todos': ['Should probably rather declared on Entity or in some common ' + 'metadata mixin instead.']} }) + has_physical_state: Optional[PhysicalStateEnum] = Field(default=None, description="""The slot to specify the physical state of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'SIO:000008', + 'todos': ['Find out how to make this a subproperty of ' + 'has_qualitative_attribute, as it currently throws the error ' + "'physical_state enumerations cannot be inlined' due to the fact " + 'that we are using an enum here.']} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to provide the Temperature of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_mass: Optional[list[Mass]] = Field(default=[], description="""The slot to provide the Mass of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_volume: Optional[list[Volume]] = Field(default=[], description="""The slot to provide the Volume of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_density: Optional[list[Density]] = Field(default=[], description="""The slot to provide the Density of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to provide the Pressure of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[MaterialEntity]] = Field(default=[], description="""The slot to provide the parts of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + part_of: Optional[list[Entity]] = Field(default=[], description="""The slot to specify an Entity of which the Entity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Polymer(ChemicalSubstance): + """ + A ChemicalSubstance that is composed of macromolecules of different kinds and which may be differentiated by composition, length, degree of branching etc.. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHEBI:60027', + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_entities_ap.yaml', + 'mixin': True}) + + has_concentration: Optional[list[Concentration]] = Field(default=[], description="""The slot to provide the Concentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_ph_value: Optional[list[PHValue]] = Field(default=[], description="""The slot to provide the PHValue of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + composed_of: Optional[list[ChemicalEntity]] = Field(default=[], description="""The slot to provide the chemical entities of which a ChemicalSubstance is composed of.""", json_schema_extra = { "linkml_meta": {'close_mappings': ['AFX:0000940'], + 'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_part', + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + has_molar_equivalent: Optional[list[MolarEquivalent]] = Field(default=[], description="""A slot to provide the MolarEquivalent of a ChemicalSubstance, such as the DissolvingSubstance, Starting Material or Reactant, within the context of a chemical reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'StartingMaterial', 'Reagent', 'Catalyst'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_amount: Optional[list[AmountOfSubstance]] = Field(default=[], description="""The slot to provide the AmountConcentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_percentage_of_total: Optional[list[PercentageOfTotal]] = Field(default=[], description="""A slot to specify the percentage of a specific ChemicalSubstance in relation to the total amount of that same substance used across a multi-step reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'DissolvingSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + alternative_label: Optional[str] = Field(default=None, description="""The slot to specify an alternative label, name or title for a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'skos:altLabel', + 'todos': ['Should probably rather declared on Entity or in some common ' + 'metadata mixin instead.']} }) + has_physical_state: Optional[PhysicalStateEnum] = Field(default=None, description="""The slot to specify the physical state of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'SIO:000008', + 'todos': ['Find out how to make this a subproperty of ' + 'has_qualitative_attribute, as it currently throws the error ' + "'physical_state enumerations cannot be inlined' due to the fact " + 'that we are using an enum here.']} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to provide the Temperature of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_mass: Optional[list[Mass]] = Field(default=[], description="""The slot to provide the Mass of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_volume: Optional[list[Volume]] = Field(default=[], description="""The slot to provide the Volume of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_density: Optional[list[Density]] = Field(default=[], description="""The slot to provide the Density of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to provide the Pressure of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[MaterialEntity]] = Field(default=[], description="""The slot to provide the parts of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + part_of: Optional[list[Entity]] = Field(default=[], description="""The slot to specify an Entity of which the Entity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class MaterialSample(Materialistic, EvaluatedEntity): + """ + A Sample that was derived from a previous MaterialSample or some other kind of MaterialEntity. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'OBI:0000747', + 'exact_mappings': ['SIO:001050', 'VOC4CAT:0005056'], + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/material_entities_ap.yaml', + 'mixins': ['Materialistic'], + 'slot_usage': {'derived_from': {'description': 'The slot to specify the ' + 'MaterialEntity or ' + 'MaterialSample from which the ' + 'MaterialSample was created.', + 'name': 'derived_from'}}}) + + derived_from: Optional[Entity] = Field(default=None, description="""The slot to specify the MaterialEntity or MaterialSample from which the MaterialSample was created.""", json_schema_extra = { "linkml_meta": {'close_mappings': ['BFO:0000050', 'dcterms:partOf'], + 'domain_of': ['MaterialSample'], + 'exact_mappings': ['SIO:000244'], + 'slot_uri': 'prov:wasDerivedFrom'} }) + alternative_label: Optional[str] = Field(default=None, description="""The slot to specify an alternative label, name or title for a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'skos:altLabel', + 'todos': ['Should probably rather declared on Entity or in some common ' + 'metadata mixin instead.']} }) + has_physical_state: Optional[PhysicalStateEnum] = Field(default=None, description="""The slot to specify the physical state of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'SIO:000008', + 'todos': ['Find out how to make this a subproperty of ' + 'has_qualitative_attribute, as it currently throws the error ' + "'physical_state enumerations cannot be inlined' due to the fact " + 'that we are using an enum here.']} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to provide the Temperature of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_mass: Optional[list[Mass]] = Field(default=[], description="""The slot to provide the Mass of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_volume: Optional[list[Volume]] = Field(default=[], description="""The slot to provide the Volume of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_density: Optional[list[Density]] = Field(default=[], description="""The slot to provide the Density of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to provide the Pressure of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + was_generated_by: Optional[list[Activity]] = Field(default=[], description="""A slot to provide the Activity which created the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'EvaluatedEntity'], 'slot_uri': 'prov:wasGeneratedBy'} }) + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Entity]] = Field(default=[], description="""A slot to provide a part of the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[Entity]] = Field(default=[], description="""The slot to specify an Entity of which the Entity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Precursor(MaterialSample): + """ + A MaterialSample that serves as input material in a catalyst Synthesis. + Precursors are consumed or transformed during the preparation process. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'CHEBI:52717', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'slot_usage': {'precursor_quantity': {'name': 'precursor_quantity', + 'required': True}}}) + + precursor_quantity: list[float] = Field(default=..., description="""Quantity of precursor used in synthesis.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Precursor'], + 'slot_uri': 'coremeta4cat:precursor_quantity', + 'unit': {'ucum_code': 'g'}} }) + derived_from: Optional[Entity] = Field(default=None, description="""The slot to specify the MaterialEntity or MaterialSample from which the MaterialSample was created.""", json_schema_extra = { "linkml_meta": {'close_mappings': ['BFO:0000050', 'dcterms:partOf'], + 'domain_of': ['MaterialSample'], + 'exact_mappings': ['SIO:000244'], + 'slot_uri': 'prov:wasDerivedFrom'} }) + alternative_label: Optional[str] = Field(default=None, description="""The slot to specify an alternative label, name or title for a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'skos:altLabel', + 'todos': ['Should probably rather declared on Entity or in some common ' + 'metadata mixin instead.']} }) + has_physical_state: Optional[PhysicalStateEnum] = Field(default=None, description="""The slot to specify the physical state of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'SIO:000008', + 'todos': ['Find out how to make this a subproperty of ' + 'has_qualitative_attribute, as it currently throws the error ' + "'physical_state enumerations cannot be inlined' due to the fact " + 'that we are using an enum here.']} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to provide the Temperature of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_mass: Optional[list[Mass]] = Field(default=[], description="""The slot to provide the Mass of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_volume: Optional[list[Volume]] = Field(default=[], description="""The slot to provide the Volume of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_density: Optional[list[Density]] = Field(default=[], description="""The slot to provide the Density of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to provide the Pressure of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + was_generated_by: Optional[list[Activity]] = Field(default=[], description="""A slot to provide the Activity which created the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'EvaluatedEntity'], 'slot_uri': 'prov:wasGeneratedBy'} }) + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Entity]] = Field(default=[], description="""A slot to provide a part of the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[Entity]] = Field(default=[], description="""The slot to specify an Entity of which the Entity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class CatalystSample(MaterialSample): + """ + A MaterialSample that is the product of a catalyst Synthesis. + The specific type of catalyst (e.g. heterogeneous, supported metal) + is expressed via rdf_type using a voc4cat term. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'OBI:0000747', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/synthesis/', + 'slot_usage': {'derived_from': {'description': 'The Precursor(s) or other ' + 'MaterialSample from which ' + 'this\n' + 'CatalystSample was produced.', + 'name': 'derived_from', + 'range': 'MaterialSample'}}}) + + derived_from: Optional[MaterialSample] = Field(default=None, description="""The Precursor(s) or other MaterialSample from which this +CatalystSample was produced.""", json_schema_extra = { "linkml_meta": {'close_mappings': ['BFO:0000050', 'dcterms:partOf'], + 'domain_of': ['MaterialSample'], + 'exact_mappings': ['SIO:000244'], + 'slot_uri': 'prov:wasDerivedFrom'} }) + alternative_label: Optional[str] = Field(default=None, description="""The slot to specify an alternative label, name or title for a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'skos:altLabel', + 'todos': ['Should probably rather declared on Entity or in some common ' + 'metadata mixin instead.']} }) + has_physical_state: Optional[PhysicalStateEnum] = Field(default=None, description="""The slot to specify the physical state of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'SIO:000008', + 'todos': ['Find out how to make this a subproperty of ' + 'has_qualitative_attribute, as it currently throws the error ' + "'physical_state enumerations cannot be inlined' due to the fact " + 'that we are using an enum here.']} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to provide the Temperature of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_mass: Optional[list[Mass]] = Field(default=[], description="""The slot to provide the Mass of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_volume: Optional[list[Volume]] = Field(default=[], description="""The slot to provide the Volume of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_density: Optional[list[Density]] = Field(default=[], description="""The slot to provide the Density of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to provide the Pressure of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + was_generated_by: Optional[list[Activity]] = Field(default=[], description="""A slot to provide the Activity which created the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'EvaluatedEntity'], 'slot_uri': 'prov:wasGeneratedBy'} }) + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Entity]] = Field(default=[], description="""A slot to provide a part of the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[Entity]] = Field(default=[], description="""The slot to specify an Entity of which the Entity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Temperature(QuantitativeAttribute): + """ + A physical quantity that quantitatively expresses the attribute of hotness or coldness. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'qudt:Quantity', + 'close_mappings': ['PATO:0000146'], + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/material_entities_ap.yaml'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: float = Field(default=..., description="""The slot to provide the literal value of the QuantitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + has_quantity_type: str = Field(default=..., description="""The type of quality that is quantifiable according to the QUDT ontology.""", json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Binds the type of a quantifiable attribute to a ' + 'QUDT Quantity Kind instance from the QUDT ' + 'Quantity Kind vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTQuantityKindEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'slot_uri': 'qudt:hasQuantityKind'} }) + unit: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Restricts the allowable defined terms to the ' + 'QUDT Unit vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTUnitEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'recommended': True, + 'slot_uri': 'qudt:unit'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Mass(QuantitativeAttribute): + """ + The strength of a body's gravitational attraction to other bodies. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'qudt:Quantity', + 'close_mappings': ['PATO:0000125'], + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/material_entities_ap.yaml'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: float = Field(default=..., description="""The slot to provide the literal value of the QuantitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + has_quantity_type: str = Field(default=..., description="""The type of quality that is quantifiable according to the QUDT ontology.""", json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Binds the type of a quantifiable attribute to a ' + 'QUDT Quantity Kind instance from the QUDT ' + 'Quantity Kind vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTQuantityKindEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'slot_uri': 'qudt:hasQuantityKind'} }) + unit: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Restricts the allowable defined terms to the ' + 'QUDT Unit vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTUnitEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'recommended': True, + 'slot_uri': 'qudt:unit'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class MolarMass(Mass): + """ + A Mass (physical quality) that quantifies the mass of a homogeneous ChemicalSubstance containing 6.02 x 10^23 atoms or molecules. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'AFR:0002409', + 'close_mappings': ['PATO:0001681'], + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_entities_ap.yaml'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: float = Field(default=..., description="""The slot to provide the literal value of the QuantitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + has_quantity_type: str = Field(default=..., description="""The type of quality that is quantifiable according to the QUDT ontology.""", json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Binds the type of a quantifiable attribute to a ' + 'QUDT Quantity Kind instance from the QUDT ' + 'Quantity Kind vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTQuantityKindEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'slot_uri': 'qudt:hasQuantityKind'} }) + unit: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Restricts the allowable defined terms to the ' + 'QUDT Unit vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTUnitEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'recommended': True, + 'slot_uri': 'qudt:unit'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Volume(QuantitativeAttribute): + """ + A measure of regions in three-dimensional space. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'qudt:Quantity', + 'close_mappings': ['PATO:0000918'], + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/material_entities_ap.yaml'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: float = Field(default=..., description="""The slot to provide the literal value of the QuantitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + has_quantity_type: str = Field(default=..., description="""The type of quality that is quantifiable according to the QUDT ontology.""", json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Binds the type of a quantifiable attribute to a ' + 'QUDT Quantity Kind instance from the QUDT ' + 'Quantity Kind vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTQuantityKindEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'slot_uri': 'qudt:hasQuantityKind'} }) + unit: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Restricts the allowable defined terms to the ' + 'QUDT Unit vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTUnitEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'recommended': True, + 'slot_uri': 'qudt:unit'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Density(QuantitativeAttribute): + """ + A measure of the mass per unit volume of a substance. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'SIO:001406', + 'close_mappings': ['PATO:0001019'], + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/material_entities_ap.yaml'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: float = Field(default=..., description="""The slot to provide the literal value of the QuantitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + has_quantity_type: str = Field(default=..., description="""The type of quality that is quantifiable according to the QUDT ontology.""", json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Binds the type of a quantifiable attribute to a ' + 'QUDT Quantity Kind instance from the QUDT ' + 'Quantity Kind vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTQuantityKindEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'slot_uri': 'qudt:hasQuantityKind'} }) + unit: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Restricts the allowable defined terms to the ' + 'QUDT Unit vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTUnitEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'recommended': True, + 'slot_uri': 'qudt:unit'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Pressure(QuantitativeAttribute): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'qudt:Quantity', + 'close_mappings': ['PATO:0001025'], + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/material_entities_ap.yaml'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: float = Field(default=..., description="""The slot to provide the literal value of the QuantitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + has_quantity_type: str = Field(default=..., description="""The type of quality that is quantifiable according to the QUDT ontology.""", json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Binds the type of a quantifiable attribute to a ' + 'QUDT Quantity Kind instance from the QUDT ' + 'Quantity Kind vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTQuantityKindEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'slot_uri': 'qudt:hasQuantityKind'} }) + unit: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Restricts the allowable defined terms to the ' + 'QUDT Unit vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTUnitEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'recommended': True, + 'slot_uri': 'qudt:unit'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class ChemicalReaction(Activity): + """ + A process that leads to the transformation of one set of chemical substances to another. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'SIO:010345', + 'exact_mappings': ['MOP:0000543', 'REX:0000002', 'AFP:0003711'], + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_reaction_ap.yaml', + 'narrow_mappings': ['RXNO:0000329'], + 'slot_usage': {'has_pressure': {'description': 'The slot to specify the ' + 'Pressure at which a ' + 'ChemicalReaction takes place.', + 'name': 'has_pressure'}, + 'has_temperature': {'description': 'The slot to specify the ' + 'Temperature at which a ' + 'ChemicalReaction takes ' + 'place.', + 'inlined_as_list': True, + 'name': 'has_temperature'}, + 'related_resource': {'description': 'The slot to specify any ' + 'Documents related to a ' + 'ChemicalReaction.', + 'inlined': True, + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'related_resource', + 'range': 'Resource'}}}) + + used_starting_material: Optional[list[StartingMaterial]] = Field(default=[], description="""The slot to specify the Reagent(s) of a ChemicalReaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalReaction'], + 'is_a': 'had_input_entity', + 'recommended': True, + 'slot_uri': 'RO:0004009'} }) + used_reactant: Optional[list[Reagent]] = Field(default=[], description="""The slot to specify the Reagent(s) of a ChemicalReaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalReaction'], + 'is_a': 'had_input_entity', + 'recommended': True, + 'slot_uri': 'RO:0004009'} }) + generated_product: Optional[list[ChemicalProduct]] = Field(default=[], description="""The slot to specify the Product of a ChemicalReaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalReaction'], + 'is_a': 'had_output_entity', + 'recommended': True, + 'slot_uri': 'RO:0004008'} }) + used_catalyst: Optional[list[Catalyst]] = Field(default=[], description="""The slot to specify the Catalyst of a ChemicalReaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalReaction'], + 'is_a': 'carried_out_by', + 'recommended': True, + 'slot_uri': 'RXNO:0000425'} }) + used_solvent: Optional[list[DissolvingSubstance]] = Field(default=[], description="""The slot to specify the chemical substance that had a solvent role (CHEBI:35223) in a ChemicalReaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalReaction'], + 'is_a': 'carried_out_by', + 'recommended': True, + 'slot_uri': 'prov:wasAssociatedWith'} }) + has_duration: Optional[str] = Field(default=None, description="""A slot to provide the duration of a ChemicalReaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalReaction'], 'slot_uri': 'schema:duration'} }) + used_reactor: Optional[list[Reactor]] = Field(default=[], description="""The slot to specify the reactor used in a ChemicalReaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalReaction'], + 'is_a': 'carried_out_by', + 'recommended': True, + 'slot_uri': 'prov:wasAssociatedWith'} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to specify the Temperature at which a ChemicalReaction takes place.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to specify the Pressure at which a ChemicalReaction takes place.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_yield: Optional[list[Yield]] = Field(default=[], description="""A slot to provide the percentage of how much of the ChemicalProduct was produced by a ChemicalReaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_reaction_step: Optional[str] = Field(default=None, description="""A slot to specify a step (part) of a ChemicalReaction that is itself a ChemicalReaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalReaction'], + 'is_a': 'has_part', + 'slot_uri': 'BFO:0000051'} }) + related_resource: Optional[list[Resource]] = Field(default=[], description="""The slot to specify any Documents related to a ChemicalReaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'ChemicalReaction'], 'slot_uri': 'dcterms:relation'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[list[str]] = Field(default=[], description="""The slot to provide a title for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[list[str]] = Field(default=[], description="""The slot to provide a description for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""The slot to provide a secondary identifier of the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'adms:identifier'} }) + has_part: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity that is part of the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:hasPart'} }) + had_input_entity: Optional[list[Entity]] = Field(default=[], description="""The slot to specify the Entity that was used as an input of an Activity that is to be changed, consumed or transformed.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:used'} }) + had_output_entity: Optional[list[Entity]] = Field(default=[], description="""The slot to specify the Entity that was generated as an output of an Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:generated'} }) + had_input_activity: Optional[list[Activity]] = Field(default=[], description="""The slot to provide a previous Activity that informed the Activity by being causally via a shared participant.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasInformedBy'} }) + carried_out_by: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to specify the AgenticEntity that played a certain part in carrying out the Activity, either via having a specific role, function or disposition that was realized in the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasAssociatedWith'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + part_of: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity of which the Activity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class StartingMaterial(ChemicalSubstance): + """ + A ChemicalSubstance with that has a starting material role in a synthesis. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'PROCO:0000029', + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_reaction_ap.yaml'}) + + has_molar_equivalent: Optional[list[MolarEquivalent]] = Field(default=[], description="""A slot to provide the MolarEquivalent of a ChemicalSubstance, such as the DissolvingSubstance, Starting Material or Reactant, within the context of a chemical reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'StartingMaterial', 'Reagent', 'Catalyst'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_concentration: Optional[list[Concentration]] = Field(default=[], description="""The slot to provide the Concentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_ph_value: Optional[list[PHValue]] = Field(default=[], description="""The slot to provide the PHValue of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + composed_of: Optional[list[ChemicalEntity]] = Field(default=[], description="""The slot to provide the chemical entities of which a ChemicalSubstance is composed of.""", json_schema_extra = { "linkml_meta": {'close_mappings': ['AFX:0000940'], + 'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_part', + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + has_amount: Optional[list[AmountOfSubstance]] = Field(default=[], description="""The slot to provide the AmountConcentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_percentage_of_total: Optional[list[PercentageOfTotal]] = Field(default=[], description="""A slot to specify the percentage of a specific ChemicalSubstance in relation to the total amount of that same substance used across a multi-step reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'DissolvingSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + alternative_label: Optional[str] = Field(default=None, description="""The slot to specify an alternative label, name or title for a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'skos:altLabel', + 'todos': ['Should probably rather declared on Entity or in some common ' + 'metadata mixin instead.']} }) + has_physical_state: Optional[PhysicalStateEnum] = Field(default=None, description="""The slot to specify the physical state of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'SIO:000008', + 'todos': ['Find out how to make this a subproperty of ' + 'has_qualitative_attribute, as it currently throws the error ' + "'physical_state enumerations cannot be inlined' due to the fact " + 'that we are using an enum here.']} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to provide the Temperature of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_mass: Optional[list[Mass]] = Field(default=[], description="""The slot to provide the Mass of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_volume: Optional[list[Volume]] = Field(default=[], description="""The slot to provide the Volume of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_density: Optional[list[Density]] = Field(default=[], description="""The slot to provide the Density of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to provide the Pressure of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[MaterialEntity]] = Field(default=[], description="""The slot to provide the parts of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + part_of: Optional[list[Entity]] = Field(default=[], description="""The slot to specify an Entity of which the Entity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class DissolvingSubstance(ChemicalSubstance, Materialistic, AgenticEntity): + """ + A liquid ChemicalSubstance that dissolves or that is capable of dissolving a ChemicalSubstance. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'aliases': ['solvent'], + 'class_uri': 'SIO:010417', + 'exact_mappings': ['VOC4CAT:0007246', 'NCIT:C45790'], + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_reaction_ap.yaml', + 'mixins': ['ChemicalSubstance', 'Materialistic']}) + + has_percentage_of_total: Optional[list[PercentageOfTotal]] = Field(default=[], description="""A slot to specify the percentage of a specific ChemicalSubstance in relation to the total amount of that same substance used across a multi-step reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'DissolvingSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_concentration: Optional[list[Concentration]] = Field(default=[], description="""The slot to provide the Concentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_ph_value: Optional[list[PHValue]] = Field(default=[], description="""The slot to provide the PHValue of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + composed_of: Optional[list[ChemicalEntity]] = Field(default=[], description="""The slot to provide the chemical entities of which a ChemicalSubstance is composed of.""", json_schema_extra = { "linkml_meta": {'close_mappings': ['AFX:0000940'], + 'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_part', + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + has_molar_equivalent: Optional[list[MolarEquivalent]] = Field(default=[], description="""A slot to provide the MolarEquivalent of a ChemicalSubstance, such as the DissolvingSubstance, Starting Material or Reactant, within the context of a chemical reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'StartingMaterial', 'Reagent', 'Catalyst'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_amount: Optional[list[AmountOfSubstance]] = Field(default=[], description="""The slot to provide the AmountConcentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + alternative_label: Optional[str] = Field(default=None, description="""The slot to specify an alternative label, name or title for a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'skos:altLabel', + 'todos': ['Should probably rather declared on Entity or in some common ' + 'metadata mixin instead.']} }) + has_physical_state: Optional[PhysicalStateEnum] = Field(default=None, description="""The slot to specify the physical state of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'SIO:000008', + 'todos': ['Find out how to make this a subproperty of ' + 'has_qualitative_attribute, as it currently throws the error ' + "'physical_state enumerations cannot be inlined' due to the fact " + 'that we are using an enum here.']} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to provide the Temperature of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_mass: Optional[list[Mass]] = Field(default=[], description="""The slot to provide the Mass of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_volume: Optional[list[Volume]] = Field(default=[], description="""The slot to provide the Volume of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_density: Optional[list[Density]] = Field(default=[], description="""The slot to provide the Density of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to provide the Pressure of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier for an Instrument.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to specify parts of an AgenticEntity that are themselves AgenticEntities.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + part_of: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to provide the AgenticEntity of which theAgenticEntity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Reagent(ChemicalSubstance): + """ + A ChemicalSubstance that is consumed or transformed in a ChemicalReaction. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'SIO:010411', + 'close_mappings': ['OBI:0001879', 'PROCO:0000029'], + 'exact_mappings': ['NCIT:C802', 'VOC4CAT:0000101'], + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_reaction_ap.yaml'}) + + has_molar_equivalent: Optional[list[MolarEquivalent]] = Field(default=[], description="""A slot to provide the MolarEquivalent of a ChemicalSubstance, such as the DissolvingSubstance, Starting Material or Reactant, within the context of a chemical reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'StartingMaterial', 'Reagent', 'Catalyst'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_concentration: Optional[list[Concentration]] = Field(default=[], description="""The slot to provide the Concentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_ph_value: Optional[list[PHValue]] = Field(default=[], description="""The slot to provide the PHValue of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + composed_of: Optional[list[ChemicalEntity]] = Field(default=[], description="""The slot to provide the chemical entities of which a ChemicalSubstance is composed of.""", json_schema_extra = { "linkml_meta": {'close_mappings': ['AFX:0000940'], + 'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_part', + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + has_amount: Optional[list[AmountOfSubstance]] = Field(default=[], description="""The slot to provide the AmountConcentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_percentage_of_total: Optional[list[PercentageOfTotal]] = Field(default=[], description="""A slot to specify the percentage of a specific ChemicalSubstance in relation to the total amount of that same substance used across a multi-step reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'DissolvingSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + alternative_label: Optional[str] = Field(default=None, description="""The slot to specify an alternative label, name or title for a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'skos:altLabel', + 'todos': ['Should probably rather declared on Entity or in some common ' + 'metadata mixin instead.']} }) + has_physical_state: Optional[PhysicalStateEnum] = Field(default=None, description="""The slot to specify the physical state of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'SIO:000008', + 'todos': ['Find out how to make this a subproperty of ' + 'has_qualitative_attribute, as it currently throws the error ' + "'physical_state enumerations cannot be inlined' due to the fact " + 'that we are using an enum here.']} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to provide the Temperature of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_mass: Optional[list[Mass]] = Field(default=[], description="""The slot to provide the Mass of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_volume: Optional[list[Volume]] = Field(default=[], description="""The slot to provide the Volume of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_density: Optional[list[Density]] = Field(default=[], description="""The slot to provide the Density of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to provide the Pressure of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[MaterialEntity]] = Field(default=[], description="""The slot to provide the parts of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + part_of: Optional[list[Entity]] = Field(default=[], description="""The slot to specify an Entity of which the Entity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class ChemicalProduct(ChemicalSubstance): + """ + A chemical substance that is produced by a ChemicalReaction. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'NCIT:C48810', + 'close_mappings': ['ENVO:2000000'], + 'exact_mappings': ['VOC4CAT:0000194'], + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_reaction_ap.yaml'}) + + has_concentration: Optional[list[Concentration]] = Field(default=[], description="""The slot to provide the Concentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_ph_value: Optional[list[PHValue]] = Field(default=[], description="""The slot to provide the PHValue of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + composed_of: Optional[list[ChemicalEntity]] = Field(default=[], description="""The slot to provide the chemical entities of which a ChemicalSubstance is composed of.""", json_schema_extra = { "linkml_meta": {'close_mappings': ['AFX:0000940'], + 'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_part', + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + has_molar_equivalent: Optional[list[MolarEquivalent]] = Field(default=[], description="""A slot to provide the MolarEquivalent of a ChemicalSubstance, such as the DissolvingSubstance, Starting Material or Reactant, within the context of a chemical reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'StartingMaterial', 'Reagent', 'Catalyst'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_amount: Optional[list[AmountOfSubstance]] = Field(default=[], description="""The slot to provide the AmountConcentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_percentage_of_total: Optional[list[PercentageOfTotal]] = Field(default=[], description="""A slot to specify the percentage of a specific ChemicalSubstance in relation to the total amount of that same substance used across a multi-step reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'DissolvingSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + alternative_label: Optional[str] = Field(default=None, description="""The slot to specify an alternative label, name or title for a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'skos:altLabel', + 'todos': ['Should probably rather declared on Entity or in some common ' + 'metadata mixin instead.']} }) + has_physical_state: Optional[PhysicalStateEnum] = Field(default=None, description="""The slot to specify the physical state of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'SIO:000008', + 'todos': ['Find out how to make this a subproperty of ' + 'has_qualitative_attribute, as it currently throws the error ' + "'physical_state enumerations cannot be inlined' due to the fact " + 'that we are using an enum here.']} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to provide the Temperature of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_mass: Optional[list[Mass]] = Field(default=[], description="""The slot to provide the Mass of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_volume: Optional[list[Volume]] = Field(default=[], description="""The slot to provide the Volume of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_density: Optional[list[Density]] = Field(default=[], description="""The slot to provide the Density of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to provide the Pressure of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[MaterialEntity]] = Field(default=[], description="""The slot to provide the parts of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + part_of: Optional[list[Entity]] = Field(default=[], description="""The slot to specify an Entity of which the Entity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Catalyst(ChemicalSubstance, Materialistic, AgenticEntity): + """ + A ChemicalSubstance or MaterialEntity that initiates or accelerates a ChemicalReaction without itself being affected. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'SIO:010344', + 'close_mappings': ['CHEBI:35223'], + 'exact_mappings': ['VOC4CAT:0000194', 'NCIT:C48810'], + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_reaction_ap.yaml', + 'mixins': ['ChemicalSubstance', 'Materialistic']}) + + has_molar_equivalent: Optional[list[MolarEquivalent]] = Field(default=[], description="""A slot to provide the MolarEquivalent of a ChemicalSubstance, such as the DissolvingSubstance, Starting Material or Reactant, within the context of a chemical reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'StartingMaterial', 'Reagent', 'Catalyst'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_concentration: Optional[list[Concentration]] = Field(default=[], description="""The slot to provide the Concentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_ph_value: Optional[list[PHValue]] = Field(default=[], description="""The slot to provide the PHValue of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + composed_of: Optional[list[ChemicalEntity]] = Field(default=[], description="""The slot to provide the chemical entities of which a ChemicalSubstance is composed of.""", json_schema_extra = { "linkml_meta": {'close_mappings': ['AFX:0000940'], + 'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_part', + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + has_amount: Optional[list[AmountOfSubstance]] = Field(default=[], description="""The slot to provide the AmountConcentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_percentage_of_total: Optional[list[PercentageOfTotal]] = Field(default=[], description="""A slot to specify the percentage of a specific ChemicalSubstance in relation to the total amount of that same substance used across a multi-step reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'DissolvingSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + alternative_label: Optional[str] = Field(default=None, description="""The slot to specify an alternative label, name or title for a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'skos:altLabel', + 'todos': ['Should probably rather declared on Entity or in some common ' + 'metadata mixin instead.']} }) + has_physical_state: Optional[PhysicalStateEnum] = Field(default=None, description="""The slot to specify the physical state of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'SIO:000008', + 'todos': ['Find out how to make this a subproperty of ' + 'has_qualitative_attribute, as it currently throws the error ' + "'physical_state enumerations cannot be inlined' due to the fact " + 'that we are using an enum here.']} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to provide the Temperature of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_mass: Optional[list[Mass]] = Field(default=[], description="""The slot to provide the Mass of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_volume: Optional[list[Volume]] = Field(default=[], description="""The slot to provide the Volume of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_density: Optional[list[Density]] = Field(default=[], description="""The slot to provide the Density of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to provide the Pressure of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier for an Instrument.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to specify parts of an AgenticEntity that are themselves AgenticEntities.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + part_of: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to provide the AgenticEntity of which theAgenticEntity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Reactor(Materialistic, Device): + """ + A reactor is a container for controlling a biological or chemical reaction or process. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'AFE:0000153', + 'exact_mappings': ['VOC4CAT:0007017'], + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_reaction_ap.yaml', + 'mixins': ['Materialistic']}) + + alternative_label: Optional[str] = Field(default=None, description="""The slot to specify an alternative label, name or title for a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'skos:altLabel', + 'todos': ['Should probably rather declared on Entity or in some common ' + 'metadata mixin instead.']} }) + has_physical_state: Optional[PhysicalStateEnum] = Field(default=None, description="""The slot to specify the physical state of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'SIO:000008', + 'todos': ['Find out how to make this a subproperty of ' + 'has_qualitative_attribute, as it currently throws the error ' + "'physical_state enumerations cannot be inlined' due to the fact " + 'that we are using an enum here.']} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to provide the Temperature of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_mass: Optional[list[Mass]] = Field(default=[], description="""The slot to provide the Mass of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_volume: Optional[list[Volume]] = Field(default=[], description="""The slot to provide the Volume of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_density: Optional[list[Density]] = Field(default=[], description="""The slot to provide the Density of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to provide the Pressure of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier for a Device.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Device]] = Field(default=[], description="""The slot to specify parts of a Device that are themselves Devices.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'slot_uri': 'dcterms:hasPart'} }) + part_of: Optional[list[AgenticEntity]] = Field(default=[], description="""The slot to provide the AgenticEntity of which theAgenticEntity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Yield(QuantitativeAttribute): + """ + A dimensionless physical quantity describing the fraction of a product B that is formed from a reactant A taking into account the stoichiometry. If A fully reacts to B without side-reactions, the yield of product B is 1 (or 100 %). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'qudt:Quantity', + 'exact_mappings': ['VOC4CAT:0005005'], + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_reaction_ap.yaml'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: float = Field(default=..., description="""The slot to provide the literal value of the QuantitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + has_quantity_type: str = Field(default=..., description="""The type of quality that is quantifiable according to the QUDT ontology.""", json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Binds the type of a quantifiable attribute to a ' + 'QUDT Quantity Kind instance from the QUDT ' + 'Quantity Kind vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTQuantityKindEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'slot_uri': 'qudt:hasQuantityKind'} }) + unit: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Restricts the allowable defined terms to the ' + 'QUDT Unit vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTUnitEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'recommended': True, + 'slot_uri': 'qudt:unit'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class MolarEquivalent(QuantitativeAttribute): + """ + A dimensionless ratio that quantifies the stoichiometric proportion of a chemical substance relative to a reference substance in a chemical reaction. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'qudt:Quantity', + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_reaction_ap.yaml'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: float = Field(default=..., description="""The slot to provide the literal value of the QuantitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + has_quantity_type: str = Field(default=..., description="""The type of quality that is quantifiable according to the QUDT ontology.""", json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Binds the type of a quantifiable attribute to a ' + 'QUDT Quantity Kind instance from the QUDT ' + 'Quantity Kind vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTQuantityKindEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'slot_uri': 'qudt:hasQuantityKind'} }) + unit: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Restricts the allowable defined terms to the ' + 'QUDT Unit vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTUnitEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'recommended': True, + 'slot_uri': 'qudt:unit'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class PercentageOfTotal(QuantitativeAttribute): + """ + A dimensionless ratio that quantifies the stoichiometric proportion of a chemical substance relative to a reference substance in a chemical reaction. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'qudt:Quantity', + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/chemical_reaction_ap.yaml'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: float = Field(default=..., description="""The slot to provide the literal value of the QuantitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + has_quantity_type: str = Field(default=..., description="""The type of quality that is quantifiable according to the QUDT ontology.""", json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Binds the type of a quantifiable attribute to a ' + 'QUDT Quantity Kind instance from the QUDT ' + 'Quantity Kind vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTQuantityKindEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'slot_uri': 'qudt:hasQuantityKind'} }) + unit: Optional[str] = Field(default=None, json_schema_extra = { "linkml_meta": {'bindings': [{'binds_value_of': 'id', + 'description': 'Restricts the allowable defined terms to the ' + 'QUDT Unit vocabulary.', + 'obligation_level': 'RECOMMENDED', + 'range': 'QUDTUnitEnum'}], + 'domain_of': ['QuantitativeAttribute'], + 'recommended': True, + 'slot_uri': 'qudt:unit'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class SubstanceSample(MaterialSample, ChemicalSubstance): + """ + A MaterialSample derived from a ChemicalSubstance that is of interest in an analytical procedure. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'aliases': ['analyte'], + 'class_uri': 'SIO:001378', + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/dcat_4c_ap.yaml', + 'mixins': ['ChemicalSubstance']}) + + has_concentration: Optional[list[Concentration]] = Field(default=[], description="""The slot to provide the Concentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_ph_value: Optional[list[PHValue]] = Field(default=[], description="""The slot to provide the PHValue of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + composed_of: Optional[list[ChemicalEntity]] = Field(default=[], description="""The slot to provide the chemical entities of which a ChemicalSubstance is composed of.""", json_schema_extra = { "linkml_meta": {'close_mappings': ['AFX:0000940'], + 'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_part', + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + has_molar_equivalent: Optional[list[MolarEquivalent]] = Field(default=[], description="""A slot to provide the MolarEquivalent of a ChemicalSubstance, such as the DissolvingSubstance, Starting Material or Reactant, within the context of a chemical reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'StartingMaterial', 'Reagent', 'Catalyst'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_amount: Optional[list[AmountOfSubstance]] = Field(default=[], description="""The slot to provide the AmountConcentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_percentage_of_total: Optional[list[PercentageOfTotal]] = Field(default=[], description="""A slot to specify the percentage of a specific ChemicalSubstance in relation to the total amount of that same substance used across a multi-step reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'DissolvingSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + derived_from: Optional[Entity] = Field(default=None, description="""The slot to specify the MaterialEntity or MaterialSample from which the MaterialSample was created.""", json_schema_extra = { "linkml_meta": {'close_mappings': ['BFO:0000050', 'dcterms:partOf'], + 'domain_of': ['MaterialSample'], + 'exact_mappings': ['SIO:000244'], + 'slot_uri': 'prov:wasDerivedFrom'} }) + alternative_label: Optional[str] = Field(default=None, description="""The slot to specify an alternative label, name or title for a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'skos:altLabel', + 'todos': ['Should probably rather declared on Entity or in some common ' + 'metadata mixin instead.']} }) + has_physical_state: Optional[PhysicalStateEnum] = Field(default=None, description="""The slot to specify the physical state of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'SIO:000008', + 'todos': ['Find out how to make this a subproperty of ' + 'has_qualitative_attribute, as it currently throws the error ' + "'physical_state enumerations cannot be inlined' due to the fact " + 'that we are using an enum here.']} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to provide the Temperature of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_mass: Optional[list[Mass]] = Field(default=[], description="""The slot to provide the Mass of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_volume: Optional[list[Volume]] = Field(default=[], description="""The slot to provide the Volume of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_density: Optional[list[Density]] = Field(default=[], description="""The slot to provide the Density of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to provide the Pressure of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + was_generated_by: Optional[list[Activity]] = Field(default=[], description="""A slot to provide the Activity which created the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'EvaluatedEntity'], 'slot_uri': 'prov:wasGeneratedBy'} }) + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Entity]] = Field(default=[], description="""A slot to provide a part of the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + part_of: Optional[list[Entity]] = Field(default=[], description="""The slot to specify an Entity of which the Entity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class PolymerSample(SubstanceSample, Polymer): + """ + A SubstanceSample derived from a Polymer. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'SIO:001378', + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/dcat_4c_ap.yaml', + 'mixins': ['Polymer'], + 'todos': ['Find a better mapping, as it is currently mapped to same ontology ' + 'class as its parent.']}) + + has_concentration: Optional[list[Concentration]] = Field(default=[], description="""The slot to provide the Concentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_ph_value: Optional[list[PHValue]] = Field(default=[], description="""The slot to provide the PHValue of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + composed_of: Optional[list[ChemicalEntity]] = Field(default=[], description="""The slot to provide the chemical entities of which a ChemicalSubstance is composed of.""", json_schema_extra = { "linkml_meta": {'close_mappings': ['AFX:0000940'], + 'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_part', + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + has_molar_equivalent: Optional[list[MolarEquivalent]] = Field(default=[], description="""A slot to provide the MolarEquivalent of a ChemicalSubstance, such as the DissolvingSubstance, Starting Material or Reactant, within the context of a chemical reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'StartingMaterial', 'Reagent', 'Catalyst'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_amount: Optional[list[AmountOfSubstance]] = Field(default=[], description="""The slot to provide the AmountConcentration of a ChemicalSubstance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_percentage_of_total: Optional[list[PercentageOfTotal]] = Field(default=[], description="""A slot to specify the percentage of a specific ChemicalSubstance in relation to the total amount of that same substance used across a multi-step reaction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ChemicalSubstance', 'DissolvingSubstance'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + derived_from: Optional[Entity] = Field(default=None, description="""The slot to specify the MaterialEntity or MaterialSample from which the MaterialSample was created.""", json_schema_extra = { "linkml_meta": {'close_mappings': ['BFO:0000050', 'dcterms:partOf'], + 'domain_of': ['MaterialSample'], + 'exact_mappings': ['SIO:000244'], + 'slot_uri': 'prov:wasDerivedFrom'} }) + alternative_label: Optional[str] = Field(default=None, description="""The slot to specify an alternative label, name or title for a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'skos:altLabel', + 'todos': ['Should probably rather declared on Entity or in some common ' + 'metadata mixin instead.']} }) + has_physical_state: Optional[PhysicalStateEnum] = Field(default=None, description="""The slot to specify the physical state of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'slot_uri': 'SIO:000008', + 'todos': ['Find out how to make this a subproperty of ' + 'has_qualitative_attribute, as it currently throws the error ' + "'physical_state enumerations cannot be inlined' due to the fact " + 'that we are using an enum here.']} }) + has_temperature: Optional[list[Temperature]] = Field(default=[], description="""The slot to provide the Temperature of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_mass: Optional[list[Mass]] = Field(default=[], description="""The slot to provide the Mass of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_volume: Optional[list[Volume]] = Field(default=[], description="""The slot to provide the Volume of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_density: Optional[list[Density]] = Field(default=[], description="""The slot to provide the Density of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + has_pressure: Optional[list[Pressure]] = Field(default=[], description="""The slot to provide the Pressure of a MaterialEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Materialistic', 'ChemicalReaction'], + 'is_a': 'has_quantitative_attribute', + 'recommended': True, + 'slot_uri': 'SIO:000008'} }) + was_generated_by: Optional[list[Activity]] = Field(default=[], description="""A slot to provide the Activity which created the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'EvaluatedEntity'], 'slot_uri': 'prov:wasGeneratedBy'} }) + title: Optional[str] = Field(default=None, description="""The slot to provide a title for the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""The slot to provide a description for the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A slot to provide a secondary identifier of the EvaluatedEntity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_part: Optional[list[Entity]] = Field(default=[], description="""A slot to provide a part of the Entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'recommended': True, + 'slot_uri': 'BFO:0000051'} }) + part_of: Optional[list[Entity]] = Field(default=[], description="""The slot to specify an Entity of which the Entity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Laboratory(Surrounding): + """ + A facility that provides controlled conditions in which scientific or technological research, experiments, and measurement may be performed. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'ENVO:01001405', + 'from_schema': 'https://nfdi-de.github.io/chem-dcat-ap/dcat_4c_ap.yaml'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class MaterialDescriptorMixin(ConfiguredBaseModel): + """ + Mixin providing material identity slots shared by CalculatedProperty + subclasses that target a specific material composition and crystal + structure (DielectricTensors, PhononDispersion, EquationsOfState, + AqueousStability, GrainBoundaries, ElectronicStructure, Ferroelectrics, + BandGap). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/', + 'mixin': True}) + + material_composition: Optional[list[str]] = Field(default=[], description="""Chemical composition of the simulated material (e.g. \"Fe2O3\", \"Pt/CeO2\"). +Use empirical formula or SMILES for molecular systems.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], + 'slot_uri': 'coremeta4cat:material_composition'} }) + crystal_structure: Optional[list[str]] = Field(default=[], description="""Crystal structure of the simulated material, including space group and +lattice parameters (e.g. \"Fm-3m, a=3.92 � for Pt\").""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], 'slot_uri': 'SIO:001100'} }) + + +class DFTSettingsMixin(ConfiguredBaseModel): + """ + Mixin providing plane-wave DFT numerical settings shared by CalculatedProperty + subclasses that are computed with periodic DFT (DielectricTensors, + EquationsOfState, ElectronicStructure, BandGap). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/', + 'mixin': True}) + + energy_cutoff: Optional[list[float]] = Field(default=[], description="""Plane-wave kinetic energy cutoff for the basis set expansion.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFTSettingsMixin', 'DFT'], + 'slot_uri': 'coremeta4cat:energy_cutoff', + 'unit': {'ucum_code': 'eV'}} }) + convergence_criteria: Optional[list[str]] = Field(default=[], description="""Convergence thresholds applied during self-consistent field (SCF) and/or +geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/�).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFTSettingsMixin', 'DFT'], + 'slot_uri': 'coremeta4cat:convergence_criteria'} }) + k_point_mesh: Optional[list[str]] = Field(default=[], description="""Monkhorst-Pack k-point mesh used for Brillouin zone sampling +(e.g. \"4�4�1\" for a surface slab, \"8�8�8\" for a bulk cell).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFTSettingsMixin'], 'slot_uri': 'coremeta4cat:k_point_mesh'} }) + + +class Simulation(DataGeneratingActivity): + """ + A DataGeneratingActivity in which a catalyst, catalytic material, or + catalytic process is modelled computationally. + + The simulation software is linked via carried_out_by as a Software agent. + The simulation method (protocol) is linked via realized_plan using a + SimulationMethod instance. The catalyst model or reaction being simulated + is linked via evaluated_entity or evaluated_activity. + + The specific simulation type is expressed via rdf_type (e.g. coremeta4cat:DFT, + NCIT:C18097 for molecular dynamics), following DCAT-AP-PLUS Pattern 3. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'NCIT:C48936', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/', + 'slot_usage': {'carried_out_by': {'description': 'The simulation software ' + 'used, provided as a ' + 'Software agent instance.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'carried_out_by', + 'range': 'AgenticEntity', + 'recommended': True}, + 'evaluated_entity': {'description': 'The catalyst model, ' + 'surface slab, or molecule ' + 'being simulated.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'evaluated_entity', + 'range': 'EvaluatedEntity', + 'recommended': True}, + 'rdf_type': {'description': 'The type of simulation method as ' + 'an ontology term (e.g. ' + 'coremeta4cat:DFT,\n' + 'NCIT:C18097 for MD, ' + 'coremeta4cat:Microkinetics). This ' + 'is the primary\n' + 'machine-actionable classification ' + 'of the simulation type.', + 'name': 'rdf_type', + 'recommended': True}, + 'realized_plan': {'description': 'The SimulationMethod ' + '(protocol) realized in this ' + 'Simulation.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'realized_plan', + 'range': 'SimulationMethod', + 'required': True}}}) + + software_package: list[str] = Field(default=..., description="""Software package or code used for the simulation (e.g. VASP, Quantum ESPRESSO, +LAMMPS, CP2K, ORCA, Zacros). Include version number where possible.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Simulation'], 'slot_uri': 'coremeta4cat:software_package'} }) + calculated_property: list[CalculatedProperty] = Field(default=..., description="""A property computed by this Simulation, provided as a CalculatedProperty +instance. Multiple properties may be computed in a single simulation run.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Simulation'], 'slot_uri': 'coremeta4cat:calculated_property'} }) + evaluated_entity: Optional[list[EvaluatedEntity]] = Field(default=[], description="""The catalyst model, surface slab, or molecule being simulated.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'is_a': 'had_input_entity', + 'recommended': True, + 'slot_uri': 'prov:used'} }) + evaluated_activity: Optional[list[EvaluatedActivity]] = Field(default=[], description="""The slot to specify the Activity about which the DataGeneratingActivity produced information.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'is_a': 'had_input_activity', + 'recommended': True, + 'slot_uri': 'prov:wasInformedBy'} }) + realized_plan: list[SimulationMethod] = Field(default=..., description="""The SimulationMethod (protocol) realized in this Simulation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:used'} }) + occurred_in: Optional[Surrounding] = Field(default=None, description="""The slot to specify the Surrounding in which an Activity took place.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataGeneratingActivity'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:atLocation'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + title: Optional[list[str]] = Field(default=[], description="""The slot to provide a title for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[list[str]] = Field(default=[], description="""The slot to provide a description for the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:description'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""The slot to provide a secondary identifier of the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'adms:identifier'} }) + has_part: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity that is part of the Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Catalogue', 'Entity'], + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:hasPart'} }) + had_input_entity: Optional[list[Entity]] = Field(default=[], description="""The slot to specify the Entity that was used as an input of an Activity that is to be changed, consumed or transformed.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:used'} }) + had_output_entity: Optional[list[Entity]] = Field(default=[], description="""The slot to specify the Entity that was generated as an output of an Activity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:generated'} }) + had_input_activity: Optional[list[Activity]] = Field(default=[], description="""The slot to provide a previous Activity that informed the Activity by being causally via a shared participant.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasInformedBy'} }) + carried_out_by: Optional[list[AgenticEntity]] = Field(default=[], description="""The simulation software used, provided as a Software agent instance.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasAssociatedWith'} }) + has_qualitative_attribute: Optional[list[QualitativeAttribute]] = Field(default=[], description="""The slot to relate a qualitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + has_quantitative_attribute: Optional[list[QuantitativeAttribute]] = Field(default=[], description="""The slot to relate a quantitative attribute to an EvaluatedEntity, EvaluatedActivity or AgenticEntity""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'notes': ['not in DCAT-AP'], + 'recommended': True, + 'slot_uri': 'dcterms:relation'} }) + part_of: Optional[list[Activity]] = Field(default=[], description="""The slot to provide an Activity of which the Activity is a part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Entity'], + 'in_subset': ['domain_agnostic_core'], + 'inverse': 'has_part', + 'notes': ['not in DCAT-AP'], + 'slot_uri': 'dcterms:isPartOf'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The type of simulation method as an ontology term (e.g. coremeta4cat:DFT, +NCIT:C18097 for MD, coremeta4cat:Microkinetics). This is the primary +machine-actionable classification of the simulation type.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class SimulationMethod(Plan): + """ + Abstract Plan describing the computational method (protocol) used in a + Simulation. Concrete subclasses carry method-specific parameter slots. + Linked from Simulation via realized_plan. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'abstract': True, + 'class_uri': 'OBI:0000272', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class DFT(SimulationMethod): + """ + Density functional theory � a quantum mechanical method for calculating + the electronic structure of atoms, molecules, and periodic solids. + The most widely used ab initio method in computational catalysis. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:DFT', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/'}) + + exchange_correlation_functional: Optional[list[str]] = Field(default=[], description="""Exchange-correlation functional used (e.g. PBE, PBEsol, RPBE, B3LYP, +HSE06). The choice of functional directly affects accuracy.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFT'], + 'slot_uri': 'coremeta4cat:exchange_correlation_functional'} }) + energy_cutoff: Optional[list[float]] = Field(default=[], description="""Plane-wave kinetic energy cutoff for the basis set expansion.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFTSettingsMixin', 'DFT'], + 'slot_uri': 'coremeta4cat:energy_cutoff', + 'unit': {'ucum_code': 'eV'}} }) + convergence_criteria: Optional[list[str]] = Field(default=[], description="""Convergence thresholds applied during self-consistent field (SCF) and/or +geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/�).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFTSettingsMixin', 'DFT'], + 'slot_uri': 'coremeta4cat:convergence_criteria'} }) + dft_u_parameters: Optional[list[str]] = Field(default=[], description="""Hubbard U correction parameters (DFT+U). Specify element, orbital, and +U value (e.g. \"Fe d: U=4.0 eV, J=0.0 eV\").""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFT'], 'slot_uri': 'coremeta4cat:dft_u_parameters'} }) + spin_polarization: Optional[list[bool]] = Field(default=[], description="""Whether spin polarization (collinear magnetism) is included in the DFT +calculation. Set to true for systems containing magnetic elements.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFT'], 'slot_uri': 'coremeta4cat:spin_polarization'} }) + total_energy_per_atom: Optional[list[float]] = Field(default=[], description="""Total DFT ground-state energy divided by number of atoms in the unit cell.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFT'], + 'slot_uri': 'coremeta4cat:total_energy_per_atom', + 'unit': {'ucum_code': 'eV'}} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class MolecularDynamics(SimulationMethod): + """ + Molecular dynamics simulation � a method for computing the time evolution + of a system of interacting particles by integrating the equations of motion. + Used to study diffusion, reaction kinetics, and thermal properties. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'NCIT:C18097', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/'}) + + force_field: Optional[list[str]] = Field(default=[], description="""Force field or interatomic potential used (e.g. ReaxFF, CHARMM, Tersoff, +EAM). Include parametrisation source or reference.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MolecularDynamics'], 'slot_uri': 'coremeta4cat:force_field'} }) + simulation_timestep: Optional[list[float]] = Field(default=[], description="""Integration timestep used in molecular dynamics.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MolecularDynamics'], + 'slot_uri': 'APOLLO_SV:00000012', + 'unit': {'ucum_code': 'fs'}} }) + simulation_time: Optional[list[float]] = Field(default=[], description="""Total simulated physical time of the MD trajectory.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MolecularDynamics'], + 'slot_uri': 'coremeta4cat:simulation_time', + 'unit': {'ucum_code': 'ps'}} }) + ensemble_type: Optional[list[str]] = Field(default=[], description="""Statistical ensemble used in MD (e.g. NVE, NVT, NPT). Determines which +thermodynamic quantities are conserved.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MolecularDynamics'], 'slot_uri': 'coremeta4cat:ensemble_type'} }) + number_of_atoms: Optional[list[int]] = Field(default=[], description="""Number of atoms in the simulation cell or supercell.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MolecularDynamics'], 'slot_uri': 'coremeta4cat:number_of_atoms'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Microkinetics(SimulationMethod): + """ + Microkinetic modelling � a mean-field kinetic approach that integrates + elementary reaction steps and their rate constants to predict catalytic + activity and selectivity under reaction conditions. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:Microkinetics', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/'}) + + rate_constants: Optional[list[str]] = Field(default=[], description="""Rate constants or Arrhenius parameters (pre-exponential factor and +activation energy) for each elementary step in the reaction network.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Microkinetics'], 'slot_uri': 'NCIT:C94967'} }) + solver_type: Optional[list[str]] = Field(default=[], description="""Numerical solver used for the microkinetic rate equations (e.g. LSODA, +stiff ODE solver, steady-state Newton method).""", json_schema_extra = { "linkml_meta": {'domain_of': ['Microkinetics'], 'slot_uri': 'coremeta4cat:solver_type'} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + pressure: Optional[list[float]] = Field(default=[], description="""Total pressure used in microkinetic or Monte Carlo simulation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Microkinetics'], + 'slot_uri': 'coremeta4cat:pressure', + 'unit': {'ucum_code': 'bar'}} }) + surface_coverage: Optional[list[float]] = Field(default=[], description="""Surface coverage of adsorbed species (fraction of surface sites occupied).""", json_schema_extra = { "linkml_meta": {'domain_of': ['Microkinetics'], 'slot_uri': 'coremeta4cat:surface_coverage'} }) + activation_energy: Optional[list[float]] = Field(default=[], description="""Activation energy for each elementary step in the reaction mechanism.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Microkinetics'], + 'slot_uri': 'coremeta4cat:activation_energy', + 'unit': {'ucum_code': 'eV'}} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class MonteCarlo(SimulationMethod): + """ + Monte Carlo simulation � a stochastic method that samples configuration + space using random moves accepted or rejected according to a statistical + criterion (e.g. Metropolis). Used for adsorption isotherms, phase diagrams, + and lattice-based kinetics. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:MonteCarlo', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/'}) + + interaction_potential: Optional[list[str]] = Field(default=[], description="""Interaction potential or Hamiltonian used to compute energies in MC moves.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MonteCarlo'], 'slot_uri': 'coremeta4cat:interaction_potential'} }) + number_of_steps: Optional[list[int]] = Field(default=[], description="""Total number of Monte Carlo moves or trial configurations generated.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MonteCarlo'], 'slot_uri': 'coremeta4cat:number_of_steps'} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + lattice_size_type: Optional[list[str]] = Field(default=[], description="""Lattice geometry and dimensions used in lattice-based MC (e.g. +\"100�100 square lattice\", \"hexagonal 50�50\").""", json_schema_extra = { "linkml_meta": {'domain_of': ['MonteCarlo'], 'slot_uri': 'coremeta4cat:lattice_size_type'} }) + acceptance_criteria: Optional[list[str]] = Field(default=[], description="""Criterion for accepting or rejecting MC moves (e.g. Metropolis, +Kawasaki, heat-bath algorithm).""", json_schema_extra = { "linkml_meta": {'domain_of': ['MonteCarlo'], 'slot_uri': 'coremeta4cat:acceptance_criteria'} }) + equilibration_steps: Optional[list[int]] = Field(default=[], description="""Number of MC steps used for equilibration before data collection begins.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MonteCarlo'], 'slot_uri': 'coremeta4cat:equilibration_steps'} }) + sampling_interval: Optional[list[int]] = Field(default=[], description="""Interval between successive MC snapshots used for property averaging.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MonteCarlo'], 'slot_uri': 'coremeta4cat:sampling_interval'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class CalculatedProperty(QualitativeAttribute): + """ + Abstract QualitativeAttribute representing a property computed by a + Simulation. Concrete subclasses carry the property-specific output + values and the computational settings used to produce them. + Linked from Simulation via the calculated_property slot. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'abstract': True, + 'class_uri': 'coremeta4cat:CalculatedProperty', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/'}) + + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class ThermodynamicStability(CalculatedProperty): + """ + Thermodynamic stability of a material or phase, characterised by formation + energy, convex hull distance, and competing phases. Used to screen catalyst + stability and predict synthesis feasibility. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:ThermodynamicStability', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/'}) + + formation_energy: Optional[list[float]] = Field(default=[], description="""Formation energy per atom relative to elemental reference states.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermodynamicStability'], + 'slot_uri': 'coremeta4cat:formation_energy', + 'unit': {'ucum_code': 'eV'}} }) + reference_energies: Optional[list[str]] = Field(default=[], description="""Elemental reference energies used to compute formation energies +(e.g. DFT total energies of elemental ground-state structures).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermodynamicStability'], + 'slot_uri': 'coremeta4cat:reference_energies'} }) + energy_above_hull: Optional[list[float]] = Field(default=[], description="""Distance above the convex hull of stable phases (thermodynamic stability +metric). Zero for phases on the hull; positive values indicate metastability.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermodynamicStability'], + 'slot_uri': 'coremeta4cat:energy_above_hull', + 'unit': {'ucum_code': 'eV'}} }) + phase_diagram_type: Optional[list[str]] = Field(default=[], description="""Type of phase diagram constructed (e.g. binary, ternary, quaternary).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermodynamicStability'], + 'slot_uri': 'coremeta4cat:phase_diagram_type'} }) + competing_phases: Optional[list[str]] = Field(default=[], description="""List of stable competing phases used in convex hull construction +(e.g. \"Fe2O3, Fe3O4, FeO, Fe\").""", json_schema_extra = { "linkml_meta": {'domain_of': ['ThermodynamicStability'], + 'slot_uri': 'coremeta4cat:competing_phases'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Piezoelectricity(CalculatedProperty): + """ + Piezoelectric response of a non-centrosymmetric material, described by the + piezoelectric tensor. Relevant for piezocatalysis applications. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:Piezoelectricity', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/'}) + + piezoelectric_tensor: Optional[list[str]] = Field(default=[], description="""Components of the piezoelectric tensor e_ij (C/m�) or d_ij (pC/N), +describing the coupling between stress and electric polarization.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Piezoelectricity'], + 'slot_uri': 'coremeta4cat:piezoelectric_tensor'} }) + crystal_symmetry: Optional[list[str]] = Field(default=[], description="""Point group or space group symmetry of the crystal structure.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Piezoelectricity'], 'slot_uri': 'coremeta4cat:crystal_symmetry'} }) + strain_applied: Optional[list[float]] = Field(default=[], description="""Magnitude of applied strain in the piezoelectric calculation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Piezoelectricity'], 'slot_uri': 'coremeta4cat:strain_applied'} }) + ionic_electronic_contributions: Optional[list[str]] = Field(default=[], description="""Decomposition of the piezoelectric or dielectric response into ionic +(nuclear) and electronic contributions.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Piezoelectricity'], + 'slot_uri': 'coremeta4cat:ionic_electronic_contributions'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class ElasticConstants(CalculatedProperty): + """ + Elastic mechanical properties of a material derived from the elastic tensor, + including bulk modulus, shear modulus, and Young's modulus. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:ElasticConstants', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/'}) + + elastic_tensor: Optional[list[str]] = Field(default=[], description="""Full Voigt-notation elastic tensor C_ij (GPa) describing the linear +elastic response of the material.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElasticConstants'], 'slot_uri': 'coremeta4cat:elastic_tensor'} }) + bulk_modulus: Optional[list[float]] = Field(default=[], description="""Bulk modulus (resistance to uniform compression).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElasticConstants', 'EquationsOfState'], + 'slot_uri': 'coremeta4cat:bulk_modulus', + 'unit': {'ucum_code': 'GPa'}} }) + shear_modulus: Optional[list[float]] = Field(default=[], description="""Shear modulus (resistance to shear deformation).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElasticConstants'], + 'slot_uri': 'coremeta4cat:shear_modulus', + 'unit': {'ucum_code': 'GPa'}} }) + poisson_ratio: Optional[list[float]] = Field(default=[], description="""Poisson's ratio (ratio of transverse to axial strain under uniaxial load).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElasticConstants'], 'slot_uri': 'coremeta4cat:poisson_ratio'} }) + young_modulus: Optional[list[float]] = Field(default=[], description="""Young's modulus (stiffness under uniaxial tension or compression).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElasticConstants'], + 'slot_uri': 'coremeta4cat:young_modulus', + 'unit': {'ucum_code': 'GPa'}} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Surfaces(CalculatedProperty): + """ + Surface properties of a catalyst computed from a periodic slab model, + including surface energy, Miller index, slab thickness, and vacuum spacing. + Central to heterogeneous catalysis modelling. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:Surfaces', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/'}) + + surface_energy: Optional[list[float]] = Field(default=[], description="""Cleavage energy per unit area required to create the surface from the bulk. +A lower value indicates a more stable surface facet.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Surfaces'], + 'slot_uri': 'coremeta4cat:surface_energy', + 'unit': {'ucum_code': 'J/m2'}} }) + miller_indices: Optional[list[str]] = Field(default=[], description="""Miller indices of the modelled surface facet (e.g. \"(111)\", \"(110)\", \"(100)\").""", json_schema_extra = { "linkml_meta": {'domain_of': ['Surfaces'], 'slot_uri': 'coremeta4cat:miller_indices'} }) + slab_thickness: Optional[list[float]] = Field(default=[], description="""Thickness of the periodic slab model used to represent the surface.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Surfaces'], + 'slot_uri': 'coremeta4cat:slab_thickness', + 'unit': {'ucum_code': 'Ao'}} }) + vacuum_spacing: Optional[list[float]] = Field(default=[], description="""Vacuum layer thickness added above the slab to prevent spurious +periodic interactions between slab images.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Surfaces'], + 'slot_uri': 'coremeta4cat:vacuum_spacing', + 'unit': {'ucum_code': 'Ao'}} }) + surface_termination_method: Optional[list[str]] = Field(default=[], description="""Method used to terminate the slab and handle dangling bonds +(e.g. H-passivation, OH-termination, dipole correction).""", json_schema_extra = { "linkml_meta": {'domain_of': ['Surfaces'], + 'slot_uri': 'coremeta4cat:surface_termination_method'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class DielectricTensors(CalculatedProperty, DFTSettingsMixin, MaterialDescriptorMixin): + """ + Dielectric tensor computed from density functional perturbation theory (DFPT). + Characterises the optical and static dielectric response of a material. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:DielectricTensors', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/', + 'mixins': ['MaterialDescriptorMixin', 'DFTSettingsMixin']}) + + dielectric_tensor: Optional[list[str]] = Field(default=[], description="""Components of the static and/or high-frequency dielectric tensor epsilon_ij, +computed from DFPT.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DielectricTensors'], + 'slot_uri': 'coremeta4cat:dielectric_tensor'} }) + born_effective_charges: Optional[list[str]] = Field(default=[], description="""Born effective charge tensors Z*_ij for each atom, describing how +the polarization changes with atomic displacements.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DielectricTensors'], + 'slot_uri': 'coremeta4cat:born_effective_charges'} }) + material_composition: Optional[list[str]] = Field(default=[], description="""Chemical composition of the simulated material (e.g. \"Fe2O3\", \"Pt/CeO2\"). +Use empirical formula or SMILES for molecular systems.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], + 'slot_uri': 'coremeta4cat:material_composition'} }) + crystal_structure: Optional[list[str]] = Field(default=[], description="""Crystal structure of the simulated material, including space group and +lattice parameters (e.g. \"Fm-3m, a=3.92 � for Pt\").""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], 'slot_uri': 'SIO:001100'} }) + energy_cutoff: Optional[list[float]] = Field(default=[], description="""Plane-wave kinetic energy cutoff for the basis set expansion.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFTSettingsMixin', 'DFT'], + 'slot_uri': 'coremeta4cat:energy_cutoff', + 'unit': {'ucum_code': 'eV'}} }) + convergence_criteria: Optional[list[str]] = Field(default=[], description="""Convergence thresholds applied during self-consistent field (SCF) and/or +geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/�).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFTSettingsMixin', 'DFT'], + 'slot_uri': 'coremeta4cat:convergence_criteria'} }) + k_point_mesh: Optional[list[str]] = Field(default=[], description="""Monkhorst-Pack k-point mesh used for Brillouin zone sampling +(e.g. \"4�4�1\" for a surface slab, \"8�8�8\" for a bulk cell).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFTSettingsMixin'], 'slot_uri': 'coremeta4cat:k_point_mesh'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class PhononDispersion(CalculatedProperty, MaterialDescriptorMixin): + """ + Phonon dispersion relations computed from interatomic force constants, + providing access to vibrational frequencies, thermodynamic quantities, + and dynamical stability (imaginary modes). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:PhononDispersion', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/', + 'mixins': ['MaterialDescriptorMixin']}) + + force_constant_method: Optional[list[str]] = Field(default=[], description="""Method used to compute the interatomic force constants (e.g. finite +differences / supercell method, DFPT/linear response).""", json_schema_extra = { "linkml_meta": {'domain_of': ['PhononDispersion'], + 'slot_uri': 'coremeta4cat:force_constant_method'} }) + kq_point_mesh: Optional[list[str]] = Field(default=[], description="""k/q-point mesh for phonon Brillouin zone sampling (e.g. \"8�8�8\"). +Distinct from the electronic k-point mesh.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PhononDispersion'], 'slot_uri': 'coremeta4cat:kq_point_mesh'} }) + smearing_parameter: Optional[list[float]] = Field(default=[], description="""Smearing or broadening parameter applied to the phonon density of states.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PhononDispersion'], + 'slot_uri': 'coremeta4cat:smearing_parameter', + 'unit': {'ucum_code': 'eV'}} }) + imaginary_modes: Optional[list[bool]] = Field(default=[], description="""Whether imaginary (soft) phonon modes are present in the dispersion. +Imaginary modes indicate dynamical instability of the structure.""", json_schema_extra = { "linkml_meta": {'domain_of': ['PhononDispersion'], 'slot_uri': 'coremeta4cat:imaginary_modes'} }) + material_composition: Optional[list[str]] = Field(default=[], description="""Chemical composition of the simulated material (e.g. \"Fe2O3\", \"Pt/CeO2\"). +Use empirical formula or SMILES for molecular systems.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], + 'slot_uri': 'coremeta4cat:material_composition'} }) + crystal_structure: Optional[list[str]] = Field(default=[], description="""Crystal structure of the simulated material, including space group and +lattice parameters (e.g. \"Fm-3m, a=3.92 � for Pt\").""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], 'slot_uri': 'SIO:001100'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class EquationsOfState(CalculatedProperty, DFTSettingsMixin, MaterialDescriptorMixin): + """ + Equation of state relating energy (or enthalpy) to volume, fitted to a + parametric model (e.g. Birch-Murnaghan). Used to extract equilibrium + volume, bulk modulus, and its pressure derivative. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:EquationsOfState', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/', + 'mixins': ['MaterialDescriptorMixin', 'DFTSettingsMixin']}) + + fit_method: Optional[list[str]] = Field(default=[], description="""Parametric model used to fit the energy-volume curve +(e.g. Birch-Murnaghan 3rd order, Vinet, Murnaghan).""", json_schema_extra = { "linkml_meta": {'domain_of': ['EquationsOfState'], 'slot_uri': 'coremeta4cat:fit_method'} }) + bulk_modulus: Optional[list[float]] = Field(default=[], description="""Bulk modulus (resistance to uniform compression).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElasticConstants', 'EquationsOfState'], + 'slot_uri': 'coremeta4cat:bulk_modulus', + 'unit': {'ucum_code': 'GPa'}} }) + pressure_derivative: Optional[list[float]] = Field(default=[], description="""Pressure derivative of the bulk modulus B' (dimensionless).""", json_schema_extra = { "linkml_meta": {'domain_of': ['EquationsOfState'], + 'slot_uri': 'coremeta4cat:pressure_derivative'} }) + fit_residuals: Optional[list[float]] = Field(default=[], description="""Root-mean-square residuals of the energy-volume fit.""", json_schema_extra = { "linkml_meta": {'domain_of': ['EquationsOfState'], 'slot_uri': 'coremeta4cat:fit_residuals'} }) + material_composition: Optional[list[str]] = Field(default=[], description="""Chemical composition of the simulated material (e.g. \"Fe2O3\", \"Pt/CeO2\"). +Use empirical formula or SMILES for molecular systems.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], + 'slot_uri': 'coremeta4cat:material_composition'} }) + crystal_structure: Optional[list[str]] = Field(default=[], description="""Crystal structure of the simulated material, including space group and +lattice parameters (e.g. \"Fm-3m, a=3.92 � for Pt\").""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], 'slot_uri': 'SIO:001100'} }) + energy_cutoff: Optional[list[float]] = Field(default=[], description="""Plane-wave kinetic energy cutoff for the basis set expansion.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFTSettingsMixin', 'DFT'], + 'slot_uri': 'coremeta4cat:energy_cutoff', + 'unit': {'ucum_code': 'eV'}} }) + convergence_criteria: Optional[list[str]] = Field(default=[], description="""Convergence thresholds applied during self-consistent field (SCF) and/or +geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/�).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFTSettingsMixin', 'DFT'], + 'slot_uri': 'coremeta4cat:convergence_criteria'} }) + k_point_mesh: Optional[list[str]] = Field(default=[], description="""Monkhorst-Pack k-point mesh used for Brillouin zone sampling +(e.g. \"4�4�1\" for a surface slab, \"8�8�8\" for a bulk cell).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFTSettingsMixin'], 'slot_uri': 'coremeta4cat:k_point_mesh'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class AqueousStability(CalculatedProperty, MaterialDescriptorMixin): + """ + Electrochemical (Pourbaix) stability of a catalyst in aqueous solution as + a function of pH and electrode potential. Critical for electrocatalyst + stability screening. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:AqueousStability', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/', + 'mixins': ['MaterialDescriptorMixin']}) + + ph_range: Optional[list[str]] = Field(default=[], description="""pH range covered in the Pourbaix stability diagram (e.g. \"0�14\").""", json_schema_extra = { "linkml_meta": {'domain_of': ['AqueousStability'], 'slot_uri': 'coremeta4cat:ph_range'} }) + potential_range: Optional[list[str]] = Field(default=[], description="""Electrode potential range covered in the Pourbaix diagram +(e.g. \"-2 to +2 V vs SHE\").""", json_schema_extra = { "linkml_meta": {'domain_of': ['AqueousStability'], 'slot_uri': 'coremeta4cat:potential_range'} }) + solvation_model: Optional[list[str]] = Field(default=[], description="""Implicit solvation model used to account for aqueous environment +(e.g. VASPsol, SCCS/Environ, COSMO).""", json_schema_extra = { "linkml_meta": {'domain_of': ['AqueousStability'], 'slot_uri': 'coremeta4cat:solvation_model'} }) + ionic_strength: Optional[list[float]] = Field(default=[], description="""Ionic strength of the electrolyte solution modelled.""", json_schema_extra = { "linkml_meta": {'domain_of': ['AqueousStability'], + 'slot_uri': 'coremeta4cat:ionic_strength', + 'unit': {'ucum_code': 'mol/L'}} }) + temperature: Optional[list[float]] = Field(default=[], description="""Temperature during a process or measurement.""", json_schema_extra = { "linkml_meta": {'domain_of': ['SonochemicalSynthesis', + 'PhotoluminescenceMixin', + 'ElectrochemistryMixin', + 'PowderXRD', + 'SingleCrystalXRD', + 'XRayAbsorptionSpectroscopy', + 'InfraredSpectroscopy', + 'DRIFTS', + 'RamanSpectroscopy', + 'NMRSpectroscopy', + 'DynamicLightScattering', + 'SizeExclusionChromatography', + 'HighPerformanceLiquidChromatographyMassSpectrometry', + 'Microkinetics', + 'MonteCarlo', + 'AqueousStability'], + 'slot_uri': 'AFR:0001584', + 'unit': {'ucum_code': 'Cel'}} }) + material_composition: Optional[list[str]] = Field(default=[], description="""Chemical composition of the simulated material (e.g. \"Fe2O3\", \"Pt/CeO2\"). +Use empirical formula or SMILES for molecular systems.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], + 'slot_uri': 'coremeta4cat:material_composition'} }) + crystal_structure: Optional[list[str]] = Field(default=[], description="""Crystal structure of the simulated material, including space group and +lattice parameters (e.g. \"Fm-3m, a=3.92 � for Pt\").""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], 'slot_uri': 'SIO:001100'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class GrainBoundaries(CalculatedProperty, MaterialDescriptorMixin): + """ + Grain boundary structure and energetics from atomistic simulation. + Relevant for understanding polycrystalline catalyst behaviour, + sintering, and charge/defect segregation. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:GrainBoundaries', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/', + 'mixins': ['MaterialDescriptorMixin']}) + + grain_boundary_plane: Optional[list[str]] = Field(default=[], description="""Crystallographic plane of the grain boundary, expressed using +Miller indices (e.g. \"Sigma5 (310)[001]\").""", json_schema_extra = { "linkml_meta": {'domain_of': ['GrainBoundaries'], + 'slot_uri': 'coremeta4cat:grain_boundary_plane'} }) + misorientation_angle: Optional[list[float]] = Field(default=[], description="""Misorientation angle between adjacent grains at the boundary.""", json_schema_extra = { "linkml_meta": {'domain_of': ['GrainBoundaries'], + 'slot_uri': 'coremeta4cat:misorientation_angle', + 'unit': {'ucum_code': 'deg'}} }) + grain_boundary_energy: Optional[list[float]] = Field(default=[], description="""Excess energy per unit area of the grain boundary.""", json_schema_extra = { "linkml_meta": {'domain_of': ['GrainBoundaries'], + 'slot_uri': 'coremeta4cat:grain_boundary_energy', + 'unit': {'ucum_code': 'J/m2'}} }) + simulation_cell_size: Optional[list[str]] = Field(default=[], description="""Dimensions of the simulation cell used to model the grain boundary +(e.g. \"10�10�30 nm\").""", json_schema_extra = { "linkml_meta": {'domain_of': ['GrainBoundaries'], + 'slot_uri': 'coremeta4cat:simulation_cell_size'} }) + gb_excess_volume: Optional[list[float]] = Field(default=[], description="""Excess volume per unit area associated with the grain boundary.""", json_schema_extra = { "linkml_meta": {'domain_of': ['GrainBoundaries'], 'slot_uri': 'coremeta4cat:gb_excess_volume'} }) + gb_structural_units: Optional[list[str]] = Field(default=[], description="""Description of the structural units (repeating atomic motifs) that +constitute the grain boundary structure.""", json_schema_extra = { "linkml_meta": {'domain_of': ['GrainBoundaries'], + 'slot_uri': 'coremeta4cat:gb_structural_units'} }) + charge_defect_segregation: Optional[list[str]] = Field(default=[], description="""Data describing charge carrier or point defect segregation behaviour +at the grain boundary (e.g. segregation energy per defect type).""", json_schema_extra = { "linkml_meta": {'domain_of': ['GrainBoundaries'], + 'slot_uri': 'coremeta4cat:charge_defect_segregation'} }) + material_composition: Optional[list[str]] = Field(default=[], description="""Chemical composition of the simulated material (e.g. \"Fe2O3\", \"Pt/CeO2\"). +Use empirical formula or SMILES for molecular systems.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], + 'slot_uri': 'coremeta4cat:material_composition'} }) + crystal_structure: Optional[list[str]] = Field(default=[], description="""Crystal structure of the simulated material, including space group and +lattice parameters (e.g. \"Fm-3m, a=3.92 � for Pt\").""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], 'slot_uri': 'SIO:001100'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class ElectronicStructure(CalculatedProperty, DFTSettingsMixin, MaterialDescriptorMixin): + """ + Electronic band structure and density of states, characterising the + electronic properties of a catalyst relevant to activity descriptors + (d-band centre, band gap, Fermi energy). + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:ElectronicStructure', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/', + 'mixins': ['MaterialDescriptorMixin', 'DFTSettingsMixin']}) + + smearing_method: Optional[list[str]] = Field(default=[], description="""Electronic smearing scheme and width used in the SCF calculation +(e.g. Methfessel-Paxton order 1 with sigma=0.2 eV, Gaussian with sigma=0.05 eV).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectronicStructure'], + 'slot_uri': 'coremeta4cat:smearing_method'} }) + spin_polarized: Optional[list[bool]] = Field(default=[], description="""Whether the electronic structure calculation is spin-polarized +(accounts for spin-up and spin-down electrons separately).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectronicStructure'], + 'slot_uri': 'coremeta4cat:spin_polarized'} }) + band_path: Optional[list[str]] = Field(default=[], description="""High-symmetry k-path through the Brillouin zone used to plot the +band structure (e.g. \"Gamma-X-M-Gamma-R\" for cubic, following SeeK-path convention).""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectronicStructure'], 'slot_uri': 'coremeta4cat:band_path'} }) + fermi_energy: Optional[list[float]] = Field(default=[], description="""Fermi energy (chemical potential of electrons) in the calculated system.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ElectronicStructure'], + 'slot_uri': 'coremeta4cat:fermi_energy', + 'unit': {'ucum_code': 'eV'}} }) + material_composition: Optional[list[str]] = Field(default=[], description="""Chemical composition of the simulated material (e.g. \"Fe2O3\", \"Pt/CeO2\"). +Use empirical formula or SMILES for molecular systems.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], + 'slot_uri': 'coremeta4cat:material_composition'} }) + crystal_structure: Optional[list[str]] = Field(default=[], description="""Crystal structure of the simulated material, including space group and +lattice parameters (e.g. \"Fm-3m, a=3.92 � for Pt\").""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], 'slot_uri': 'SIO:001100'} }) + energy_cutoff: Optional[list[float]] = Field(default=[], description="""Plane-wave kinetic energy cutoff for the basis set expansion.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFTSettingsMixin', 'DFT'], + 'slot_uri': 'coremeta4cat:energy_cutoff', + 'unit': {'ucum_code': 'eV'}} }) + convergence_criteria: Optional[list[str]] = Field(default=[], description="""Convergence thresholds applied during self-consistent field (SCF) and/or +geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/�).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFTSettingsMixin', 'DFT'], + 'slot_uri': 'coremeta4cat:convergence_criteria'} }) + k_point_mesh: Optional[list[str]] = Field(default=[], description="""Monkhorst-Pack k-point mesh used for Brillouin zone sampling +(e.g. \"4�4�1\" for a surface slab, \"8�8�8\" for a bulk cell).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFTSettingsMixin'], 'slot_uri': 'coremeta4cat:k_point_mesh'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class Ferroelectrics(CalculatedProperty, MaterialDescriptorMixin): + """ + Ferroelectric properties computed from DFT, including spontaneous + polarization, switching barrier, and coercive field. Relevant for + ferroelectric-photocatalyst design. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:Ferroelectrics', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/', + 'mixins': ['MaterialDescriptorMixin']}) + + polarization_direction: Optional[list[str]] = Field(default=[], description="""Crystallographic direction of the spontaneous electric polarization +(e.g. \"[001]\" for tetragonal BaTiO_3).""", json_schema_extra = { "linkml_meta": {'domain_of': ['Ferroelectrics'], + 'slot_uri': 'coremeta4cat:polarization_direction'} }) + spontaneous_polarization: Optional[list[float]] = Field(default=[], description="""Magnitude of the spontaneous electric polarization.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Ferroelectrics'], + 'slot_uri': 'coremeta4cat:spontaneous_polarization', + 'unit': {'ucum_code': 'uC/cm2'}} }) + reference_structure: Optional[list[str]] = Field(default=[], description="""Reference (paraelectric/centrosymmetric) structure used as the zero- +polarization endpoint in the Berry-phase polarization calculation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Ferroelectrics'], + 'slot_uri': 'coremeta4cat:reference_structure'} }) + switching_barrier: Optional[list[float]] = Field(default=[], description="""Energy barrier for polarization switching between equivalent states.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Ferroelectrics'], + 'slot_uri': 'coremeta4cat:switching_barrier', + 'unit': {'ucum_code': 'eV'}} }) + coercive_field: Optional[list[float]] = Field(default=[], description="""Electric field required to reverse the polarization direction.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Ferroelectrics'], + 'slot_uri': 'coremeta4cat:coercive_field', + 'unit': {'ucum_code': 'kV/cm'}} }) + temperature_dependence: Optional[list[str]] = Field(default=[], description="""Description of how the ferroelectric properties vary with temperature.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Ferroelectrics'], + 'slot_uri': 'coremeta4cat:temperature_dependence'} }) + material_composition: Optional[list[str]] = Field(default=[], description="""Chemical composition of the simulated material (e.g. \"Fe2O3\", \"Pt/CeO2\"). +Use empirical formula or SMILES for molecular systems.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], + 'slot_uri': 'coremeta4cat:material_composition'} }) + crystal_structure: Optional[list[str]] = Field(default=[], description="""Crystal structure of the simulated material, including space group and +lattice parameters (e.g. \"Fm-3m, a=3.92 � for Pt\").""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], 'slot_uri': 'SIO:001100'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class BandGap(CalculatedProperty, DFTSettingsMixin, MaterialDescriptorMixin): + """ + Electronic band gap and its character (direct/indirect), with optional + many-body (GW) or excitonic corrections. Critical for photocatalyst + and semiconductor catalyst screening. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'coremeta4cat:BandGap', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat/simulation/', + 'mixins': ['MaterialDescriptorMixin', 'DFTSettingsMixin']}) + + material_sample: Optional[list[str]] = Field(default=[], description="""Reference to the material or MaterialSample being characterised by this +calculated band gap.""", json_schema_extra = { "linkml_meta": {'domain_of': ['BandGap'], 'slot_uri': 'VOC4CAT:0005056'} }) + structure_model: Optional[list[str]] = Field(default=[], description="""Model structure used in the band gap calculation (e.g. bulk unit cell, +surface slab, defect supercell).""", json_schema_extra = { "linkml_meta": {'domain_of': ['BandGap'], 'slot_uri': 'coremeta4cat:structure_model'} }) + smearing_broadening: Optional[list[float]] = Field(default=[], description="""Gaussian or Lorentzian broadening applied to the simulated spectrum.""", json_schema_extra = { "linkml_meta": {'domain_of': ['BandGap'], + 'slot_uri': 'coremeta4cat:smearing_broadening', + 'unit': {'ucum_code': 'eV'}} }) + direct_indirect: Optional[list[str]] = Field(default=[], description="""Band gap character: \"direct\" (VBM and CBM at same k-point) or +\"indirect\" (VBM and CBM at different k-points).""", json_schema_extra = { "linkml_meta": {'domain_of': ['BandGap'], 'slot_uri': 'coremeta4cat:direct_indirect'} }) + experimental_reference: Optional[list[float]] = Field(default=[], description="""Experimental band gap value used for benchmarking the calculation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['BandGap'], + 'slot_uri': 'coremeta4cat:experimental_reference', + 'unit': {'ucum_code': 'eV'}} }) + gw_hybrid_correction: Optional[list[bool]] = Field(default=[], description="""Whether a many-body GW correction or hybrid functional (e.g. HSE06) +was applied to correct the DFT band gap underestimation.""", json_schema_extra = { "linkml_meta": {'domain_of': ['BandGap'], 'slot_uri': 'coremeta4cat:gw_hybrid_correction'} }) + excitonic_correction: Optional[list[float]] = Field(default=[], description="""Excitonic correction (from Bethe-Salpeter equation) applied to the +optical band gap.""", json_schema_extra = { "linkml_meta": {'domain_of': ['BandGap'], + 'slot_uri': 'coremeta4cat:excitonic_correction', + 'unit': {'ucum_code': 'eV'}} }) + material_composition: Optional[list[str]] = Field(default=[], description="""Chemical composition of the simulated material (e.g. \"Fe2O3\", \"Pt/CeO2\"). +Use empirical formula or SMILES for molecular systems.""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], + 'slot_uri': 'coremeta4cat:material_composition'} }) + crystal_structure: Optional[list[str]] = Field(default=[], description="""Crystal structure of the simulated material, including space group and +lattice parameters (e.g. \"Fm-3m, a=3.92 � for Pt\").""", json_schema_extra = { "linkml_meta": {'domain_of': ['MaterialDescriptorMixin'], 'slot_uri': 'SIO:001100'} }) + energy_cutoff: Optional[list[float]] = Field(default=[], description="""Plane-wave kinetic energy cutoff for the basis set expansion.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFTSettingsMixin', 'DFT'], + 'slot_uri': 'coremeta4cat:energy_cutoff', + 'unit': {'ucum_code': 'eV'}} }) + convergence_criteria: Optional[list[str]] = Field(default=[], description="""Convergence thresholds applied during self-consistent field (SCF) and/or +geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/�).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFTSettingsMixin', 'DFT'], + 'slot_uri': 'coremeta4cat:convergence_criteria'} }) + k_point_mesh: Optional[list[str]] = Field(default=[], description="""Monkhorst-Pack k-point mesh used for Brillouin zone sampling +(e.g. \"4�4�1\" for a surface slab, \"8�8�8\" for a bulk cell).""", json_schema_extra = { "linkml_meta": {'domain_of': ['DFTSettingsMixin'], 'slot_uri': 'coremeta4cat:k_point_mesh'} }) + title: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + description: Optional[str] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + value: str = Field(default=..., description="""The slot to provide the literal value of the QualitativeAttribute.""", json_schema_extra = { "linkml_meta": {'domain_of': ['QualitativeAttribute', 'QuantitativeAttribute'], + 'in_subset': ['domain_agnostic_core'], + 'slot_uri': 'prov:value'} }) + type: Optional[DefinedTerm] = Field(default=None, description="""This slot is described in more detail within the class in which it is used.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + rdf_type: Optional[DefinedTerm] = Field(default=None, description="""The slot to specify the ontology class that is instantiated by an entity.""", json_schema_extra = { "linkml_meta": {'domain_of': ['ClassifierMixin'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'rdf:type'} }) + + +class CatalysisDataset(Dataset): + """ + A dcat:Dataset that contains research data in the field of catalysis. + + The catalysis research field is expressed via rdf_type using a voc4cat + term from CatalysisResearchFieldEnum (following DCAT-AP-PLUS Pattern 3). + For example, a dataset from heterogeneous catalysis research would carry: + rdf_type: + id: VOC4CAT:0007001 + title: \"heterogeneous catalysis\" + + The four CoreMeta4Cat minimum information pillars are linked via the slots + below, each pointing to the corresponding DataGeneratingActivity or + EvaluatedActivity subclass defined in the CoreMeta4Cat subprofile modules. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'dcat:Dataset', + 'from_schema': 'https://w3id.org/nfdi4cat/coremeta4cat', + 'slot_usage': {'is_about_activity': {'description': 'The catalytic Reaction ' + 'that this dataset is ' + 'about (e.g. a dataset ' + 'of\n' + 'catalytic performance ' + 'measurements is about ' + 'the Reaction being ' + 'studied).', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'is_about_activity', + 'range': 'EvaluatedActivity', + 'recommended': True}, + 'is_about_entity': {'description': 'The catalyst sample, ' + 'material, or other Entity ' + 'that this dataset is ' + 'about.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'is_about_entity', + 'range': 'EvaluatedEntity', + 'recommended': True}, + 'rdf_type': {'bindings': [{'binds_value_of': 'id', + 'description': 'Classify the ' + 'dataset by ' + 'catalysis research ' + 'field using ' + 'voc4cat.', + 'obligation_level': 'RECOMMENDED', + 'range': 'CatalysisResearchFieldEnum'}], + 'description': 'The catalysis research field, ' + 'provided as a voc4cat term from\n' + 'CatalysisResearchFieldEnum. This ' + 'is the primary ' + 'machine-actionable\n' + "classification of the dataset's " + 'domain.', + 'name': 'rdf_type', + 'recommended': True}, + 'was_generated_by': {'description': 'The ' + 'DataGeneratingActivity ' + '(Synthesis, ' + 'Characterization, or ' + 'Simulation)\n' + 'that produced this ' + 'dataset.', + 'inlined_as_list': True, + 'multivalued': True, + 'name': 'was_generated_by', + 'range': 'DataGeneratingActivity', + 'recommended': True}}}) + + access_rights: Optional[RightsStatement] = Field(default=None, description="""Information that indicates whether the Dataset is publicly accessible, has access restrictions or is not public.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], 'slot_uri': 'dcterms:accessRights'} }) + applicable_legislation: Optional[list[LegalResource]] = Field(default=[], description="""The legislation that mandates the creation or management of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution'], + 'slot_uri': 'dcatap:applicableLegislation'} }) + conforms_to: Optional[list[Standard]] = Field(default=[], description="""An implementing rule or other specification.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], 'slot_uri': 'dcterms:conformsTo'} }) + contact_point: Optional[list[Kind]] = Field(default=[], description="""Contact information that can be used for sending comments about the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset', 'DatasetSeries'], + 'recommended': True, + 'slot_uri': 'dcat:contactPoint'} }) + creator: Optional[list[Agent]] = Field(default=[], description="""An entity responsible for producing the dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset'], 'slot_uri': 'dcterms:creator'} }) + dataset_distribution: Optional[list[Distribution]] = Field(default=[], description="""An available Distribution for the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcat:distribution'} }) + description: list[str] = Field(default=..., description="""A free-text account of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:description'} }) + documentation: Optional[list[Document]] = Field(default=[], description="""A page or document about this Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset', 'Distribution'], + 'slot_uri': 'foaf:page'} }) + frequency: Optional[Frequency] = Field(default=None, description="""The frequency at which the Dataset is updated.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:accrualPeriodicity'} }) + geographical_coverage: Optional[list[Location]] = Field(default=[], description="""A geographic region that is covered by the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:spatial'} }) + has_version: Optional[list[Dataset]] = Field(default=[], description="""A related Dataset that is a version, edition, or adaptation of the described Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcat:hasVersion'} }) + identifier: Optional[list[str]] = Field(default=[], description="""The main identifier for the Dataset, e.g. the URI or other unique identifier in the context of the Catalogue.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcterms:identifier'} }) + in_series: Optional[list[DatasetSeries]] = Field(default=[], description="""A dataset series of which the dataset is part.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcat:inSeries'} }) + is_referenced_by: Optional[list[Resource]] = Field(default=[], description="""A related resource, such as a publication, that references, cites, or otherwise points to the dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcterms:isReferencedBy'} }) + keyword: Optional[list[str]] = Field(default=[], description="""A keyword or tag describing the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], + 'recommended': True, + 'slot_uri': 'dcat:keyword'} }) + landing_page: Optional[list[Document]] = Field(default=[], description="""A web page that provides access to the Dataset, its Distributions and/or additional information.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], 'slot_uri': 'dcat:landingPage'} }) + language: Optional[list[LinguisticSystem]] = Field(default=[], description="""A language of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'CatalogueRecord', 'Dataset', 'Distribution'], + 'slot_uri': 'dcterms:language'} }) + modification_date: Optional[date] = Field(default=None, description="""The most recent date on which the Dataset was changed or modified.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', + 'CatalogueRecord', + 'Dataset', + 'DatasetSeries', + 'Distribution'], + 'slot_uri': 'dcterms:modified'} }) + other_identifier: Optional[list[Identifier]] = Field(default=[], description="""A secondary identifier of the Dataset""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', 'AgenticEntity', 'Dataset', 'Entity'], + 'slot_uri': 'adms:identifier'} }) + provenance: Optional[list[ProvenanceStatement]] = Field(default=[], description="""A statement about the lineage of a Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcterms:provenance'} }) + publisher: Optional[Agent] = Field(default=None, description="""An entity (organisation) responsible for making the Dataset available.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'DataService', 'Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:publisher'} }) + qualified_attribution: Optional[list[Attribution]] = Field(default=[], description="""An Agent having some form of responsibility for the resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'prov:qualifiedAttribution'} }) + qualified_relation: Optional[list[Relationship]] = Field(default=[], description="""A description of a relationship with another resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcat:qualifiedRelation'} }) + related_resource: Optional[list[Resource]] = Field(default=[], description="""A related resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'ChemicalReaction'], 'slot_uri': 'dcterms:relation'} }) + release_date: Optional[date] = Field(default=None, description="""The date of formal issuance (e.g., publication) of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset', 'DatasetSeries', 'Distribution'], + 'slot_uri': 'dcterms:issued'} }) + sample: Optional[list[Distribution]] = Field(default=[], description="""A sample distribution of the dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'adms:sample'} }) + source: Optional[list[Dataset]] = Field(default=[], description="""A related Dataset from which the described Dataset is derived.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcterms:source'} }) + spatial_resolution: Optional[Decimal] = Field(default=None, description="""The minimum spatial separation resolvable in a dataset, measured in meters.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'Distribution'], + 'slot_uri': 'dcat:spatialResolutionInMeters'} }) + temporal_coverage: Optional[list[PeriodOfTime]] = Field(default=[], description="""A temporal period that the Dataset covers.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Catalogue', 'Dataset', 'DatasetSeries'], + 'slot_uri': 'dcterms:temporal'} }) + temporal_resolution: Optional[str] = Field(default=None, description="""The minimum time period resolvable in the dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'Distribution'], + 'slot_uri': 'dcat:temporalResolution'} }) + theme: Optional[list[Concept]] = Field(default=[], description="""A category of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DataService', 'Dataset'], + 'recommended': True, + 'slot_uri': 'dcat:theme'} }) + title: list[str] = Field(default=..., description="""A name given to the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Any', + 'Attribution', + 'Catalogue', + 'CatalogueRecord', + 'ChecksumAlgorithm', + 'Concept', + 'ConceptScheme', + 'DataService', + 'Dataset', + 'DatasetSeries', + 'DefinedTerm', + 'Distribution', + 'Document', + 'Entity', + 'Frequency', + 'Geometry', + 'Identifier', + 'LegalResource', + 'LicenseDocument', + 'LinguisticSystem', + 'MediaType', + 'MediaTypeOrExtent', + 'PeriodOfTime', + 'Plan', + 'Policy', + 'ProvenanceStatement', + 'QualitativeAttribute', + 'QuantitativeAttribute', + 'Resource', + 'RightsStatement', + 'Role', + 'Standard', + 'SupportiveEntity', + 'Surrounding', + 'TimeInstant'], + 'slot_uri': 'dcterms:title'} }) + type: Optional[list[Concept]] = Field(default=[], description="""A type of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Agent', 'ClassifierMixin', 'Dataset', 'LicenseDocument'], + 'slot_uri': 'dcterms:type'} }) + version: Optional[str] = Field(default=None, description="""The version indicator (name or identifier) of a resource.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'dcat:version'} }) + version_notes: Optional[list[str]] = Field(default=[], description="""A description of the differences between this version and a previous version of the Dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], 'slot_uri': 'adms:versionNotes'} }) + was_generated_by: list[DataGeneratingActivity] = Field(default=..., description="""The DataGeneratingActivity (Synthesis, Characterization, or Simulation) +that produced this dataset.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset', 'EvaluatedEntity'], + 'notes': ['stricter than DCAT-AP'], + 'recommended': True, + 'slot_uri': 'prov:wasGeneratedBy'} }) + id: str = Field(default=..., description="""A slot to provide an URI for an entity within this schema.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Activity', + 'AgenticEntity', + 'Dataset', + 'DefinedTerm', + 'Document', + 'Entity', + 'LegalResource', + 'LicenseDocument', + 'Resource'], + 'in_subset': ['domain_agnostic_core']} }) + is_about_entity: Optional[list[EvaluatedEntity]] = Field(default=[], description="""The catalyst sample, material, or other Entity that this dataset is about.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], + 'exact_mappings': ['IAO:0000136'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:subject'} }) + is_about_activity: Optional[list[EvaluatedActivity]] = Field(default=[], description="""The catalytic Reaction that this dataset is about (e.g. a dataset of +catalytic performance measurements is about the Reaction being studied).""", json_schema_extra = { "linkml_meta": {'domain_of': ['Dataset'], + 'exact_mappings': ['IAO:0000136'], + 'in_subset': ['domain_agnostic_core'], + 'recommended': True, + 'slot_uri': 'dcterms:subject'} }) + + +# Model rebuild +# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model +DryingMixin.model_rebuild() +CalcinationMixin.model_rebuild() +PrecipitationMixin.model_rebuild() +ThermalSynthesisMixin.model_rebuild() +XRaySourceMixin.model_rebuild() +EnergyRangeMixin.model_rebuild() +ElectronMicroscopyMixin.model_rebuild() +TemperatureProgramMixin.model_rebuild() +ChromatographyMixin.model_rebuild() +MassRangeMixin.model_rebuild() +PhotoluminescenceMixin.model_rebuild() +ElectrochemistryMixin.model_rebuild() +Agent.model_rebuild() +Catalogue.model_rebuild() +CatalogueRecord.model_rebuild() +Checksum.model_rebuild() +ClassifierMixin.model_rebuild() +Activity.model_rebuild() +AgenticEntity.model_rebuild() +DataGeneratingActivity.model_rebuild() +Synthesis.model_rebuild() +Characterization.model_rebuild() +DataAnalysis.model_rebuild() +DataService.model_rebuild() +Dataset.model_rebuild() +AnalysisDataset.model_rebuild() +DatasetSeries.model_rebuild() +DefinedTerm.model_rebuild() +Device.model_rebuild() +ReactorDesignType.model_rebuild() +ElectrochemicalReactor.model_rebuild() +CSTR.model_rebuild() +PlugFlowReactor.model_rebuild() +Autoclave.model_rebuild() +SlurryReactor.model_rebuild() +Microreactor.model_rebuild() +FixedBedReactor.model_rebuild() +FluidizedBedReactor.model_rebuild() +Distribution.model_rebuild() +Entity.model_rebuild() +EvaluatedActivity.model_rebuild() +Reaction.model_rebuild() +EvaluatedEntity.model_rebuild() +AnalysisSourceData.model_rebuild() +Kind.model_rebuild() +Location.model_rebuild() +Plan.model_rebuild() +PreparationMethod.model_rebuild() +Impregnation.model_rebuild() +CoPrecipitation.model_rebuild() +SolGel.model_rebuild() +Solvothermal.model_rebuild() +PlasmaAssisted.model_rebuild() +CombustionSynthesis.model_rebuild() +AtomicLayerDeposition.model_rebuild() +DepositionPrecipitation.model_rebuild() +MicrowaveAssisted.model_rebuild() +SonochemicalSynthesis.model_rebuild() +FlameSprayPyrolysis.model_rebuild() +MechanochemicalSynthesis.model_rebuild() +Sublimation.model_rebuild() +MolecularSynthesis.model_rebuild() +ExsolutionSynthesis.model_rebuild() +CharacterizationTechnique.model_rebuild() +PowderXRD.model_rebuild() +SingleCrystalXRD.model_rebuild() +XRayAbsorptionSpectroscopy.model_rebuild() +XPS.model_rebuild() +EDX.model_rebuild() +InfraredSpectroscopy.model_rebuild() +DRIFTS.model_rebuild() +RamanSpectroscopy.model_rebuild() +NMRSpectroscopy.model_rebuild() +TransmissionElectronMicroscopy.model_rebuild() +ScanningElectronMicroscopy.model_rebuild() +Thermogravimetry.model_rebuild() +TPR.model_rebuild() +TPO.model_rebuild() +BET.model_rebuild() +ICPAES.model_rebuild() +ElementalAnalysis.model_rebuild() +UVVisSpectroscopy.model_rebuild() +PhotoluminescenceSpectroscopy.model_rebuild() +PhotoluminescenceLifetime.model_rebuild() +CyclicVoltammetry.model_rebuild() +ConductivityMeasurement.model_rebuild() +DynamicLightScattering.model_rebuild() +ElectroSprayIonizationMassSpectrometry.model_rebuild() +GCMS.model_rebuild() +SizeExclusionChromatography.model_rebuild() +HighPerformanceLiquidChromatographyMassSpectrometry.model_rebuild() +ProductIdentificationMethod.model_rebuild() +QualitativeAttribute.model_rebuild() +QuantitativeAttribute.model_rebuild() +Relationship.model_rebuild() +Software.model_rebuild() +SupportiveEntity.model_rebuild() +Attribution.model_rebuild() +ChecksumAlgorithm.model_rebuild() +Concept.model_rebuild() +ConceptScheme.model_rebuild() +Document.model_rebuild() +Frequency.model_rebuild() +Geometry.model_rebuild() +Identifier.model_rebuild() +LegalResource.model_rebuild() +LicenseDocument.model_rebuild() +LinguisticSystem.model_rebuild() +MediaType.model_rebuild() +MediaTypeOrExtent.model_rebuild() +PeriodOfTime.model_rebuild() +Policy.model_rebuild() +ProvenanceStatement.model_rebuild() +Resource.model_rebuild() +RightsStatement.model_rebuild() +Role.model_rebuild() +Standard.model_rebuild() +Surrounding.model_rebuild() +TimeInstant.model_rebuild() +InChIKey.model_rebuild() +InChi.model_rebuild() +MolecularFormula.model_rebuild() +IUPACName.model_rebuild() +SMILES.model_rebuild() +Concentration.model_rebuild() +AmountOfSubstance.model_rebuild() +PHValue.model_rebuild() +Materialistic.model_rebuild() +MaterialEntity.model_rebuild() +ChemicalEntity.model_rebuild() +Atom.model_rebuild() +ChemicalSubstance.model_rebuild() +Polymer.model_rebuild() +MaterialSample.model_rebuild() +Precursor.model_rebuild() +CatalystSample.model_rebuild() +Temperature.model_rebuild() +Mass.model_rebuild() +MolarMass.model_rebuild() +Volume.model_rebuild() +Density.model_rebuild() +Pressure.model_rebuild() +ChemicalReaction.model_rebuild() +StartingMaterial.model_rebuild() +DissolvingSubstance.model_rebuild() +Reagent.model_rebuild() +ChemicalProduct.model_rebuild() +Catalyst.model_rebuild() +Reactor.model_rebuild() +Yield.model_rebuild() +MolarEquivalent.model_rebuild() +PercentageOfTotal.model_rebuild() +SubstanceSample.model_rebuild() +PolymerSample.model_rebuild() +Laboratory.model_rebuild() +MaterialDescriptorMixin.model_rebuild() +DFTSettingsMixin.model_rebuild() +Simulation.model_rebuild() +SimulationMethod.model_rebuild() +DFT.model_rebuild() +MolecularDynamics.model_rebuild() +Microkinetics.model_rebuild() +MonteCarlo.model_rebuild() +CalculatedProperty.model_rebuild() +ThermodynamicStability.model_rebuild() +Piezoelectricity.model_rebuild() +ElasticConstants.model_rebuild() +Surfaces.model_rebuild() +DielectricTensors.model_rebuild() +PhononDispersion.model_rebuild() +EquationsOfState.model_rebuild() +AqueousStability.model_rebuild() +GrainBoundaries.model_rebuild() +ElectronicStructure.model_rebuild() +Ferroelectrics.model_rebuild() +BandGap.model_rebuild() +CatalysisDataset.model_rebuild() diff --git a/src/catcore/schema/README.md b/src/coremeta4cat/schema/README.md similarity index 100% rename from src/catcore/schema/README.md rename to src/coremeta4cat/schema/README.md diff --git a/src/catcore/schema/chemical_entities_ap.yaml b/src/coremeta4cat/schema/chemical_entities_ap.yaml similarity index 100% rename from src/catcore/schema/chemical_entities_ap.yaml rename to src/coremeta4cat/schema/chemical_entities_ap.yaml diff --git a/src/catcore/schema/chemical_reaction_ap.yaml b/src/coremeta4cat/schema/chemical_reaction_ap.yaml similarity index 99% rename from src/catcore/schema/chemical_reaction_ap.yaml rename to src/coremeta4cat/schema/chemical_reaction_ap.yaml index 2c976a597..7d97d17da 100644 --- a/src/catcore/schema/chemical_reaction_ap.yaml +++ b/src/coremeta4cat/schema/chemical_reaction_ap.yaml @@ -8,7 +8,7 @@ license: CC-BY 4.0 prefixes: chemical_reaction_ap: https://nfdi-de.github.io/chem-dcat-ap/chemical_reaction_ap.yaml# chemdcatap: https://nfdi-de.github.io/chem-dcat-ap/ - dcatapplus: https://nfdi-de.github.io/dcat-ap-plus/ + dcatapplus: https://w3id.org/nfdi-de/dcat-ap-plus/ linkml: https://w3id.org/linkml/ biolink: https://w3id.org/biolink/vocab/ schema: http://schema.org/ diff --git a/src/catcore/schema/catcore.yaml b/src/coremeta4cat/schema/coremeta4cat.yaml similarity index 78% rename from src/catcore/schema/catcore.yaml rename to src/coremeta4cat/schema/coremeta4cat.yaml index 8bbe06b89..60723ab66 100644 --- a/src/catcore/schema/catcore.yaml +++ b/src/coremeta4cat/schema/coremeta4cat.yaml @@ -1,23 +1,23 @@ --- -id: https://w3id.org/nfdi4cat/catcore -name: catcore-metadata -title: CatCore Metadata Reference Model +id: https://w3id.org/nfdi4cat/coremeta4cat +name: coremeta4cat-metadata +title: CoreMeta4cat Metadata Reference Model description: |- - The CatCore describes the minimum information which must be reported with research + The CoreMeta4Cat describes the minimum information which must be reported with research data concerning the field of catalysis. This guideline helps to handle and standardize data based on the FAIR principle (Findable, Accessible, Interoperable, Reusable). Architecture ------------ - CatCore follows the DCAT-AP-PLUS design patterns (see design-patterns.md): + CoreMeta4Cat follows the DCAT-AP-PLUS design patterns (see design-patterns.md): - The entry point is the dcat:Dataset, extended here as CatalysisDataset. The catalysis research field is expressed via rdf_type (ClassifierMixin, Pattern 3) using voc4cat terms — analogous to how NMRSpectroscopy uses rdf_type: CHMO:0000613 to classify the measurement type. - - The four CatCore pillars are modelled as DCAT-AP-PLUS Activity subclasses, + - The four CoreMeta4Cat pillars are modelled as DCAT-AP-PLUS Activity subclasses, following the same pattern as NMRSpectroscopy (is_a: DataGeneratingActivity): Synthesis --> is_a: DataGeneratingActivity @@ -49,30 +49,30 @@ description: |- - PreparationMethod, CharacterizationTechnique, and SimulationMethod are modelled as Plan (from dcat_ap_plus), the protocol realized by the Activity. - This file is the top-level aggregator. It imports catcore_common (shared + This file is the top-level aggregator. It imports coremeta4cat_common (shared slots and enums) and the four subprofile modules. Full import hierarchy: - catcore.yaml (this file — aggregator + CatalysisDataset entry point) - +-- catcore_common.yaml (shared slots, enums) + coremeta4cat.yaml (this file — aggregator + CatalysisDataset entry point) + +-- coremeta4cat_common.yaml (shared slots, enums) +-- chem_dcat_ap (SubstanceSample, ChemicalSubstance, …) +-- chemical_reaction_ap +-- chemical_entities_ap +-- material_entities_ap +-- dcat_ap_plus (DCAT-AP-PLUS base) - +-- catcore_synthesis_ap (Step 3 — Synthesis, PreparationMethod, mixins) - +-- catcore_characterization_ap (Step 4 — Characterization, 24 techniques, mixins) - +-- catcore_reaction_ap (Step 5 — Reaction, 8 ReactorDesignTypes) - +-- catcore_simulation_ap (Step 6 — Simulation, 4 methods, 12 properties, mixins) + +-- coremeta4cat_synthesis_ap (Step 3 — Synthesis, PreparationMethod, mixins) + +-- coremeta4cat_characterization_ap (Step 4 — Characterization, 24 techniques, mixins) + +-- coremeta4cat_reaction_ap (Step 5 — Reaction, 8 ReactorDesignTypes) + +-- coremeta4cat_simulation_ap (Step 6 — Simulation, 4 methods, 12 properties, mixins) license: CC-BY-4.0 version: 1.0.0 prefixes: - catcore: https://w3id.org/nfdi4cat/catcore/ + coremeta4cat: https://w3id.org/nfdi4cat/coremeta4cat/ VOC4CAT: https://w3id.org/nfdi4cat/voc4cat_ chemdcatap: https://nfdi-de.github.io/chem-dcat-ap/ - dcatapplus: https://nfdi-de.github.io/dcat-ap-plus/ + dcatapplus: https://w3id.org/nfdi-de/dcat-ap-plus/ linkml: https://w3id.org/linkml/ dcat: http://www.w3.org/ns/dcat# dcterms: http://purl.org/dc/terms/ @@ -83,16 +83,16 @@ prefixes: SIO: http://semanticscience.org/resource/SIO_ NCIT: http://purl.obolibrary.org/obo/NCIT_ -default_prefix: catcore +default_prefix: coremeta4cat default_range: string imports: - linkml:types - - catcore_common - - catcore_synthesis_ap - - catcore_characterization_ap - - catcore_reaction_ap - - catcore_simulation_ap + - coremeta4cat_common + - coremeta4cat_synthesis_ap + - coremeta4cat_characterization_ap + - coremeta4cat_reaction_ap + - coremeta4cat_simulation_ap # ==================== ENTRY POINT: CATALYSIS DATASET ==================== @@ -111,9 +111,9 @@ classes: id: VOC4CAT:0007001 title: "heterogeneous catalysis" - The four CatCore minimum information pillars are linked via the slots + The four CoreMeta4Cat minimum information pillars are linked via the slots below, each pointing to the corresponding DataGeneratingActivity or - EvaluatedActivity subclass defined in the CatCore subprofile modules. + EvaluatedActivity subclass defined in the CoreMeta4Cat subprofile modules. slot_usage: rdf_type: description: |- diff --git a/src/catcore/schema/catcore_characterization_ap.yaml b/src/coremeta4cat/schema/coremeta4cat_characterization_ap.yaml similarity index 89% rename from src/catcore/schema/catcore_characterization_ap.yaml rename to src/coremeta4cat/schema/coremeta4cat_characterization_ap.yaml index 83adc721c..3c88f2586 100644 --- a/src/catcore/schema/catcore_characterization_ap.yaml +++ b/src/coremeta4cat/schema/coremeta4cat_characterization_ap.yaml @@ -1,9 +1,9 @@ --- -id: https://w3id.org/nfdi4cat/catcore/characterization/ -name: catcore-characterization-ap -title: CatCore Characterization Application Profile +id: https://w3id.org/nfdi4cat/coremeta4cat/characterization/ +name: coremeta4cat-characterization-ap +title: CoreMeta4cat Characterization Application Profile description: |- - Application profile for catalyst characterization within the CatCore metadata model. + Application profile for catalyst characterization within the CoreMeta4cat metadata model. This module defines: - Characterization — the DataGeneratingActivity in which a catalyst sample is @@ -29,9 +29,9 @@ license: CC-BY-4.0 version: 1.0.0 prefixes: - catcore: https://w3id.org/nfdi4cat/catcore/ + coremeta4cat: https://w3id.org/nfdi4cat/coremeta4cat/ VOC4CAT: https://w3id.org/nfdi4cat/voc4cat_ - dcatapplus: https://nfdi-de.github.io/dcat-ap-plus/ + dcatapplus: https://w3id.org/nfdi-de/dcat-ap-plus/ linkml: https://w3id.org/linkml/ prov: http://www.w3.org/ns/prov# OBI: http://purl.obolibrary.org/obo/OBI_ @@ -42,12 +42,12 @@ prefixes: AFQ: http://purl.allotrope.org/ontologies/quality#AFQ_ AFRL: http://purl.allotrope.org/ontologies/role#AFRL_ -default_prefix: catcore +default_prefix: coremeta4cat default_range: string imports: - linkml:types - - catcore_common # shared slots (atmosphere, temperature, equipment, sample_mass, …) + enums + - coremeta4cat_common # shared slots (atmosphere, temperature, equipment, sample_mass, …) + enums # ==================== MIXINS ==================== # Pure slot containers. Each targets a slot group shared by >=2 techniques. @@ -278,7 +278,7 @@ classes: InfraredSpectroscopy: is_a: CharacterizationTechnique - class_uri: catcore:InfraredSpectroscopy + class_uri: coremeta4cat:InfraredSpectroscopy description: Infrared spectroscopy (FTIR/ATR) for functional group and surface species identification. slots: - operation_mode @@ -400,7 +400,7 @@ classes: BET: is_a: CharacterizationTechnique - class_uri: catcore:BET + class_uri: coremeta4cat:BET description: Brunauer-Emmett-Teller analysis for specific surface area and pore size distribution. slots: - adsorbate_gas @@ -445,7 +445,7 @@ classes: PhotoluminescenceSpectroscopy: is_a: CharacterizationTechnique - class_uri: catcore:PhotoluminescenceSpectroscopy + class_uri: coremeta4cat:PhotoluminescenceSpectroscopy mixins: - PhotoluminescenceMixin description: Photoluminescence spectroscopy for defect and charge carrier characterization. @@ -457,7 +457,7 @@ classes: PhotoluminescenceLifetime: is_a: CharacterizationTechnique - class_uri: catcore:PhotoluminescenceLifetime + class_uri: coremeta4cat:PhotoluminescenceLifetime mixins: - PhotoluminescenceMixin description: Time-resolved photoluminescence for charge carrier lifetime and recombination dynamics. @@ -482,7 +482,7 @@ classes: ConductivityMeasurement: is_a: CharacterizationTechnique - class_uri: catcore:ConductivityMeasurement + class_uri: coremeta4cat:ConductivityMeasurement mixins: - ElectrochemistryMixin description: Electrical conductivity measurement for ionic and electronic transport characterization. @@ -510,7 +510,7 @@ classes: # ==================== MASS SPECTROMETRY ==================== - ESI_MS: + ElectroSprayIonizationMassSpectrometry: is_a: CharacterizationTechnique class_uri: CHMO:0000482 mixins: @@ -557,7 +557,7 @@ classes: - temperature - calibration_standard - HPLC_MS: + HighPerformanceLiquidChromatographyMassSpectrometry: is_a: CharacterizationTechnique class_uri: CHMO:0000796 mixins: @@ -575,7 +575,7 @@ classes: # concentration, solvent, injection_volume, external_standard, internal_standard, # calibration_method, column_type, experiment_duration, flow_rate, # filtration_device, filter_type, heating_rate, heating_procedure, dispersant, …) -# are inherited from catcore_common. +# are inherited from coremeta4cat_common. slots: @@ -584,13 +584,13 @@ slots: sample_state: description: Physical state of the sample during characterization. range: SampleStateEnum - slot_uri: catcore:sample_state + slot_uri: coremeta4cat:sample_state multivalued: true sample_description: description: Free-text description of the sample used in this characterization. range: string - slot_uri: catcore:sample_description + slot_uri: coremeta4cat:sample_description multivalued: true sample_preparation: @@ -624,7 +624,7 @@ slots: minimum_energy: description: Minimum energy of the scan range. range: float - slot_uri: catcore:minimum_energy + slot_uri: coremeta4cat:minimum_energy multivalued: true unit: ucum_code: eV @@ -632,7 +632,7 @@ slots: maximum_energy: description: Maximum energy of the scan range. range: float - slot_uri: catcore:maximum_energy + slot_uri: coremeta4cat:maximum_energy multivalued: true unit: ucum_code: eV @@ -642,13 +642,13 @@ slots: gun_type: description: Type of electron gun (e.g. FEG, thermionic LaB6). range: string - slot_uri: catcore:gun_type + slot_uri: coremeta4cat:gun_type multivalued: true acceleration_voltage: description: Acceleration voltage applied to the electron beam. range: float - slot_uri: catcore:acceleration_voltage + slot_uri: coremeta4cat:acceleration_voltage multivalued: true unit: ucum_code: kV @@ -664,7 +664,7 @@ slots: minimum_temperature: description: Minimum (start) temperature in a temperature programme. range: float - slot_uri: catcore:minimum_temperature + slot_uri: coremeta4cat:minimum_temperature multivalued: true unit: ucum_code: Cel @@ -672,7 +672,7 @@ slots: maximum_temperature: description: Maximum (final) temperature in a temperature programme. range: float - slot_uri: catcore:maximum_temperature + slot_uri: coremeta4cat:maximum_temperature multivalued: true unit: ucum_code: Cel @@ -728,7 +728,7 @@ slots: optical_filter: description: Optical filter used in the emission or excitation path. range: string - slot_uri: catcore:optical_filter + slot_uri: coremeta4cat:optical_filter multivalued: true # ---- Electrochemistry (ElectrochemistryMixin) ---- @@ -754,13 +754,13 @@ slots: electrolyte_composition: description: Chemical composition of the electrolyte solution. range: string - slot_uri: catcore:electrolyte_composition + slot_uri: coremeta4cat:electrolyte_composition multivalued: true electrolyte_concentration: description: Concentration of the electrolyte. range: float - slot_uri: catcore:electrolyte_concentration + slot_uri: coremeta4cat:electrolyte_concentration multivalued: true unit: ucum_code: mol/L @@ -770,7 +770,7 @@ slots: minimum_2theta: description: Minimum 2theta angle in the diffraction scan. range: float - slot_uri: catcore:minimum_2theta + slot_uri: coremeta4cat:minimum_2theta multivalued: true unit: ucum_code: deg @@ -778,7 +778,7 @@ slots: maximum_2theta: description: Maximum 2theta angle in the diffraction scan. range: float - slot_uri: catcore:maximum_2theta + slot_uri: coremeta4cat:maximum_2theta multivalued: true unit: ucum_code: deg @@ -786,7 +786,7 @@ slots: sample_spinning_speed: description: Sample spinning speed during XRD measurement. range: float - slot_uri: catcore:sample_spinning_speed + slot_uri: coremeta4cat:sample_spinning_speed multivalued: true unit: ucum_code: rpm @@ -796,25 +796,25 @@ slots: absorption_edge: description: X-ray absorption edge measured (e.g. K-edge, L3-edge). range: string - slot_uri: catcore:absorption_edge + slot_uri: coremeta4cat:absorption_edge multivalued: true element_analyzed: description: Chemical element analysed (e.g. Fe, Cu, Pt). range: string - slot_uri: catcore:element_analyzed + slot_uri: coremeta4cat:element_analyzed multivalued: true beamline_source: description: Synchrotron beamline or X-ray source identifier. range: string - slot_uri: catcore:beamline_source + slot_uri: coremeta4cat:beamline_source multivalued: true noise_of_measurement: description: Noise level of the XAS measurement (signal-to-noise ratio). range: float - slot_uri: catcore:noise_of_measurement + slot_uri: coremeta4cat:noise_of_measurement multivalued: true energy_resolution: @@ -830,7 +830,7 @@ slots: total_acquisition_time: description: Total time for XPS spectrum acquisition. range: float - slot_uri: catcore:total_acquisition_time + slot_uri: coremeta4cat:total_acquisition_time multivalued: true unit: ucum_code: s @@ -838,7 +838,7 @@ slots: pass_energy: description: Analyser pass energy setting in XPS. range: float - slot_uri: catcore:pass_energy + slot_uri: coremeta4cat:pass_energy multivalued: true unit: ucum_code: eV @@ -846,7 +846,7 @@ slots: spot_size: description: X-ray spot size on the sample surface. range: float - slot_uri: catcore:spot_size + slot_uri: coremeta4cat:spot_size multivalued: true unit: ucum_code: mm @@ -860,7 +860,7 @@ slots: charge_compensation: description: Charge compensation method applied during XPS measurement. range: string - slot_uri: catcore:charge_compensation + slot_uri: coremeta4cat:charge_compensation multivalued: true # ---- EDX-specific ---- @@ -868,7 +868,7 @@ slots: primary_energy: description: Primary electron beam energy for EDX excitation. range: float - slot_uri: catcore:primary_energy + slot_uri: coremeta4cat:primary_energy multivalued: true unit: ucum_code: keV @@ -876,7 +876,7 @@ slots: counting_time: description: X-ray counting time per point or spectrum. range: float - slot_uri: catcore:counting_time + slot_uri: coremeta4cat:counting_time multivalued: true unit: ucum_code: s @@ -886,7 +886,7 @@ slots: minimum_wavenumber: description: Minimum wavenumber of the IR scan range. range: float - slot_uri: catcore:minimum_wavenumber + slot_uri: coremeta4cat:minimum_wavenumber multivalued: true unit: ucum_code: cm-1 @@ -894,7 +894,7 @@ slots: maximum_wavenumber: description: Maximum wavenumber of the IR scan range. range: float - slot_uri: catcore:maximum_wavenumber + slot_uri: coremeta4cat:maximum_wavenumber multivalued: true unit: ucum_code: cm-1 @@ -908,25 +908,25 @@ slots: adsorption_gas: description: Probe gas adsorbed during in-situ DRIFTS measurement. range: string - slot_uri: catcore:adsorption_gas + slot_uri: coremeta4cat:adsorption_gas multivalued: true diluting_reference: description: Reference material used to dilute the DRIFTS sample (e.g. KBr). range: string - slot_uri: catcore:diluting_reference + slot_uri: coremeta4cat:diluting_reference multivalued: true ratio_reference_sample: description: Mass ratio of reference material to catalyst sample in DRIFTS cup. range: float - slot_uri: catcore:ratio_reference_sample + slot_uri: coremeta4cat:ratio_reference_sample multivalued: true background_correction_method: description: Specific background correction method used in DRIFTS. range: string - slot_uri: catcore:background_correction_method + slot_uri: coremeta4cat:background_correction_method multivalued: true # ---- Raman-specific ---- @@ -950,7 +950,7 @@ slots: filter_or_grating: description: Optical filter or grating used in Raman spectrometer. range: string - slot_uri: catcore:filter_or_grating + slot_uri: coremeta4cat:filter_or_grating multivalued: true # ---- NMR-specific ---- @@ -958,13 +958,13 @@ slots: nucleus: description: NMR-active nucleus observed (e.g. 1H, 13C, 31P). range: string - slot_uri: catcore:nucleus + slot_uri: coremeta4cat:nucleus multivalued: true irradiation_frequency: description: Irradiation frequency of the NMR spectrometer. range: float - slot_uri: catcore:irradiation_frequency + slot_uri: coremeta4cat:irradiation_frequency multivalued: true unit: ucum_code: MHz @@ -972,13 +972,13 @@ slots: nmr_pulse_sequence: description: NMR pulse sequence used (e.g. zgpg30, dept). range: string - slot_uri: catcore:nmr_pulse_sequence + slot_uri: coremeta4cat:nmr_pulse_sequence multivalued: true nmr_sample_tube: description: NMR sample tube type (e.g. 5mm standard, Shigemi tube). range: string - slot_uri: catcore:nmr_sample_tube + slot_uri: coremeta4cat:nmr_sample_tube multivalued: true # ---- SEM-specific ---- @@ -986,7 +986,7 @@ slots: image_resolution: description: Spatial resolution of SEM images. range: float - slot_uri: catcore:image_resolution + slot_uri: coremeta4cat:image_resolution multivalued: true unit: ucum_code: nm @@ -994,7 +994,7 @@ slots: field_emitter: description: Type of field emitter used in FE-SEM instrument. range: string - slot_uri: catcore:field_emitter + slot_uri: coremeta4cat:field_emitter multivalued: true # ---- TGA-specific ---- @@ -1002,13 +1002,13 @@ slots: reducing_gas_composition: description: Composition of reducing gas used in TPR (e.g. 5% H2/Ar). range: string - slot_uri: catcore:reducing_gas_composition + slot_uri: coremeta4cat:reducing_gas_composition multivalued: true oxidizing_gas_composition: description: Composition of oxidising gas used in TPO (e.g. 5% O2/Ar). range: string - slot_uri: catcore:oxidizing_gas_composition + slot_uri: coremeta4cat:oxidizing_gas_composition multivalued: true # ---- BET-specific ---- @@ -1016,13 +1016,13 @@ slots: adsorbate_gas: description: Adsorbate gas used in BET surface area measurement (e.g. N2, Ar). range: string - slot_uri: catcore:adsorbate_gas + slot_uri: coremeta4cat:adsorbate_gas multivalued: true degassing_temperature: description: Temperature at which sample is degassed before BET measurement. range: float - slot_uri: catcore:degassing_temperature + slot_uri: coremeta4cat:degassing_temperature multivalued: true unit: ucum_code: Cel @@ -1030,7 +1030,7 @@ slots: measurement_temperature: description: Temperature at which BET adsorption isotherm is measured (e.g. 77 K for N2). range: float - slot_uri: catcore:measurement_temperature + slot_uri: coremeta4cat:measurement_temperature multivalued: true unit: ucum_code: K @@ -1038,7 +1038,7 @@ slots: pore_size_distribution_method: description: Method used for pore size distribution calculation (e.g. BJH, DFT, HK). range: string - slot_uri: catcore:pore_size_distribution_method + slot_uri: coremeta4cat:pore_size_distribution_method multivalued: true # ---- Elemental Analysis-specific ---- @@ -1046,13 +1046,13 @@ slots: elements_analyzed: description: List of elements analysed by combustion elemental analysis (e.g. C, H, N, S). range: string - slot_uri: catcore:elements_analyzed + slot_uri: coremeta4cat:elements_analyzed multivalued: true combustion_temperature: description: Combustion furnace temperature for elemental analysis. range: float - slot_uri: catcore:combustion_temperature + slot_uri: coremeta4cat:combustion_temperature multivalued: true unit: ucum_code: Cel @@ -1068,7 +1068,7 @@ slots: matrix_effect_correction: description: Method used to correct for matrix effects in ICP-AES. range: string - slot_uri: catcore:matrix_effect_correction + slot_uri: coremeta4cat:matrix_effect_correction multivalued: true # ---- UV-Vis-specific ---- @@ -1076,7 +1076,7 @@ slots: minimum_wavelength: description: Minimum wavelength of the UV-Vis scan range. range: float - slot_uri: catcore:minimum_wavelength + slot_uri: coremeta4cat:minimum_wavelength multivalued: true unit: ucum_code: nm @@ -1084,7 +1084,7 @@ slots: maximum_wavelength: description: Maximum wavelength of the UV-Vis scan range. range: float - slot_uri: catcore:maximum_wavelength + slot_uri: coremeta4cat:maximum_wavelength multivalued: true unit: ucum_code: nm @@ -1102,13 +1102,13 @@ slots: emission_range: description: Wavelength range over which emission is detected. range: string - slot_uri: catcore:emission_range + slot_uri: coremeta4cat:emission_range multivalued: true slit_width: description: Spectrometer entrance or exit slit width. range: float - slot_uri: catcore:slit_width + slot_uri: coremeta4cat:slit_width multivalued: true unit: ucum_code: nm @@ -1116,13 +1116,13 @@ slots: lifetime_fitting_model: description: Mathematical model used for fluorescence lifetime fitting (e.g. mono-exponential, bi-exponential). range: string - slot_uri: catcore:lifetime_fitting_model + slot_uri: coremeta4cat:lifetime_fitting_model multivalued: true number_of_shots: description: Number of laser shots accumulated per measurement point. range: integer - slot_uri: catcore:number_of_shots + slot_uri: coremeta4cat:number_of_shots multivalued: true # ---- CyclicVoltammetry-specific ---- @@ -1138,7 +1138,7 @@ slots: minimum_potential: description: Lower potential limit in cyclic voltammetry. range: float - slot_uri: catcore:minimum_potential + slot_uri: coremeta4cat:minimum_potential multivalued: true unit: ucum_code: V @@ -1146,7 +1146,7 @@ slots: maximum_potential: description: Upper potential limit in cyclic voltammetry. range: float - slot_uri: catcore:maximum_potential + slot_uri: coremeta4cat:maximum_potential multivalued: true unit: ucum_code: V @@ -1164,7 +1164,7 @@ slots: electrode_configuration: description: Configuration of electrodes used in conductivity measurement (e.g. 2-probe, 4-probe). range: string - slot_uri: catcore:electrode_configuration + slot_uri: coremeta4cat:electrode_configuration multivalued: true ac_frequency: @@ -1178,13 +1178,13 @@ slots: ac_dc_mode: description: AC or DC measurement mode used in conductivity measurement. range: string - slot_uri: catcore:ac_dc_mode + slot_uri: coremeta4cat:ac_dc_mode multivalued: true sample_geometry: description: Geometry of the sample used in conductivity measurement (e.g. pellet, thin film). range: string - slot_uri: catcore:sample_geometry + slot_uri: coremeta4cat:sample_geometry multivalued: true # ---- DLS-specific ---- @@ -1200,7 +1200,7 @@ slots: scattering_angle: description: Scattering angle at which intensity is detected in DLS. range: float - slot_uri: catcore:scattering_angle + slot_uri: coremeta4cat:scattering_angle multivalued: true unit: ucum_code: deg @@ -1208,13 +1208,13 @@ slots: refractive_index: description: Refractive index of the solvent used in DLS measurement. range: float - slot_uri: catcore:refractive_index + slot_uri: coremeta4cat:refractive_index multivalued: true measurement_duration: description: Duration of a single DLS acquisition. range: float - slot_uri: catcore:measurement_duration + slot_uri: coremeta4cat:measurement_duration multivalued: true unit: ucum_code: s @@ -1232,7 +1232,7 @@ slots: capillary_temperature: description: Capillary or desolvation temperature in ESI source. range: float - slot_uri: catcore:capillary_temperature + slot_uri: coremeta4cat:capillary_temperature multivalued: true unit: ucum_code: Cel @@ -1248,13 +1248,13 @@ slots: carrier_gas_purity: description: Purity grade of the carrier gas used in GC. range: string - slot_uri: catcore:carrier_gas_purity + slot_uri: coremeta4cat:carrier_gas_purity multivalued: true inlet_temperature: description: GC inlet temperature. range: float - slot_uri: catcore:inlet_temperature + slot_uri: coremeta4cat:inlet_temperature multivalued: true unit: ucum_code: Cel @@ -1262,7 +1262,7 @@ slots: minimum_oven_temperature: description: Minimum oven temperature in GC temperature programme. range: float - slot_uri: catcore:minimum_oven_temperature + slot_uri: coremeta4cat:minimum_oven_temperature multivalued: true unit: ucum_code: Cel @@ -1270,7 +1270,7 @@ slots: maximum_oven_temperature: description: Maximum oven temperature in GC temperature programme. range: float - slot_uri: catcore:maximum_oven_temperature + slot_uri: coremeta4cat:maximum_oven_temperature multivalued: true unit: ucum_code: Cel @@ -1278,7 +1278,7 @@ slots: heating_ramp: description: Temperature ramp rate in GC oven programme. range: float - slot_uri: catcore:heating_ramp + slot_uri: coremeta4cat:heating_ramp multivalued: true unit: ucum_code: Cel/min @@ -1286,13 +1286,13 @@ slots: acquisition_mode: description: Mass spectrometer acquisition mode (e.g. full scan, SIM, SRM). range: string - slot_uri: catcore:acquisition_mode + slot_uri: coremeta4cat:acquisition_mode multivalued: true solvent_delay: description: Solvent delay time before MS acquisition begins. range: float - slot_uri: catcore:solvent_delay + slot_uri: coremeta4cat:solvent_delay multivalued: true unit: ucum_code: min @@ -1300,13 +1300,13 @@ slots: trace_ion_detection: description: Trace ion detection setting or threshold. range: string - slot_uri: catcore:trace_ion_detection + slot_uri: coremeta4cat:trace_ion_detection multivalued: true split_ratio: description: Split ratio at the GC injector. range: float - slot_uri: catcore:split_ratio + slot_uri: coremeta4cat:split_ratio multivalued: true # ---- SEC / HPLC-MS-specific ---- @@ -1320,17 +1320,17 @@ slots: calibration_standard: description: Calibration standard used for molecular weight or retention time calibration. range: string - slot_uri: catcore:calibration_standard + slot_uri: coremeta4cat:calibration_standard multivalued: true gradient_program: description: Gradient elution programme used in HPLC-MS. range: string - slot_uri: catcore:gradient_program + slot_uri: coremeta4cat:gradient_program multivalued: true ionization_mode: description: Ionisation mode used in HPLC-MS (e.g. positive, negative, APCI, ESI). range: string - slot_uri: catcore:ionization_mode + slot_uri: coremeta4cat:ionization_mode multivalued: true diff --git a/src/catcore/schema/catcore_common.yaml b/src/coremeta4cat/schema/coremeta4cat_common.yaml similarity index 84% rename from src/catcore/schema/catcore_common.yaml rename to src/coremeta4cat/schema/coremeta4cat_common.yaml index f93a93430..4a562e4ab 100644 --- a/src/catcore/schema/catcore_common.yaml +++ b/src/coremeta4cat/schema/coremeta4cat_common.yaml @@ -1,24 +1,24 @@ --- -id: https://w3id.org/nfdi4cat/catcore/common/ -name: catcore-common -title: CatCore Common — Shared Slots and Enumerations +id: https://w3id.org/nfdi4cat/coremeta4cat/common/ +name: coremeta4cat-common +title: CoreMeta4cat Common — Shared Slots and Enumerations description: |- - Shared infrastructure for all CatCore subprofiles. + Shared infrastructure for all CoreMeta4cat subprofiles. This module provides: - - Shared slots reused across two or more CatCore subprofiles + - Shared slots reused across two or more CoreMeta4cat subprofiles (atmosphere, temperature, equipment, calcination parameters, …) - Domain-level enumerations (CatalysisResearchFieldEnum, SampleStateEnum, …) - Design note: This module intentionally does NOT define a CatCoreEntity root + Design note: This module intentionally does NOT define a CoreMeta4catEntity root class. Following the DCAT-AP-PLUS design patterns, the catalysis domain is expressed at the dcat:Dataset level via rdf_type (ClassifierMixin, Pattern 3) - using voc4cat terms. The four CatCore pillars — Synthesis, Characterization, + using voc4cat terms. The four CoreMeta4cat pillars — Synthesis, Characterization, Reaction, Simulation — are modelled as DCAT-AP-PLUS Activity subclasses in their respective subprofile modules, not as subclasses of a shared root. Import hierarchy: - catcore_common.yaml (this file) + coremeta4cat_common.yaml (this file) +-- chem_dcat_ap (chemistry layer) +-- chemical_reaction_ap +-- chemical_entities_ap @@ -29,10 +29,10 @@ license: CC-BY-4.0 version: 1.0.0 prefixes: - catcore: https://w3id.org/nfdi4cat/catcore/ + coremeta4cat: https://w3id.org/nfdi4cat/coremeta4cat/ VOC4CAT: https://w3id.org/nfdi4cat/voc4cat_ chemdcatap: https://nfdi-de.github.io/chem-dcat-ap/ - dcatapplus: https://nfdi-de.github.io/dcat-ap-plus/ + dcatapplus: https://w3id.org/nfdi-de/dcat-ap-plus/ linkml: https://w3id.org/linkml/ dcterms: http://purl.org/dc/terms/ prov: http://www.w3.org/ns/prov# @@ -44,7 +44,7 @@ prefixes: AFR: http://purl.allotrope.org/ontologies/result#AFR_ AFP: http://purl.allotrope.org/ontologies/process#AFP_ -default_prefix: catcore +default_prefix: coremeta4cat default_range: string imports: @@ -53,7 +53,7 @@ imports: # ==================== SHARED SLOTS ==================== # -# A slot is placed here when it is referenced by two or more CatCore subprofiles. +# A slot is placed here when it is referenced by two or more CoreMeta4cat subprofiles. # Slots exclusive to one subprofile are declared in that subprofile file. slots: @@ -64,7 +64,7 @@ slots: atmosphere: description: Gaseous environment or atmospheric conditions during a process. range: string - slot_uri: catcore:atmosphere + slot_uri: coremeta4cat:atmosphere multivalued: true temperature: @@ -84,7 +84,7 @@ slots: flow_rate: description: Flow rate of a fluid or gas. range: float - slot_uri: catcore:flow_rate + slot_uri: coremeta4cat:flow_rate multivalued: true unit: ucum_code: mL/min @@ -92,7 +92,7 @@ slots: heating_rate: description: Rate at which temperature is increased during a process. range: float - slot_uri: catcore:heating_rate + slot_uri: coremeta4cat:heating_rate multivalued: true unit: ucum_code: Cel/min @@ -100,19 +100,19 @@ slots: heating_procedure: description: Description of the heating procedure applied. range: string - slot_uri: catcore:heating_procedure + slot_uri: coremeta4cat:heating_procedure multivalued: true number_of_cycles: description: Number of repeated cycles in a process (e.g. ALD cycles, impregnation cycles). range: integer - slot_uri: catcore:number_of_cycles + slot_uri: coremeta4cat:number_of_cycles multivalued: true sample_mass: description: Mass of the sample used in a process or measurement. range: float - slot_uri: catcore:sample_mass + slot_uri: coremeta4cat:sample_mass multivalued: true unit: ucum_code: mg @@ -126,7 +126,7 @@ slots: stirring_speed: description: Rotational speed of stirring or agitation. range: float - slot_uri: catcore:stirring_speed + slot_uri: coremeta4cat:stirring_speed multivalued: true unit: ucum_code: rpm @@ -134,7 +134,7 @@ slots: stirring_duration: description: Duration of stirring or agitation. range: float - slot_uri: catcore:stirring_duration + slot_uri: coremeta4cat:stirring_duration multivalued: true unit: ucum_code: h @@ -142,19 +142,19 @@ slots: vessel_type: description: Type of reaction or synthesis vessel used. range: string - slot_uri: catcore:vessel_type + slot_uri: coremeta4cat:vessel_type multivalued: true carrier_gas: description: Carrier gas used in a process (e.g. in GC analysis or ALD deposition). range: string - slot_uri: catcore:carrier_gas + slot_uri: coremeta4cat:carrier_gas multivalued: true dispersant: description: Dispersant used (e.g. in DLS measurement or flame spray pyrolysis). range: string - slot_uri: catcore:dispersant + slot_uri: coremeta4cat:dispersant multivalued: true # ---- Drying and calcination parameters ---- @@ -163,13 +163,13 @@ slots: drying_device: description: Device used for drying (e.g. oven, rotary evaporator). range: string - slot_uri: catcore:drying_device + slot_uri: coremeta4cat:drying_device multivalued: true drying_temperature: description: Temperature applied during drying. range: float - slot_uri: catcore:drying_temperature + slot_uri: coremeta4cat:drying_temperature multivalued: true unit: ucum_code: Cel @@ -177,7 +177,7 @@ slots: drying_time: description: Duration of the drying step. range: float - slot_uri: catcore:drying_time + slot_uri: coremeta4cat:drying_time multivalued: true unit: ucum_code: h @@ -185,7 +185,7 @@ slots: drying_atmosphere: description: Atmosphere maintained during drying (e.g. air, N2). range: string - slot_uri: catcore:drying_atmosphere + slot_uri: coremeta4cat:drying_atmosphere multivalued: true calcination_initial_temperature: @@ -246,13 +246,13 @@ slots: resolution: description: Resolution of a measurement or detector. range: float - slot_uri: catcore:resolution + slot_uri: coremeta4cat:resolution multivalued: true integration_time: description: Integration or acquisition time per measurement step. range: float - slot_uri: catcore:integration_time + slot_uri: coremeta4cat:integration_time multivalued: true unit: ucum_code: s @@ -260,7 +260,7 @@ slots: number_of_scans: description: Number of scans or accumulations recorded. range: integer - slot_uri: catcore:number_of_scans + slot_uri: coremeta4cat:number_of_scans multivalued: true operation_mode: @@ -272,7 +272,7 @@ slots: concentration: description: Concentration of a substance in a sample or solution. range: float - slot_uri: catcore:concentration + slot_uri: coremeta4cat:concentration multivalued: true unit: ucum_code: mol/L @@ -286,7 +286,7 @@ slots: injection_volume: description: Volume injected in a chromatographic or mass spectrometric experiment. range: float - slot_uri: catcore:injection_volume + slot_uri: coremeta4cat:injection_volume multivalued: true unit: ucum_code: uL @@ -294,25 +294,25 @@ slots: external_standard: description: External standard used for quantification or calibration. range: string - slot_uri: catcore:external_standard + slot_uri: coremeta4cat:external_standard multivalued: true internal_standard: description: Internal standard used for quantification or calibration. range: string - slot_uri: catcore:internal_standard + slot_uri: coremeta4cat:internal_standard multivalued: true calibration_method: description: Calibration method applied during a measurement. range: string - slot_uri: catcore:calibration_method + slot_uri: coremeta4cat:calibration_method multivalued: true column_type: description: Type of chromatographic column used. range: string - slot_uri: catcore:column_type + slot_uri: coremeta4cat:column_type multivalued: true experiment_duration: @@ -326,13 +326,13 @@ slots: filtration_device: description: Device used for filtration. range: string - slot_uri: catcore:filtration_device + slot_uri: coremeta4cat:filtration_device multivalued: true filter_type: description: Type of filter membrane or medium used. range: string - slot_uri: catcore:filter_type + slot_uri: coremeta4cat:filter_type multivalued: true # ==================== ENUMERATIONS ==================== diff --git a/src/catcore/schema/catcore_reaction_ap.yaml b/src/coremeta4cat/schema/coremeta4cat_reaction_ap.yaml similarity index 86% rename from src/catcore/schema/catcore_reaction_ap.yaml rename to src/coremeta4cat/schema/coremeta4cat_reaction_ap.yaml index 4813e7ebf..c5f7e3fba 100644 --- a/src/catcore/schema/catcore_reaction_ap.yaml +++ b/src/coremeta4cat/schema/coremeta4cat_reaction_ap.yaml @@ -1,16 +1,16 @@ --- -id: https://w3id.org/nfdi4cat/catcore/reaction/ -name: catcore-reaction-ap -title: CatCore Reaction Application Profile +id: https://w3id.org/nfdi4cat/coremeta4cat/reaction/ +name: coremeta4cat-reaction-ap +title: CoreMeta4cat Reaction Application Profile description: |- - Application profile for catalytic reactions within the CatCore metadata model. + Application profile for catalytic reactions within the CoreMeta4cat metadata model. This module defines: - Reaction — an EvaluatedActivity representing the catalytic process being studied - ReactorDesignType — Device subclass hierarchy (8 concrete reactor types) - OperationParameters — flattened as direct slots on Reaction (see note below) - ProductIdentificationMethod — abstract stub; users point to a - CharacterizationTechnique instance from catcore_characterization_ap + CharacterizationTechnique instance from coremeta4cat_characterization_ap Alignment to DCAT-AP-PLUS: Reaction --> is_a: EvaluatedActivity (the process being studied, @@ -25,10 +25,10 @@ description: |- OperationParameters design decision: ------------------------------------- - The original CatCore model wraps operation parameters in a nested class. + The original CoreMeta4Cat model wraps operation parameters in a nested class. In this modularised form they are flattened as direct slots on Reaction, consistent with how preparation method parameters are handled on - PreparationMethod subclasses in catcore_synthesis_ap. This avoids + PreparationMethod subclasses in coremeta4cat_synthesis_ap. This avoids an unnecessary wrapper object while preserving all the same information. ProductIdentificationMethod design decision: @@ -36,16 +36,16 @@ description: |- The source defines ProductIdentificationMethod as an abstract class with no concrete subclasses — it is a forward reference to analytical techniques. Users should link a CharacterizationTechnique instance (defined in - catcore_characterization_ap) via product_identification_method. The abstract + coremeta4cat_characterization_ap) via product_identification_method. The abstract stub is retained for backward compatibility and schema completeness. license: CC-BY-4.0 version: 1.0.0 prefixes: - catcore: https://w3id.org/nfdi4cat/catcore/ + coremeta4cat: https://w3id.org/nfdi4cat/coremeta4cat/ VOC4CAT: https://w3id.org/nfdi4cat/voc4cat_ - dcatapplus: https://nfdi-de.github.io/dcat-ap-plus/ + dcatapplus: https://w3id.org/nfdi-de/dcat-ap-plus/ linkml: https://w3id.org/linkml/ prov: http://www.w3.org/ns/prov# OBI: http://purl.obolibrary.org/obo/OBI_ @@ -53,12 +53,12 @@ prefixes: SIO: http://semanticscience.org/resource/SIO_ AFR: http://purl.allotrope.org/ontologies/result#AFR_ -default_prefix: catcore +default_prefix: coremeta4cat default_range: string imports: - linkml:types - - catcore_common # shared slots (atmosphere, flow_rate, temperature, …) + enums + - coremeta4cat_common # shared slots (atmosphere, flow_rate, temperature, …) + enums # ==================== REACTION (EvaluatedActivity) ==================== @@ -117,7 +117,7 @@ classes: description: |- The analytical method used to identify and/or quantify reaction products. Should reference a CharacterizationTechnique instance (e.g. a GCMS or - HPLC_MS object from catcore_characterization_ap). The abstract stub + HPLC_MS object from coremeta4cat_characterization_ap). The abstract stub ProductIdentificationMethod is retained for backward compatibility. range: ProductIdentificationMethod required: true @@ -133,10 +133,10 @@ classes: description: |- Abstract Plan representing the method used to identify and quantify reaction products. In practice, users should reference a concrete CharacterizationTechnique - subclass from catcore_characterization_ap (e.g. GCMS, HPLC_MS, NMRSpectroscopy). + subclass from coremeta4cat_characterization_ap (e.g. GCMS, HPLC_MS, NMRSpectroscopy). This abstract class is retained for backward compatibility with the original - CatCore monolith. It is a subclass of Plan (prov:Plan / OBI:0000272) so that + CoreMeta4Cat monolith. It is a subclass of Plan (prov:Plan / OBI:0000272) so that it can participate in the realized_plan slot if needed. # ==================== REACTOR DESIGN TYPES (Devices) ==================== @@ -183,7 +183,7 @@ classes: SlurryReactor: is_a: ReactorDesignType - class_uri: catcore:SlurryReactor + class_uri: coremeta4cat:SlurryReactor description: |- Slurry reactor — a three-phase reactor in which catalyst particles are suspended in a liquid phase through which gas is bubbled. @@ -198,14 +198,14 @@ classes: FixedBedReactor: is_a: ReactorDesignType - class_uri: catcore:FixedBedReactor + class_uri: coremeta4cat:FixedBedReactor description: |- Fixed bed reactor — a tubular reactor packed with a stationary catalyst bed. The most common reactor type in heterogeneous catalysis testing. FluidizedBedReactor: is_a: ReactorDesignType - class_uri: catcore:FluidizedBedReactor + class_uri: coremeta4cat:FluidizedBedReactor description: |- Fluidized bed reactor — a reactor in which the catalyst particles are suspended in an upward-flowing gas or liquid stream. @@ -216,7 +216,7 @@ classes: # ==================== SLOTS ==================== # Shared slots (atmosphere, flow_rate, temperature, experiment_duration, …) -# are inherited from catcore_common and not redeclared here. +# are inherited from coremeta4cat_common and not redeclared here. slots: @@ -225,7 +225,7 @@ slots: catalyst_quantity: description: Mass of catalyst loaded into the reactor. range: float - slot_uri: catcore:catalyst_quantity + slot_uri: coremeta4cat:catalyst_quantity required: true multivalued: true unit: @@ -272,23 +272,23 @@ slots: Feed gas or liquid composition range studied (e.g. "1–10 vol% CO in N2"). Record as a string; for individual component concentrations use reactant. range: string - slot_uri: catcore:feed_composition_range + slot_uri: coremeta4cat:feed_composition_range multivalued: true - # experiment_duration is inherited from catcore_common (AFR:0002455, unit h) + # experiment_duration is inherited from coremeta4cat_common (AFR:0002455, unit h) # ---- FluidizedBedReactor-specific slots ---- gas_distributor_type: description: Type or design of the gas distributor plate in a fluidized bed reactor. range: string - slot_uri: catcore:gas_distributor_type + slot_uri: coremeta4cat:gas_distributor_type multivalued: true bed_expansion_height: description: Height of bed expansion above the settled bed height under operating conditions. range: float - slot_uri: catcore:bed_expansion_height + slot_uri: coremeta4cat:bed_expansion_height multivalued: true unit: ucum_code: cm @@ -296,4 +296,4 @@ slots: bubble_size_distribution: description: Description or characterization of bubble size distribution in the fluidized bed. range: string - slot_uri: catcore:bubble_size_distribution + slot_uri: coremeta4cat:bubble_size_distribution diff --git a/src/catcore/schema/catcore_simulation_ap.yaml b/src/coremeta4cat/schema/coremeta4cat_simulation_ap.yaml similarity index 85% rename from src/catcore/schema/catcore_simulation_ap.yaml rename to src/coremeta4cat/schema/coremeta4cat_simulation_ap.yaml index cc8379f91..fda0b7655 100644 --- a/src/catcore/schema/catcore_simulation_ap.yaml +++ b/src/coremeta4cat/schema/coremeta4cat_simulation_ap.yaml @@ -1,9 +1,9 @@ --- -id: https://w3id.org/nfdi4cat/catcore/simulation/ -name: catcore-simulation-ap -title: CatCore Simulation Application Profile +id: https://w3id.org/nfdi4cat/coremeta4cat/simulation/ +name: coremeta4cat-simulation-ap +title: CoreMeta4cat Simulation Application Profile description: |- - Application profile for computational simulations within the CatCore metadata model. + Application profile for computational simulations within the CoreMeta4cat metadata model. This module defines: - Simulation — the DataGeneratingActivity in which a catalyst or catalytic @@ -22,7 +22,7 @@ description: |- CalculatedProperty --> is_a: QualitativeAttribute (output property descriptor) The specific simulation type is expressed via rdf_type on Simulation using an - ontology term (e.g. catcore:DFT, NCIT:C18097 for MD), following DCAT-AP-PLUS + ontology term (e.g. coremeta4cat:DFT, NCIT:C18097 for MD), following DCAT-AP-PLUS Pattern 3 — exactly as NMRSpectroscopy uses rdf_type: CHMO:0000613. The simulation software is linked via carried_out_by as a Software agent. @@ -40,9 +40,9 @@ license: CC-BY-4.0 version: 1.0.0 prefixes: - catcore: https://w3id.org/nfdi4cat/catcore/ + coremeta4cat: https://w3id.org/nfdi4cat/coremeta4cat/ VOC4CAT: https://w3id.org/nfdi4cat/voc4cat_ - dcatapplus: https://nfdi-de.github.io/dcat-ap-plus/ + dcatapplus: https://w3id.org/nfdi-de/dcat-ap-plus/ linkml: https://w3id.org/linkml/ prov: http://www.w3.org/ns/prov# OBI: http://purl.obolibrary.org/obo/OBI_ @@ -51,12 +51,12 @@ prefixes: AFR: http://purl.allotrope.org/ontologies/result#AFR_ APOLLO_SV: http://purl.obolibrary.org/obo/APOLLO_SV_ -default_prefix: catcore +default_prefix: coremeta4cat default_range: string imports: - linkml:types - - catcore_common # shared slots (temperature, pressure, …) + enums + - coremeta4cat_common # shared slots (temperature, pressure, …) + enums # ==================== MIXINS ==================== @@ -99,7 +99,7 @@ classes: SimulationMethod instance. The catalyst model or reaction being simulated is linked via evaluated_entity or evaluated_activity. - The specific simulation type is expressed via rdf_type (e.g. catcore:DFT, + The specific simulation type is expressed via rdf_type (e.g. coremeta4cat:DFT, NCIT:C18097 for molecular dynamics), following DCAT-AP-PLUS Pattern 3. slots: - software_package @@ -107,8 +107,8 @@ classes: slot_usage: rdf_type: description: |- - The type of simulation method as an ontology term (e.g. catcore:DFT, - NCIT:C18097 for MD, catcore:Microkinetics). This is the primary + The type of simulation method as an ontology term (e.g. coremeta4cat:DFT, + NCIT:C18097 for MD, coremeta4cat:Microkinetics). This is the primary machine-actionable classification of the simulation type. recommended: true realized_plan: @@ -146,7 +146,7 @@ classes: DFT: is_a: SimulationMethod - class_uri: catcore:DFT + class_uri: coremeta4cat:DFT description: |- Density functional theory — a quantum mechanical method for calculating the electronic structure of atoms, molecules, and periodic solids. @@ -175,7 +175,7 @@ classes: Microkinetics: is_a: SimulationMethod - class_uri: catcore:Microkinetics + class_uri: coremeta4cat:Microkinetics description: |- Microkinetic modelling — a mean-field kinetic approach that integrates elementary reaction steps and their rate constants to predict catalytic @@ -190,7 +190,7 @@ classes: MonteCarlo: is_a: SimulationMethod - class_uri: catcore:MonteCarlo + class_uri: coremeta4cat:MonteCarlo description: |- Monte Carlo simulation — a stochastic method that samples configuration space using random moves accepted or rejected according to a statistical @@ -209,7 +209,7 @@ classes: CalculatedProperty: is_a: QualitativeAttribute - class_uri: catcore:CalculatedProperty + class_uri: coremeta4cat:CalculatedProperty abstract: true description: |- Abstract QualitativeAttribute representing a property computed by a @@ -219,7 +219,7 @@ classes: ThermodynamicStability: is_a: CalculatedProperty - class_uri: catcore:ThermodynamicStability + class_uri: coremeta4cat:ThermodynamicStability description: |- Thermodynamic stability of a material or phase, characterised by formation energy, convex hull distance, and competing phases. Used to screen catalyst @@ -233,7 +233,7 @@ classes: Piezoelectricity: is_a: CalculatedProperty - class_uri: catcore:Piezoelectricity + class_uri: coremeta4cat:Piezoelectricity description: |- Piezoelectric response of a non-centrosymmetric material, described by the piezoelectric tensor. Relevant for piezocatalysis applications. @@ -245,7 +245,7 @@ classes: ElasticConstants: is_a: CalculatedProperty - class_uri: catcore:ElasticConstants + class_uri: coremeta4cat:ElasticConstants description: |- Elastic mechanical properties of a material derived from the elastic tensor, including bulk modulus, shear modulus, and Young's modulus. @@ -258,7 +258,7 @@ classes: Surfaces: is_a: CalculatedProperty - class_uri: catcore:Surfaces + class_uri: coremeta4cat:Surfaces description: |- Surface properties of a catalyst computed from a periodic slab model, including surface energy, Miller index, slab thickness, and vacuum spacing. @@ -272,7 +272,7 @@ classes: DielectricTensors: is_a: CalculatedProperty - class_uri: catcore:DielectricTensors + class_uri: coremeta4cat:DielectricTensors mixins: - MaterialDescriptorMixin - DFTSettingsMixin @@ -285,7 +285,7 @@ classes: PhononDispersion: is_a: CalculatedProperty - class_uri: catcore:PhononDispersion + class_uri: coremeta4cat:PhononDispersion mixins: - MaterialDescriptorMixin description: |- @@ -300,7 +300,7 @@ classes: EquationsOfState: is_a: CalculatedProperty - class_uri: catcore:EquationsOfState + class_uri: coremeta4cat:EquationsOfState mixins: - MaterialDescriptorMixin - DFTSettingsMixin @@ -316,7 +316,7 @@ classes: AqueousStability: is_a: CalculatedProperty - class_uri: catcore:AqueousStability + class_uri: coremeta4cat:AqueousStability mixins: - MaterialDescriptorMixin description: |- @@ -332,7 +332,7 @@ classes: GrainBoundaries: is_a: CalculatedProperty - class_uri: catcore:GrainBoundaries + class_uri: coremeta4cat:GrainBoundaries mixins: - MaterialDescriptorMixin description: |- @@ -350,7 +350,7 @@ classes: ElectronicStructure: is_a: CalculatedProperty - class_uri: catcore:ElectronicStructure + class_uri: coremeta4cat:ElectronicStructure mixins: - MaterialDescriptorMixin - DFTSettingsMixin @@ -366,7 +366,7 @@ classes: Ferroelectrics: is_a: CalculatedProperty - class_uri: catcore:Ferroelectrics + class_uri: coremeta4cat:Ferroelectrics mixins: - MaterialDescriptorMixin description: |- @@ -383,7 +383,7 @@ classes: BandGap: is_a: CalculatedProperty - class_uri: catcore:BandGap + class_uri: coremeta4cat:BandGap mixins: - MaterialDescriptorMixin - DFTSettingsMixin @@ -401,7 +401,7 @@ classes: - excitonic_correction # ==================== SLOTS ==================== -# Shared slots (temperature, pressure, …) are inherited from catcore_common. +# Shared slots (temperature, pressure, …) are inherited from coremeta4cat_common. slots: @@ -412,7 +412,7 @@ slots: Software package or code used for the simulation (e.g. VASP, Quantum ESPRESSO, LAMMPS, CP2K, ORCA, Zacros). Include version number where possible. range: string - slot_uri: catcore:software_package + slot_uri: coremeta4cat:software_package required: true multivalued: true @@ -421,7 +421,7 @@ slots: A property computed by this Simulation, provided as a CalculatedProperty instance. Multiple properties may be computed in a single simulation run. range: CalculatedProperty - slot_uri: catcore:calculated_property + slot_uri: coremeta4cat:calculated_property required: true multivalued: true inlined_as_list: true @@ -433,13 +433,13 @@ slots: Exchange-correlation functional used (e.g. PBE, PBEsol, RPBE, B3LYP, HSE06). The choice of functional directly affects accuracy. range: string - slot_uri: catcore:exchange_correlation_functional + slot_uri: coremeta4cat:exchange_correlation_functional multivalued: true energy_cutoff: description: Plane-wave kinetic energy cutoff for the basis set expansion. range: float - slot_uri: catcore:energy_cutoff + slot_uri: coremeta4cat:energy_cutoff multivalued: true unit: ucum_code: eV @@ -449,7 +449,7 @@ slots: Convergence thresholds applied during self-consistent field (SCF) and/or geometry optimisation (e.g. energy < 1e-5 eV, forces < 0.02 eV/Å). range: string - slot_uri: catcore:convergence_criteria + slot_uri: coremeta4cat:convergence_criteria multivalued: true dft_u_parameters: @@ -457,7 +457,7 @@ slots: Hubbard U correction parameters (DFT+U). Specify element, orbital, and U value (e.g. "Fe d: U=4.0 eV, J=0.0 eV"). range: string - slot_uri: catcore:dft_u_parameters + slot_uri: coremeta4cat:dft_u_parameters multivalued: true spin_polarization: @@ -465,13 +465,13 @@ slots: Whether spin polarization (collinear magnetism) is included in the DFT calculation. Set to true for systems containing magnetic elements. range: boolean - slot_uri: catcore:spin_polarization + slot_uri: coremeta4cat:spin_polarization multivalued: true total_energy_per_atom: description: Total DFT ground-state energy divided by number of atoms in the unit cell. range: float - slot_uri: catcore:total_energy_per_atom + slot_uri: coremeta4cat:total_energy_per_atom multivalued: true unit: ucum_code: eV @@ -483,7 +483,7 @@ slots: Force field or interatomic potential used (e.g. ReaxFF, CHARMM, Tersoff, EAM). Include parametrisation source or reference. range: string - slot_uri: catcore:force_field + slot_uri: coremeta4cat:force_field multivalued: true simulation_timestep: @@ -497,7 +497,7 @@ slots: simulation_time: description: Total simulated physical time of the MD trajectory. range: float - slot_uri: catcore:simulation_time + slot_uri: coremeta4cat:simulation_time multivalued: true unit: ucum_code: ps @@ -507,13 +507,13 @@ slots: Statistical ensemble used in MD (e.g. NVE, NVT, NPT). Determines which thermodynamic quantities are conserved. range: string - slot_uri: catcore:ensemble_type + slot_uri: coremeta4cat:ensemble_type multivalued: true number_of_atoms: description: Number of atoms in the simulation cell or supercell. range: integer - slot_uri: catcore:number_of_atoms + slot_uri: coremeta4cat:number_of_atoms multivalued: true # ---- Microkinetics method slots ---- @@ -531,13 +531,13 @@ slots: Numerical solver used for the microkinetic rate equations (e.g. LSODA, stiff ODE solver, steady-state Newton method). range: string - slot_uri: catcore:solver_type + slot_uri: coremeta4cat:solver_type multivalued: true pressure: description: Total pressure used in microkinetic or Monte Carlo simulation. range: float - slot_uri: catcore:pressure + slot_uri: coremeta4cat:pressure multivalued: true unit: ucum_code: bar @@ -545,13 +545,13 @@ slots: surface_coverage: description: Surface coverage of adsorbed species (fraction of surface sites occupied). range: float - slot_uri: catcore:surface_coverage + slot_uri: coremeta4cat:surface_coverage multivalued: true activation_energy: description: Activation energy for each elementary step in the reaction mechanism. range: float - slot_uri: catcore:activation_energy + slot_uri: coremeta4cat:activation_energy multivalued: true unit: ucum_code: eV @@ -561,13 +561,13 @@ slots: interaction_potential: description: Interaction potential or Hamiltonian used to compute energies in MC moves. range: string - slot_uri: catcore:interaction_potential + slot_uri: coremeta4cat:interaction_potential multivalued: true number_of_steps: description: Total number of Monte Carlo moves or trial configurations generated. range: integer - slot_uri: catcore:number_of_steps + slot_uri: coremeta4cat:number_of_steps multivalued: true lattice_size_type: @@ -575,7 +575,7 @@ slots: Lattice geometry and dimensions used in lattice-based MC (e.g. "100×100 square lattice", "hexagonal 50×50"). range: string - slot_uri: catcore:lattice_size_type + slot_uri: coremeta4cat:lattice_size_type multivalued: true acceptance_criteria: @@ -583,19 +583,19 @@ slots: Criterion for accepting or rejecting MC moves (e.g. Metropolis, Kawasaki, heat-bath algorithm). range: string - slot_uri: catcore:acceptance_criteria + slot_uri: coremeta4cat:acceptance_criteria multivalued: true equilibration_steps: description: Number of MC steps used for equilibration before data collection begins. range: integer - slot_uri: catcore:equilibration_steps + slot_uri: coremeta4cat:equilibration_steps multivalued: true sampling_interval: description: Interval between successive MC snapshots used for property averaging. range: integer - slot_uri: catcore:sampling_interval + slot_uri: coremeta4cat:sampling_interval multivalued: true # ---- MaterialDescriptorMixin slots ---- @@ -605,7 +605,7 @@ slots: Chemical composition of the simulated material (e.g. "Fe2O3", "Pt/CeO2"). Use empirical formula or SMILES for molecular systems. range: string - slot_uri: catcore:material_composition + slot_uri: coremeta4cat:material_composition multivalued: true crystal_structure: @@ -623,7 +623,7 @@ slots: Monkhorst-Pack k-point mesh used for Brillouin zone sampling (e.g. "4×4×1" for a surface slab, "8×8×8" for a bulk cell). range: string - slot_uri: catcore:k_point_mesh + slot_uri: coremeta4cat:k_point_mesh multivalued: true # ---- ThermodynamicStability slots ---- @@ -631,7 +631,7 @@ slots: formation_energy: description: Formation energy per atom relative to elemental reference states. range: float - slot_uri: catcore:formation_energy + slot_uri: coremeta4cat:formation_energy multivalued: true unit: ucum_code: eV @@ -641,7 +641,7 @@ slots: Elemental reference energies used to compute formation energies (e.g. DFT total energies of elemental ground-state structures). range: string - slot_uri: catcore:reference_energies + slot_uri: coremeta4cat:reference_energies multivalued: true energy_above_hull: @@ -649,7 +649,7 @@ slots: Distance above the convex hull of stable phases (thermodynamic stability metric). Zero for phases on the hull; positive values indicate metastability. range: float - slot_uri: catcore:energy_above_hull + slot_uri: coremeta4cat:energy_above_hull multivalued: true unit: ucum_code: eV @@ -657,7 +657,7 @@ slots: phase_diagram_type: description: Type of phase diagram constructed (e.g. binary, ternary, quaternary). range: string - slot_uri: catcore:phase_diagram_type + slot_uri: coremeta4cat:phase_diagram_type multivalued: true competing_phases: @@ -665,7 +665,7 @@ slots: List of stable competing phases used in convex hull construction (e.g. "Fe2O3, Fe3O4, FeO, Fe"). range: string - slot_uri: catcore:competing_phases + slot_uri: coremeta4cat:competing_phases multivalued: true # ---- Piezoelectricity slots ---- @@ -675,19 +675,19 @@ slots: Components of the piezoelectric tensor e_ij (C/m²) or d_ij (pC/N), describing the coupling between stress and electric polarization. range: string - slot_uri: catcore:piezoelectric_tensor + slot_uri: coremeta4cat:piezoelectric_tensor multivalued: true crystal_symmetry: description: Point group or space group symmetry of the crystal structure. range: string - slot_uri: catcore:crystal_symmetry + slot_uri: coremeta4cat:crystal_symmetry multivalued: true strain_applied: description: Magnitude of applied strain in the piezoelectric calculation. range: float - slot_uri: catcore:strain_applied + slot_uri: coremeta4cat:strain_applied multivalued: true ionic_electronic_contributions: @@ -695,7 +695,7 @@ slots: Decomposition of the piezoelectric or dielectric response into ionic (nuclear) and electronic contributions. range: string - slot_uri: catcore:ionic_electronic_contributions + slot_uri: coremeta4cat:ionic_electronic_contributions multivalued: true # ---- ElasticConstants slots ---- @@ -705,13 +705,13 @@ slots: Full Voigt-notation elastic tensor C_ij (GPa) describing the linear elastic response of the material. range: string - slot_uri: catcore:elastic_tensor + slot_uri: coremeta4cat:elastic_tensor multivalued: true bulk_modulus: description: Bulk modulus (resistance to uniform compression). range: float - slot_uri: catcore:bulk_modulus + slot_uri: coremeta4cat:bulk_modulus multivalued: true unit: ucum_code: GPa @@ -719,7 +719,7 @@ slots: shear_modulus: description: Shear modulus (resistance to shear deformation). range: float - slot_uri: catcore:shear_modulus + slot_uri: coremeta4cat:shear_modulus multivalued: true unit: ucum_code: GPa @@ -727,13 +727,13 @@ slots: poisson_ratio: description: Poisson's ratio (ratio of transverse to axial strain under uniaxial load). range: float - slot_uri: catcore:poisson_ratio + slot_uri: coremeta4cat:poisson_ratio multivalued: true young_modulus: description: Young's modulus (stiffness under uniaxial tension or compression). range: float - slot_uri: catcore:young_modulus + slot_uri: coremeta4cat:young_modulus multivalued: true unit: ucum_code: GPa @@ -745,7 +745,7 @@ slots: Cleavage energy per unit area required to create the surface from the bulk. A lower value indicates a more stable surface facet. range: float - slot_uri: catcore:surface_energy + slot_uri: coremeta4cat:surface_energy multivalued: true unit: ucum_code: J/m2 @@ -754,13 +754,13 @@ slots: description: |- Miller indices of the modelled surface facet (e.g. "(111)", "(110)", "(100)"). range: string - slot_uri: catcore:miller_indices + slot_uri: coremeta4cat:miller_indices multivalued: true slab_thickness: description: Thickness of the periodic slab model used to represent the surface. range: float - slot_uri: catcore:slab_thickness + slot_uri: coremeta4cat:slab_thickness multivalued: true unit: ucum_code: Ao # angstrom @@ -770,7 +770,7 @@ slots: Vacuum layer thickness added above the slab to prevent spurious periodic interactions between slab images. range: float - slot_uri: catcore:vacuum_spacing + slot_uri: coremeta4cat:vacuum_spacing multivalued: true unit: ucum_code: Ao # angstrom @@ -780,7 +780,7 @@ slots: Method used to terminate the slab and handle dangling bonds (e.g. H-passivation, OH-termination, dipole correction). range: string - slot_uri: catcore:surface_termination_method + slot_uri: coremeta4cat:surface_termination_method multivalued: true # ---- DielectricTensors slots ---- @@ -790,7 +790,7 @@ slots: Components of the static and/or high-frequency dielectric tensor epsilon_ij, computed from DFPT. range: string - slot_uri: catcore:dielectric_tensor + slot_uri: coremeta4cat:dielectric_tensor multivalued: true born_effective_charges: @@ -798,7 +798,7 @@ slots: Born effective charge tensors Z*_ij for each atom, describing how the polarization changes with atomic displacements. range: string - slot_uri: catcore:born_effective_charges + slot_uri: coremeta4cat:born_effective_charges multivalued: true # ---- PhononDispersion slots ---- @@ -808,7 +808,7 @@ slots: Method used to compute the interatomic force constants (e.g. finite differences / supercell method, DFPT/linear response). range: string - slot_uri: catcore:force_constant_method + slot_uri: coremeta4cat:force_constant_method multivalued: true kq_point_mesh: @@ -816,13 +816,13 @@ slots: k/q-point mesh for phonon Brillouin zone sampling (e.g. "8×8×8"). Distinct from the electronic k-point mesh. range: string - slot_uri: catcore:kq_point_mesh + slot_uri: coremeta4cat:kq_point_mesh multivalued: true smearing_parameter: description: Smearing or broadening parameter applied to the phonon density of states. range: float - slot_uri: catcore:smearing_parameter + slot_uri: coremeta4cat:smearing_parameter multivalued: true unit: ucum_code: eV @@ -832,7 +832,7 @@ slots: Whether imaginary (soft) phonon modes are present in the dispersion. Imaginary modes indicate dynamical instability of the structure. range: boolean - slot_uri: catcore:imaginary_modes + slot_uri: coremeta4cat:imaginary_modes multivalued: true # ---- EquationsOfState slots ---- @@ -842,19 +842,19 @@ slots: Parametric model used to fit the energy-volume curve (e.g. Birch-Murnaghan 3rd order, Vinet, Murnaghan). range: string - slot_uri: catcore:fit_method + slot_uri: coremeta4cat:fit_method multivalued: true pressure_derivative: description: Pressure derivative of the bulk modulus B' (dimensionless). range: float - slot_uri: catcore:pressure_derivative + slot_uri: coremeta4cat:pressure_derivative multivalued: true fit_residuals: description: Root-mean-square residuals of the energy-volume fit. range: float - slot_uri: catcore:fit_residuals + slot_uri: coremeta4cat:fit_residuals multivalued: true # ---- AqueousStability slots ---- @@ -862,7 +862,7 @@ slots: ph_range: description: pH range covered in the Pourbaix stability diagram (e.g. "0–14"). range: string - slot_uri: catcore:ph_range + slot_uri: coremeta4cat:ph_range multivalued: true potential_range: @@ -870,7 +870,7 @@ slots: Electrode potential range covered in the Pourbaix diagram (e.g. "-2 to +2 V vs SHE"). range: string - slot_uri: catcore:potential_range + slot_uri: coremeta4cat:potential_range multivalued: true solvation_model: @@ -878,13 +878,13 @@ slots: Implicit solvation model used to account for aqueous environment (e.g. VASPsol, SCCS/Environ, COSMO). range: string - slot_uri: catcore:solvation_model + slot_uri: coremeta4cat:solvation_model multivalued: true ionic_strength: description: Ionic strength of the electrolyte solution modelled. range: float - slot_uri: catcore:ionic_strength + slot_uri: coremeta4cat:ionic_strength multivalued: true unit: ucum_code: mol/L @@ -896,13 +896,13 @@ slots: Crystallographic plane of the grain boundary, expressed using Miller indices (e.g. "Sigma5 (310)[001]"). range: string - slot_uri: catcore:grain_boundary_plane + slot_uri: coremeta4cat:grain_boundary_plane multivalued: true misorientation_angle: description: Misorientation angle between adjacent grains at the boundary. range: float - slot_uri: catcore:misorientation_angle + slot_uri: coremeta4cat:misorientation_angle multivalued: true unit: ucum_code: deg @@ -910,7 +910,7 @@ slots: grain_boundary_energy: description: Excess energy per unit area of the grain boundary. range: float - slot_uri: catcore:grain_boundary_energy + slot_uri: coremeta4cat:grain_boundary_energy multivalued: true unit: ucum_code: J/m2 @@ -920,13 +920,13 @@ slots: Dimensions of the simulation cell used to model the grain boundary (e.g. "10×10×30 nm"). range: string - slot_uri: catcore:simulation_cell_size + slot_uri: coremeta4cat:simulation_cell_size multivalued: true gb_excess_volume: description: Excess volume per unit area associated with the grain boundary. range: float - slot_uri: catcore:gb_excess_volume + slot_uri: coremeta4cat:gb_excess_volume multivalued: true gb_structural_units: @@ -934,7 +934,7 @@ slots: Description of the structural units (repeating atomic motifs) that constitute the grain boundary structure. range: string - slot_uri: catcore:gb_structural_units + slot_uri: coremeta4cat:gb_structural_units multivalued: true charge_defect_segregation: @@ -942,7 +942,7 @@ slots: Data describing charge carrier or point defect segregation behaviour at the grain boundary (e.g. segregation energy per defect type). range: string - slot_uri: catcore:charge_defect_segregation + slot_uri: coremeta4cat:charge_defect_segregation multivalued: true # ---- ElectronicStructure slots ---- @@ -952,7 +952,7 @@ slots: Electronic smearing scheme and width used in the SCF calculation (e.g. Methfessel-Paxton order 1 with sigma=0.2 eV, Gaussian with sigma=0.05 eV). range: string - slot_uri: catcore:smearing_method + slot_uri: coremeta4cat:smearing_method multivalued: true spin_polarized: @@ -960,7 +960,7 @@ slots: Whether the electronic structure calculation is spin-polarized (accounts for spin-up and spin-down electrons separately). range: boolean - slot_uri: catcore:spin_polarized + slot_uri: coremeta4cat:spin_polarized multivalued: true band_path: @@ -968,13 +968,13 @@ slots: High-symmetry k-path through the Brillouin zone used to plot the band structure (e.g. "Gamma-X-M-Gamma-R" for cubic, following SeeK-path convention). range: string - slot_uri: catcore:band_path + slot_uri: coremeta4cat:band_path multivalued: true fermi_energy: description: Fermi energy (chemical potential of electrons) in the calculated system. range: float - slot_uri: catcore:fermi_energy + slot_uri: coremeta4cat:fermi_energy multivalued: true unit: ucum_code: eV @@ -986,13 +986,13 @@ slots: Crystallographic direction of the spontaneous electric polarization (e.g. "[001]" for tetragonal BaTiO_3). range: string - slot_uri: catcore:polarization_direction + slot_uri: coremeta4cat:polarization_direction multivalued: true spontaneous_polarization: description: Magnitude of the spontaneous electric polarization. range: float - slot_uri: catcore:spontaneous_polarization + slot_uri: coremeta4cat:spontaneous_polarization multivalued: true unit: ucum_code: uC/cm2 @@ -1002,13 +1002,13 @@ slots: Reference (paraelectric/centrosymmetric) structure used as the zero- polarization endpoint in the Berry-phase polarization calculation. range: string - slot_uri: catcore:reference_structure + slot_uri: coremeta4cat:reference_structure multivalued: true switching_barrier: description: Energy barrier for polarization switching between equivalent states. range: float - slot_uri: catcore:switching_barrier + slot_uri: coremeta4cat:switching_barrier multivalued: true unit: ucum_code: eV @@ -1016,7 +1016,7 @@ slots: coercive_field: description: Electric field required to reverse the polarization direction. range: float - slot_uri: catcore:coercive_field + slot_uri: coremeta4cat:coercive_field multivalued: true unit: ucum_code: kV/cm @@ -1024,7 +1024,7 @@ slots: temperature_dependence: description: Description of how the ferroelectric properties vary with temperature. range: string - slot_uri: catcore:temperature_dependence + slot_uri: coremeta4cat:temperature_dependence multivalued: true # ---- BandGap slots ---- @@ -1042,13 +1042,13 @@ slots: Model structure used in the band gap calculation (e.g. bulk unit cell, surface slab, defect supercell). range: string - slot_uri: catcore:structure_model + slot_uri: coremeta4cat:structure_model multivalued: true smearing_broadening: description: Gaussian or Lorentzian broadening applied to the simulated spectrum. range: float - slot_uri: catcore:smearing_broadening + slot_uri: coremeta4cat:smearing_broadening multivalued: true unit: ucum_code: eV @@ -1058,13 +1058,13 @@ slots: Band gap character: "direct" (VBM and CBM at same k-point) or "indirect" (VBM and CBM at different k-points). range: string - slot_uri: catcore:direct_indirect + slot_uri: coremeta4cat:direct_indirect multivalued: true experimental_reference: description: Experimental band gap value used for benchmarking the calculation. range: float - slot_uri: catcore:experimental_reference + slot_uri: coremeta4cat:experimental_reference multivalued: true unit: ucum_code: eV @@ -1074,7 +1074,7 @@ slots: Whether a many-body GW correction or hybrid functional (e.g. HSE06) was applied to correct the DFT band gap underestimation. range: boolean - slot_uri: catcore:gw_hybrid_correction + slot_uri: coremeta4cat:gw_hybrid_correction multivalued: true excitonic_correction: @@ -1082,7 +1082,7 @@ slots: Excitonic correction (from Bethe-Salpeter equation) applied to the optical band gap. range: float - slot_uri: catcore:excitonic_correction + slot_uri: coremeta4cat:excitonic_correction multivalued: true unit: ucum_code: eV diff --git a/src/catcore/schema/catcore_synthesis_ap.yaml b/src/coremeta4cat/schema/coremeta4cat_synthesis_ap.yaml similarity index 86% rename from src/catcore/schema/catcore_synthesis_ap.yaml rename to src/coremeta4cat/schema/coremeta4cat_synthesis_ap.yaml index 651046c15..dc1be1eef 100644 --- a/src/catcore/schema/catcore_synthesis_ap.yaml +++ b/src/coremeta4cat/schema/coremeta4cat_synthesis_ap.yaml @@ -1,9 +1,9 @@ --- -id: https://w3id.org/nfdi4cat/catcore/synthesis/ -name: catcore-synthesis-ap -title: CatCore Synthesis Application Profile +id: https://w3id.org/nfdi4cat/coremeta4cat/synthesis/ +name: coremeta4cat-synthesis-ap +title: CoreMeta4cat Synthesis Application Profile description: |- - Application profile for catalyst synthesis within the CatCore metadata model. + Application profile for catalyst synthesis within the CoreMeta4cat metadata model. This module defines: - Synthesis — the DataGeneratingActivity in which a catalyst is prepared @@ -25,9 +25,9 @@ license: CC-BY-4.0 version: 1.0.0 prefixes: - catcore: https://w3id.org/nfdi4cat/catcore/ + coremeta4cat: https://w3id.org/nfdi4cat/coremeta4cat/ VOC4CAT: https://w3id.org/nfdi4cat/voc4cat_ - dcatapplus: https://nfdi-de.github.io/dcat-ap-plus/ + dcatapplus: https://w3id.org/nfdi-de/dcat-ap-plus/ linkml: https://w3id.org/linkml/ prov: http://www.w3.org/ns/prov# OBI: http://purl.obolibrary.org/obo/OBI_ @@ -37,12 +37,12 @@ prefixes: AFR: http://purl.allotrope.org/ontologies/result#AFR_ AFP: http://purl.allotrope.org/ontologies/process#AFP_ -default_prefix: catcore +default_prefix: coremeta4cat default_range: string imports: - linkml:types - - catcore_common # shared slots (atmosphere, temperature, drying_*, calcination_*, …) + enums + - coremeta4cat_common # shared slots (atmosphere, temperature, drying_*, calcination_*, …) + enums # ==================== MIXINS ==================== # Slot groups shared across multiple PreparationMethod subclasses. @@ -205,7 +205,7 @@ classes: Impregnation: is_a: PreparationMethod - class_uri: catcore:Impregnation + class_uri: coremeta4cat:Impregnation mixins: - DryingMixin - CalcinationMixin @@ -219,7 +219,7 @@ classes: CoPrecipitation: is_a: PreparationMethod - class_uri: catcore:CoPrecipitation + class_uri: coremeta4cat:CoPrecipitation mixins: - PrecipitationMixin - DryingMixin @@ -230,7 +230,7 @@ classes: SolGel: is_a: PreparationMethod - class_uri: catcore:SolGel + class_uri: coremeta4cat:SolGel mixins: - DryingMixin description: |- @@ -244,7 +244,7 @@ classes: Solvothermal: is_a: PreparationMethod - class_uri: catcore:Solvothermal + class_uri: coremeta4cat:Solvothermal mixins: - ThermalSynthesisMixin description: |- @@ -257,7 +257,7 @@ classes: PlasmaAssisted: is_a: PreparationMethod - class_uri: catcore:PlasmaAssisted + class_uri: coremeta4cat:PlasmaAssisted mixins: - ThermalSynthesisMixin description: |- @@ -271,7 +271,7 @@ classes: CombustionSynthesis: is_a: PreparationMethod - class_uri: catcore:CombustionSynthesis + class_uri: coremeta4cat:CombustionSynthesis mixins: - ThermalSynthesisMixin description: |- @@ -286,7 +286,7 @@ classes: AtomicLayerDeposition: is_a: PreparationMethod - class_uri: catcore:AtomicLayerDeposition + class_uri: coremeta4cat:AtomicLayerDeposition description: |- Catalyst preparation by atomic layer deposition (ALD): sequential self-limiting surface reactions deposit a conformal thin film @@ -301,7 +301,7 @@ classes: DepositionPrecipitation: is_a: PreparationMethod - class_uri: catcore:DepositionPrecipitation + class_uri: coremeta4cat:DepositionPrecipitation mixins: - PrecipitationMixin - DryingMixin @@ -315,7 +315,7 @@ classes: MicrowaveAssisted: is_a: PreparationMethod - class_uri: catcore:MicrowaveAssisted + class_uri: coremeta4cat:MicrowaveAssisted mixins: - ThermalSynthesisMixin description: |- @@ -327,7 +327,7 @@ classes: SonochemicalSynthesis: is_a: PreparationMethod - class_uri: catcore:SonochemicalSynthesis + class_uri: coremeta4cat:SonochemicalSynthesis mixins: - DryingMixin - CalcinationMixin @@ -358,7 +358,7 @@ classes: MechanochemicalSynthesis: is_a: PreparationMethod - class_uri: catcore:MechanochemicalSynthesis + class_uri: coremeta4cat:MechanochemicalSynthesis mixins: - ThermalSynthesisMixin description: |- @@ -375,7 +375,7 @@ classes: Sublimation: is_a: PreparationMethod - class_uri: catcore:Sublimation + class_uri: coremeta4cat:Sublimation mixins: - ThermalSynthesisMixin description: |- @@ -386,7 +386,7 @@ classes: MolecularSynthesis: is_a: PreparationMethod - class_uri: catcore:MolecularSynthesis + class_uri: coremeta4cat:MolecularSynthesis mixins: - DryingMixin description: |- @@ -410,7 +410,7 @@ classes: ExsolutionSynthesis: is_a: PreparationMethod - class_uri: catcore:ExsolutionSynthesis + class_uri: coremeta4cat:ExsolutionSynthesis mixins: - CalcinationMixin description: |- @@ -421,7 +421,7 @@ classes: # Only slots exclusive to this subprofile are declared here. # Shared slots (atmosphere, temperature, drying_*, calcination_*, equipment, # vessel_type, carrier_gas, stirring_*, number_of_cycles, …) are inherited -# from catcore_common. +# from coremeta4cat_common. slots: @@ -430,7 +430,7 @@ slots: nominal_composition: description: Nominal elemental or chemical composition of the catalyst (e.g. 5wt% Pt/Al2O3). range: string - slot_uri: catcore:nominal_composition + slot_uri: coremeta4cat:nominal_composition multivalued: true catalyst_measured_properties: @@ -438,19 +438,19 @@ slots: Key measured properties of the resulting catalyst (e.g. BET surface area, sieve fraction, molar ratio). range: string - slot_uri: catcore:catalyst_measured_properties + slot_uri: coremeta4cat:catalyst_measured_properties multivalued: true storage_conditions: description: Conditions under which the catalyst is stored (e.g. inert atmosphere, 4°C). range: string - slot_uri: catcore:storage_conditions + slot_uri: coremeta4cat:storage_conditions multivalued: true support: description: Support material on which the active phase is deposited (e.g. Al2O3, SiO2). range: string - slot_uri: catcore:support + slot_uri: coremeta4cat:support multivalued: true # ---- Precursor slots ---- @@ -458,7 +458,7 @@ slots: precursor_quantity: description: Quantity of precursor used in synthesis. range: float - slot_uri: catcore:precursor_quantity + slot_uri: coremeta4cat:precursor_quantity multivalued: true unit: ucum_code: g @@ -468,13 +468,13 @@ slots: impregnation_type: description: Type of impregnation used (wet, dry, incipient wetness). range: ImpregnationTypeEnum - slot_uri: catcore:impregnation_type + slot_uri: coremeta4cat:impregnation_type multivalued: true impregnation_duration: description: Duration of the impregnation step. range: float - slot_uri: catcore:impregnation_duration + slot_uri: coremeta4cat:impregnation_duration multivalued: true unit: ucum_code: h @@ -482,7 +482,7 @@ slots: impregnation_temperature: description: Temperature during the impregnation step. range: float - slot_uri: catcore:impregnation_temperature + slot_uri: coremeta4cat:impregnation_temperature multivalued: true unit: ucum_code: Cel @@ -492,13 +492,13 @@ slots: precipitating_agent: description: Chemical agent used to induce precipitation (e.g. NaOH, NH3). range: string - slot_uri: catcore:precipitating_agent + slot_uri: coremeta4cat:precipitating_agent multivalued: true precipitating_concentration: description: Concentration of the precipitating agent. range: float - slot_uri: catcore:precipitating_concentration + slot_uri: coremeta4cat:precipitating_concentration multivalued: true unit: ucum_code: mol/L @@ -512,7 +512,7 @@ slots: mixing_rate: description: Stirring rate during mixing of synthesis components. range: float - slot_uri: catcore:mixing_rate + slot_uri: coremeta4cat:mixing_rate multivalued: true unit: ucum_code: rpm @@ -520,7 +520,7 @@ slots: mixing_time: description: Duration of the mixing step. range: float - slot_uri: catcore:mixing_time + slot_uri: coremeta4cat:mixing_time multivalued: true unit: ucum_code: h @@ -528,7 +528,7 @@ slots: mixing_temperature: description: Temperature during mixing. range: float - slot_uri: catcore:mixing_temperature + slot_uri: coremeta4cat:mixing_temperature multivalued: true unit: ucum_code: Cel @@ -536,25 +536,25 @@ slots: order_of_addition: description: Order in which reagents or components are combined. range: string - slot_uri: catcore:order_of_addition + slot_uri: coremeta4cat:order_of_addition multivalued: true filtration: description: Filtration method used to separate the precipitate (e.g. vacuum filtration). range: string - slot_uri: catcore:filtration + slot_uri: coremeta4cat:filtration multivalued: true purification: description: Purification method applied after synthesis (e.g. washing, dialysis). range: string - slot_uri: catcore:purification + slot_uri: coremeta4cat:purification multivalued: true aging_temperature: description: Temperature during aging of the precipitate or gel. range: float - slot_uri: catcore:aging_temperature + slot_uri: coremeta4cat:aging_temperature multivalued: true unit: ucum_code: Cel @@ -562,7 +562,7 @@ slots: aging_time: description: Duration of the aging step. range: float - slot_uri: catcore:aging_time + slot_uri: coremeta4cat:aging_time multivalued: true unit: ucum_code: h @@ -572,7 +572,7 @@ slots: deposition_temperature: description: Temperature during the deposition step. range: float - slot_uri: catcore:deposition_temperature + slot_uri: coremeta4cat:deposition_temperature multivalued: true unit: ucum_code: Cel @@ -580,7 +580,7 @@ slots: deposition_time: description: Duration of the deposition step. range: float - slot_uri: catcore:deposition_time + slot_uri: coremeta4cat:deposition_time multivalued: true unit: ucum_code: h @@ -616,19 +616,19 @@ slots: hydrolysis_ratio: description: Molar ratio of water to alkoxide precursor used in hydrolysis. range: float - slot_uri: catcore:hydrolysis_ratio + slot_uri: coremeta4cat:hydrolysis_ratio multivalued: true drying: description: Drying method used for the gel (e.g. supercritical drying, freeze drying). range: string - slot_uri: catcore:drying + slot_uri: coremeta4cat:drying multivalued: true surfactant_template: description: Surfactant or structure-directing agent used as a template. range: string - slot_uri: catcore:surfactant_template + slot_uri: coremeta4cat:surfactant_template multivalued: true # ---- Solvothermal-specific slots ---- @@ -636,7 +636,7 @@ slots: filling_volume: description: Volume of solution relative to autoclave volume (filling degree). range: float - slot_uri: catcore:filling_volume + slot_uri: coremeta4cat:filling_volume multivalued: true unit: ucum_code: mL @@ -644,13 +644,13 @@ slots: stirrer_type: description: Type of stirrer used (e.g. magnetic, mechanical, none). range: string - slot_uri: catcore:stirrer_type + slot_uri: coremeta4cat:stirrer_type multivalued: true cooling_rate: description: Rate at which the reactor is cooled after synthesis. range: float - slot_uri: catcore:cooling_rate + slot_uri: coremeta4cat:cooling_rate multivalued: true unit: ucum_code: Cel/min @@ -660,13 +660,13 @@ slots: plasma_type: description: Type of plasma used (e.g. DBD, microwave, RF plasma). range: string - slot_uri: catcore:plasma_type + slot_uri: coremeta4cat:plasma_type multivalued: true power_input: description: Power input to the plasma reactor or other energy source. range: float - slot_uri: catcore:power_input + slot_uri: coremeta4cat:power_input multivalued: true unit: ucum_code: W @@ -674,7 +674,7 @@ slots: exposure_time: description: Duration of plasma or other energy exposure. range: float - slot_uri: catcore:exposure_time + slot_uri: coremeta4cat:exposure_time multivalued: true unit: ucum_code: min @@ -684,25 +684,25 @@ slots: fuel: description: Organic fuel used in combustion synthesis (e.g. urea, glycine). range: string - slot_uri: catcore:fuel + slot_uri: coremeta4cat:fuel multivalued: true oxidizer: description: Oxidizer used in combustion synthesis (e.g. metal nitrates). range: string - slot_uri: catcore:oxidizer + slot_uri: coremeta4cat:oxidizer multivalued: true fuel_to_oxidizer_ratio: description: Molar ratio of fuel to oxidizer. range: float - slot_uri: catcore:fuel_to_oxidizer_ratio + slot_uri: coremeta4cat:fuel_to_oxidizer_ratio multivalued: true set_temperature: description: Target temperature set for the combustion reaction. range: float - slot_uri: catcore:set_temperature + slot_uri: coremeta4cat:set_temperature multivalued: true unit: ucum_code: Cel @@ -710,7 +710,7 @@ slots: post_treatment: description: Post-synthesis treatment applied to the combustion product. range: string - slot_uri: catcore:post_treatment + slot_uri: coremeta4cat:post_treatment multivalued: true # ---- AtomicLayerDeposition-specific slots ---- @@ -724,7 +724,7 @@ slots: pulse_time: description: Duration of the precursor pulse in each ALD cycle. range: float - slot_uri: catcore:pulse_time + slot_uri: coremeta4cat:pulse_time multivalued: true unit: ucum_code: s @@ -742,7 +742,7 @@ slots: power: description: Microwave power applied. range: float - slot_uri: catcore:power + slot_uri: coremeta4cat:power multivalued: true unit: ucum_code: W @@ -750,7 +750,7 @@ slots: microwave_frequency: description: Frequency of microwave irradiation. range: float - slot_uri: catcore:microwave_frequency + slot_uri: coremeta4cat:microwave_frequency multivalued: true unit: ucum_code: GHz @@ -760,7 +760,7 @@ slots: sonication_power: description: Acoustic power applied during sonication. range: float - slot_uri: catcore:sonication_power + slot_uri: coremeta4cat:sonication_power multivalued: true unit: ucum_code: W @@ -768,7 +768,7 @@ slots: sonication_duration: description: Duration of ultrasonic irradiation. range: float - slot_uri: catcore:sonication_duration + slot_uri: coremeta4cat:sonication_duration multivalued: true unit: ucum_code: min @@ -778,25 +778,25 @@ slots: flame_type: description: Type of flame used in FSP (e.g. methane/oxygen, H2/O2). range: string - slot_uri: catcore:flame_type + slot_uri: coremeta4cat:flame_type multivalued: true inlet_system: description: Configuration of the precursor inlet system. range: string - slot_uri: catcore:inlet_system + slot_uri: coremeta4cat:inlet_system multivalued: true flame_ring: description: Configuration of the supporting flame ring. range: string - slot_uri: catcore:flame_ring + slot_uri: coremeta4cat:flame_ring multivalued: true capillary_pressure: description: Pressure applied at the capillary nozzle during FSP. range: float - slot_uri: catcore:capillary_pressure + slot_uri: coremeta4cat:capillary_pressure multivalued: true unit: ucum_code: bar @@ -804,7 +804,7 @@ slots: fuel_dispersant_ratio: description: Volume ratio of fuel to dispersant used in FSP. range: float - slot_uri: catcore:fuel_dispersant_ratio + slot_uri: coremeta4cat:fuel_dispersant_ratio multivalued: true # ---- MechanochemicalSynthesis-specific slots ---- @@ -812,7 +812,7 @@ slots: vessel_volume: description: Volume of the milling vessel. range: float - slot_uri: catcore:vessel_volume + slot_uri: coremeta4cat:vessel_volume multivalued: true unit: ucum_code: mL @@ -820,13 +820,13 @@ slots: size_and_material: description: Size and material of the milling vessel and components. range: string - slot_uri: catcore:size_and_material + slot_uri: coremeta4cat:size_and_material multivalued: true milling_speed: description: Rotational speed during milling. range: float - slot_uri: catcore:milling_speed + slot_uri: coremeta4cat:milling_speed multivalued: true unit: ucum_code: rpm @@ -834,7 +834,7 @@ slots: milling_duration: description: Total duration of the milling process. range: float - slot_uri: catcore:milling_duration + slot_uri: coremeta4cat:milling_duration multivalued: true unit: ucum_code: h @@ -842,13 +842,13 @@ slots: ball_material: description: Material of the milling balls (e.g. zirconia, stainless steel). range: string - slot_uri: catcore:ball_material + slot_uri: coremeta4cat:ball_material multivalued: true ball_size: description: Diameter of the milling balls. range: float - slot_uri: catcore:ball_size + slot_uri: coremeta4cat:ball_size multivalued: true unit: ucum_code: mm @@ -856,7 +856,7 @@ slots: ball_to_powder_ratio: description: Mass ratio of milling balls to powder charge. range: float - slot_uri: catcore:ball_to_powder_ratio + slot_uri: coremeta4cat:ball_to_powder_ratio multivalued: true # ---- MolecularSynthesis-specific slots ---- @@ -864,31 +864,31 @@ slots: reaction_vessel: description: Type of reaction vessel used (e.g. Schlenk flask, round-bottom flask). range: string - slot_uri: catcore:reaction_vessel + slot_uri: coremeta4cat:reaction_vessel multivalued: true mixing_device: description: Device used for mixing (e.g. magnetic stirrer, vortex mixer). range: string - slot_uri: catcore:mixing_device + slot_uri: coremeta4cat:mixing_device multivalued: true crystallisation_solvents: description: Solvent(s) used for crystallisation. range: string - slot_uri: catcore:crystallisation_solvents + slot_uri: coremeta4cat:crystallisation_solvents multivalued: true precipitation_agent: description: Agent used to induce precipitation in molecular synthesis. range: string - slot_uri: catcore:precipitation_agent + slot_uri: coremeta4cat:precipitation_agent multivalued: true crystallisation_duration: description: Duration of the crystallisation step. range: float - slot_uri: catcore:crystallisation_duration + slot_uri: coremeta4cat:crystallisation_duration multivalued: true unit: ucum_code: h @@ -896,13 +896,13 @@ slots: purification_solvent: description: Solvent used for washing or recrystallisation during purification. range: string - slot_uri: catcore:purification_solvent + slot_uri: coremeta4cat:purification_solvent multivalued: true temperature_ramp: description: Temperature ramp rate applied during drying or activation. range: float - slot_uri: catcore:temperature_ramp + slot_uri: coremeta4cat:temperature_ramp multivalued: true unit: ucum_code: Cel/min diff --git a/src/catcore/schema/dcat_4c_ap.yaml b/src/coremeta4cat/schema/dcat_4c_ap.yaml similarity index 98% rename from src/catcore/schema/dcat_4c_ap.yaml rename to src/coremeta4cat/schema/dcat_4c_ap.yaml index 5af8d714d..16efdbeec 100644 --- a/src/catcore/schema/dcat_4c_ap.yaml +++ b/src/coremeta4cat/schema/dcat_4c_ap.yaml @@ -12,7 +12,7 @@ see_also: prefixes: dcat_4c_ap: https://nfdi-de.github.io/chem-dcat-ap/dcat_4c_ap.yaml# chemdcatap: https://nfdi-de.github.io/chem-dcat-ap/ - dcatapplus: https://nfdi-de.github.io/dcat-ap-plus/ + dcatapplus: https://w3id.org/nfdi-de/dcat-ap-plus/ linkml: https://w3id.org/linkml/ biolink: https://w3id.org/biolink/vocab/ schema: http://schema.org/ diff --git a/src/catcore/schema/material_entities_ap.yaml b/src/coremeta4cat/schema/material_entities_ap.yaml similarity index 99% rename from src/catcore/schema/material_entities_ap.yaml rename to src/coremeta4cat/schema/material_entities_ap.yaml index 10453e6e8..0574dcc94 100644 --- a/src/catcore/schema/material_entities_ap.yaml +++ b/src/coremeta4cat/schema/material_entities_ap.yaml @@ -7,7 +7,7 @@ description: |- license: CC-BY 4.0 prefixes: material_entities_ap: https://nfdi-de.github.io/chem-dcat-ap/material_entities_ap.yaml# - dcatapplus: https://nfdi-de.github.io/dcat-ap-plus/ + dcatapplus: https://w3id.org/nfdi-de/dcat-ap-plus/ linkml: https://w3id.org/linkml/ biolink: https://w3id.org/biolink/vocab/ schema: http://schema.org/ diff --git a/tests/data/valid/Synthesis-001.yaml b/tests/data/valid/Synthesis-001.yaml index cc3215903..abfa2b2d6 100644 --- a/tests/data/valid/Synthesis-001.yaml +++ b/tests/data/valid/Synthesis-001.yaml @@ -3,10 +3,10 @@ # Target class: Synthesis # # NOTE: realized_plan range is PreparationMethod (abstract, no domain slots). -# Domain synthesis parameters that live on catcore_common ARE accepted on Synthesis directly. +# Domain synthesis parameters that live on coremeta4cat_common ARE accepted on Synthesis directly. # realized_plan: title/description only — the loader cannot dispatch to Impregnation subclass. -id: "catcore:SYNTH_001_Pt_Al2O3" +id: "coremeta4cat:SYNTH_001_Pt_Al2O3" nominal_composition: - "5 wt% Pt/Al2O3" catalyst_measured_properties: @@ -20,7 +20,7 @@ solvent: sample_pretreatment: - "reduction in H2 at 400 deg C for 2 hours prior to catalytic testing" had_input_entity: - - id: "catcore:PREC_001_H2PtCl6" + - id: "coremeta4cat:PREC_001_H2PtCl6" title: "chloroplatinic acid hexahydrate" precursor_quantity: - 0.0485 diff --git a/tests/test_data.py b/tests/test_data.py index 0d4ca5c57..8cb98e867 100644 --- a/tests/test_data.py +++ b/tests/test_data.py @@ -4,7 +4,7 @@ import pytest from pathlib import Path -import src.catcore.datamodel.catcore +import src.coremeta4cat.datamodel.coremeta4cat from linkml_runtime.loaders import yaml_loader DATA_DIR_VALID = Path(__file__).parent / "data" / "valid" @@ -19,7 +19,7 @@ def test_valid_data_files(filepath): """Test loading of all valid data files.""" target_class_name = Path(filepath).stem.split("-")[0] tgt_class = getattr( - src.catcore.datamodel.catcore, + src.coremeta4cat.datamodel.coremeta4cat, target_class_name, ) obj = yaml_loader.load(filepath, target_class=tgt_class)