From eda5a13626e0d99f7915d1bf9bc1536f3bf24d3b Mon Sep 17 00:00:00 2001 From: Anders Albert <60234212+doctrino@users.noreply.github.com> Date: Thu, 6 Mar 2025 09:11:24 +0100 Subject: [PATCH] =?UTF-8?q?[NEAT-787]=20=E2=9E=95=20Introducing=20min/max?= =?UTF-8?q?=20for=20DMS=20sheet=20(#1029)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Description Please describe the change you have made. ## Bump - [ ] Patch - [x] Minor - [ ] Skip ## Changelog ### Added - Properties `Min Count` and `Max Count` to DMS sheet. ### Removed - The properties `Is List` and `Nullable` are now deprecated in the DMS sheet, and instead derived from the Min Count` and `Max Count`. --- cdf.toml | 2 +- cognite/neat/_constants.py | 5 +- cognite/neat/_graph/loaders/_rdf2dms.py | 8 +- cognite/neat/_issues/warnings/__init__.py | 9 +- cognite/neat/_issues/warnings/_general.py | 10 + cognite/neat/_issues/warnings/_properties.py | 4 +- cognite/neat/_rules/exporters/_rules2excel.py | 10 - cognite/neat/_rules/importers/_dms2rules.py | 34 +- cognite/neat/_rules/models/dms/_exporter.py | 17 +- cognite/neat/_rules/models/dms/_rules.py | 59 +- .../neat/_rules/models/dms/_rules_input.py | 65 +- .../neat/_rules/models/information/_rules.py | 12 - .../_rules/models/mapping/_classic2core.yaml | 310 ++--- .../neat/_rules/transformers/_converters.py | 37 +- cognite/neat/_rules/transformers/_mapping.py | 2 +- cognite/neat/_session/_state.py | 1 - .../rules/cdf-dms-architect-alice.xlsx | Bin 79803 -> 79880 bytes scripts/core_classic_mapping.xlsx | Bin 17985 -> 18081 bytes tests/config.py | 1 + tests/data/car_dms_rules_deprecated.xlsx | Bin 0 -> 14462 bytes tests/data/dm_view_space_different.xlsx | Bin 81722 -> 81977 bytes .../pump_example_duplicated_resources.xlsx | Bin 18508 -> 18583 bytes ...ample_with_missing_cells_raise_issues.xlsx | Bin 17944 -> 18019 bytes tests/data/windturbine.py | 6 +- .../test_excel_importer_to_yaml.yml | 206 +-- .../test_to_extension_transformer.yml | 1212 ++++++++--------- .../test_data_model_prepare_fix.py | 6 +- .../test_prefix_dms_rules_entities.yml | 52 +- .../test_standardize_space_and_version.yml | 50 +- .../test_data_model_to/test_raw_filter.yml | 16 +- .../test_graph_flow/test_aml_to_dms.yml | 177 +-- .../test_graph_flow/test_dexpi_to_dms.yml | 1129 +++++++-------- .../test_snapshot_workflow_to_python.yml | 986 +++++++------- .../test_read_model_referencing_core.yml | 20 +- .../graph/test_loaders/test_dms_loader.py | 4 +- .../inconsistent_container_dms_rules.xlsx | Bin 71381 -> 71374 bytes .../excel_importer_data/invalid_metadata.xlsx | Bin 71335 -> 71328 bytes .../invalid_property_dms_rules.xlsx | Bin 71128 -> 71127 bytes .../missing_view_container_dms_rules.xlsx | Bin 71461 -> 71454 bytes .../too_many_containers_per_view.xlsx | Bin 72351 -> 72384 bytes .../test_importers/test_excel_importer.py | 36 +- .../rules/test_models/test_dms_rules.py | 33 +- .../test_models/test_information_rules.py | 1 + 43 files changed, 2357 insertions(+), 2163 deletions(-) create mode 100644 tests/data/car_dms_rules_deprecated.xlsx diff --git a/cdf.toml b/cdf.toml index 8d4de872c..ceb9010df 100644 --- a/cdf.toml +++ b/cdf.toml @@ -5,7 +5,7 @@ default_env = "dev" [modules] # This is the version of the modules. It should not be changed manually. # It will be updated by the 'cdf module upgrade' command. -version = "0.4.8" +version = "0.4.10" [alpha_flags] classic = true diff --git a/cognite/neat/_constants.py b/cognite/neat/_constants.py index 145807b8b..0af238940 100644 --- a/cognite/neat/_constants.py +++ b/cognite/neat/_constants.py @@ -117,9 +117,12 @@ def get_default_prefixes_and_namespaces() -> dict[str, Namespace]: DEFAULT_DOCS_URL = "https://cognite-neat.readthedocs-hosted.com/en/latest/" +# These are the API limits for the DMS API, https://docs.cognite.com/cdf/dm/dm_reference/dm_limits_and_restrictions DMS_CONTAINER_PROPERTY_SIZE_LIMIT = 100 DMS_VIEW_CONTAINER_SIZE_LIMIT = 10 -DMS_DIRECT_RELATION_LIST_LIMIT = 100 +DMS_DIRECT_RELATION_LIST_DEFAULT_LIMIT = 100 +DMS_PRIMITIVE_LIST_DEFAULT_LIMIT = 1000 +DMS_CONTAINER_LIST_MAX_LIMIT = 2000 _ASSET_ROOT_PROPERTY = { "connection": "direct", diff --git a/cognite/neat/_graph/loaders/_rdf2dms.py b/cognite/neat/_graph/loaders/_rdf2dms.py index a963d719a..8112f979b 100644 --- a/cognite/neat/_graph/loaders/_rdf2dms.py +++ b/cognite/neat/_graph/loaders/_rdf2dms.py @@ -21,7 +21,7 @@ from cognite.neat._client import NeatClient from cognite.neat._client._api_client import SchemaAPI -from cognite.neat._constants import DMS_DIRECT_RELATION_LIST_LIMIT, is_readonly_property +from cognite.neat._constants import DMS_DIRECT_RELATION_LIST_DEFAULT_LIMIT, is_readonly_property from cognite.neat._issues import IssueList, NeatError, NeatIssue, catch_issues from cognite.neat._issues.errors import ( AuthorizationError, @@ -417,20 +417,20 @@ def parse_direct_relation(cls, value: list, info: ValidationInfo) -> dict | list ids = (self._create_instance_id(v, "node", stop_on_exception=True) for v in value) result = [id_.dump(camel_case=True, include_instance_type=False) for id_ in ids] # Todo: Account for max_list_limit - if len(result) <= DMS_DIRECT_RELATION_LIST_LIMIT: + if len(result) <= DMS_DIRECT_RELATION_LIST_DEFAULT_LIMIT: return result warnings.warn( PropertyDirectRelationLimitWarning( identifier="unknown", resource_type="view property", property_name=cast(str, cls.model_fields[info.field_name].alias or info.field_name), - limit=DMS_DIRECT_RELATION_LIST_LIMIT, + limit=DMS_DIRECT_RELATION_LIST_DEFAULT_LIMIT, ), stacklevel=2, ) # To get deterministic results, we sort by space and externalId result.sort(key=lambda x: (x["space"], x["externalId"])) - return result[:DMS_DIRECT_RELATION_LIST_LIMIT] + return result[:DMS_DIRECT_RELATION_LIST_DEFAULT_LIMIT] elif value: return self._create_instance_id(value[0], "node", stop_on_exception=True).dump( camel_case=True, include_instance_type=False diff --git a/cognite/neat/_issues/warnings/__init__.py b/cognite/neat/_issues/warnings/__init__.py index 4b315ca08..ff178e161 100644 --- a/cognite/neat/_issues/warnings/__init__.py +++ b/cognite/neat/_issues/warnings/__init__.py @@ -13,7 +13,13 @@ FileReadWarning, FileTypeUnexpectedWarning, ) -from ._general import MissingCogniteClientWarning, NeatValueWarning, NotSupportedWarning, RegexViolationWarning +from ._general import ( + DeprecatedWarning, + MissingCogniteClientWarning, + NeatValueWarning, + NotSupportedWarning, + RegexViolationWarning, +) from ._models import ( BreakingModelingPrincipleWarning, CDFNotSupportedWarning, @@ -50,6 +56,7 @@ "CDFAuthWarning", "CDFMaxIterationsWarning", "CDFNotSupportedWarning", + "DeprecatedWarning", "FileItemNotSupportedWarning", "FileMissingRequiredFieldWarning", "FileReadWarning", diff --git a/cognite/neat/_issues/warnings/_general.py b/cognite/neat/_issues/warnings/_general.py index 9ffad682a..1c05878d4 100644 --- a/cognite/neat/_issues/warnings/_general.py +++ b/cognite/neat/_issues/warnings/_general.py @@ -34,3 +34,13 @@ class MissingCogniteClientWarning(NeatWarning): """Missing Cognite Client required for {functionality}""" functionality: str + + +@dataclass(unsafe_hash=True) +class DeprecatedWarning(NeatWarning): + """{feature} is deprecated""" + + extra = "{replacement}" + + feature: str + replacement: str | None = None diff --git a/cognite/neat/_issues/warnings/_properties.py b/cognite/neat/_issues/warnings/_properties.py index dc54ae49c..66ce0b4c3 100644 --- a/cognite/neat/_issues/warnings/_properties.py +++ b/cognite/neat/_issues/warnings/_properties.py @@ -1,7 +1,7 @@ from dataclasses import dataclass from typing import Generic -from cognite.neat._constants import DMS_DIRECT_RELATION_LIST_LIMIT +from cognite.neat._constants import DMS_DIRECT_RELATION_LIST_DEFAULT_LIMIT from cognite.neat._issues._base import ResourceType from ._resources import ResourceNeatWarning, T_Identifier, T_ReferenceIdentifier @@ -79,7 +79,7 @@ class PropertyDirectRelationLimitWarning(PropertyWarning[T_Identifier]): resource_type = "view" - limit: int = DMS_DIRECT_RELATION_LIST_LIMIT + limit: int = DMS_DIRECT_RELATION_LIST_DEFAULT_LIMIT @dataclass(unsafe_hash=True) diff --git a/cognite/neat/_rules/exporters/_rules2excel.py b/cognite/neat/_rules/exporters/_rules2excel.py index 8da641497..aa775f72b 100644 --- a/cognite/neat/_rules/exporters/_rules2excel.py +++ b/cognite/neat/_rules/exporters/_rules2excel.py @@ -170,16 +170,12 @@ def _add_drop_downs(self, workbook: Workbook, no_rows: int = 100) -> None: dv_value_types = generate_data_validation(self._helper_sheet_name, "C", no_header_rows=0, no_rows=no_rows) dv_immutable = generate_data_validation(self._helper_sheet_name, "D", no_header_rows=0, no_rows=3) - dv_nullable = generate_data_validation(self._helper_sheet_name, "D", no_header_rows=0, no_rows=3) - dv_is_list = generate_data_validation(self._helper_sheet_name, "D", no_header_rows=0, no_rows=3) dv_in_model = generate_data_validation(self._helper_sheet_name, "D", no_header_rows=0, no_rows=3) dv_used_for = generate_data_validation(self._helper_sheet_name, "E", no_header_rows=0, no_rows=3) workbook["Properties"].add_data_validation(dv_views) workbook["Properties"].add_data_validation(dv_containers) workbook["Properties"].add_data_validation(dv_value_types) - workbook["Properties"].add_data_validation(dv_nullable) - workbook["Properties"].add_data_validation(dv_is_list) workbook["Properties"].add_data_validation(dv_immutable) workbook["Views"].add_data_validation(dv_in_model) workbook["Containers"].add_data_validation(dv_used_for) @@ -194,12 +190,6 @@ def _add_drop_downs(self, workbook: Workbook, no_rows: int = 100) -> None: if column := find_column_with_value(workbook["Properties"], "Value Type"): dv_value_types.add(f"{column}{3}:{column}{no_rows * 100}") - if column := find_column_with_value(workbook["Properties"], "Nullable"): - dv_nullable.add(f"{column}{3}:{column}{no_rows * 100}") - - if column := find_column_with_value(workbook["Properties"], "Is List"): - dv_is_list.add(f"{column}{3}:{column}{no_rows * 100}") - if column := find_column_with_value(workbook["Properties"], "Immutable"): dv_immutable.add(f"{column}{3}:{column}{no_rows * 100}") diff --git a/cognite/neat/_rules/importers/_dms2rules.py b/cognite/neat/_rules/importers/_dms2rules.py index d4652b265..9c4b142f9 100644 --- a/cognite/neat/_rules/importers/_dms2rules.py +++ b/cognite/neat/_rules/importers/_dms2rules.py @@ -7,8 +7,12 @@ from cognite.client import data_modeling as dm from cognite.client.data_classes.data_modeling import DataModelId, DataModelIdentifier from cognite.client.data_classes.data_modeling.containers import BTreeIndex, InvertedIndex +from cognite.client.data_classes.data_modeling.data_types import ( + DirectRelation, + ListablePropertyType, + PropertyTypeWithUnit, +) from cognite.client.data_classes.data_modeling.data_types import Enum as DMSEnum -from cognite.client.data_classes.data_modeling.data_types import ListablePropertyType, PropertyTypeWithUnit from cognite.client.data_classes.data_modeling.views import ( MultiEdgeConnectionApply, MultiReverseDirectRelationApply, @@ -19,6 +23,7 @@ from cognite.client.utils import ms_to_datetime from cognite.neat._client import NeatClient +from cognite.neat._constants import DMS_DIRECT_RELATION_LIST_DEFAULT_LIMIT, DMS_PRIMITIVE_LIST_DEFAULT_LIMIT from cognite.neat._issues import IssueList, MultiValueError, NeatIssue, catch_issues from cognite.neat._issues.errors import ( FileTypeUnexpectedError, @@ -336,8 +341,8 @@ def _create_dms_property( name=prop.name, connection=self._get_connection_type(prop), value_type=str(value_type), - is_list=self._get_is_list(prop), - nullable=self._get_nullable(prop), + min_count=self._get_min_count(prop), + max_count=self._get_max_count(prop), immutable=self._get_immutable(prop), default=self._get_default(prop), container=( @@ -419,9 +424,9 @@ def _get_value_type( ) return None - def _get_nullable(self, prop: ViewPropertyApply) -> bool | None: + def _get_min_count(self, prop: ViewPropertyApply) -> int | None: if isinstance(prop, dm.MappedPropertyApply): - return self._container_prop_unsafe(prop).nullable + return int(not self._container_prop_unsafe(prop).nullable) else: return None @@ -431,15 +436,26 @@ def _get_immutable(self, prop: ViewPropertyApply) -> bool | None: else: return None - def _get_is_list(self, prop: ViewPropertyApply) -> bool | None: + def _get_max_count(self, prop: ViewPropertyApply) -> int | float | None: if isinstance(prop, dm.MappedPropertyApply): prop_type = self._container_prop_unsafe(prop).type - return isinstance(prop_type, ListablePropertyType) and prop_type.is_list + if isinstance(prop_type, ListablePropertyType): + if prop_type.is_list is False: + return 1 + elif isinstance(prop_type.max_list_size, int): + return prop_type.max_list_size + elif isinstance(prop_type, DirectRelation): + return DMS_DIRECT_RELATION_LIST_DEFAULT_LIMIT + else: + return DMS_PRIMITIVE_LIST_DEFAULT_LIMIT + else: + return 1 elif isinstance(prop, MultiEdgeConnectionApply | MultiReverseDirectRelationApply): - return True + return float("inf") elif isinstance(prop, SingleEdgeConnectionApply | SingleReverseDirectRelationApply): - return False + return 1 else: + # Unknown type. return None def _get_default(self, prop: ViewPropertyApply) -> str | None: diff --git a/cognite/neat/_rules/models/dms/_exporter.py b/cognite/neat/_rules/models/dms/_exporter.py index c2c9ebd30..0aae7c1da 100644 --- a/cognite/neat/_rules/models/dms/_exporter.py +++ b/cognite/neat/_rules/models/dms/_exporter.py @@ -20,7 +20,11 @@ ViewApplyDict, ) from cognite.neat._client.data_classes.schema import DMSSchema -from cognite.neat._constants import COGNITE_SPACES +from cognite.neat._constants import ( + COGNITE_SPACES, + DMS_DIRECT_RELATION_LIST_DEFAULT_LIMIT, + DMS_PRIMITIVE_LIST_DEFAULT_LIMIT, +) from cognite.neat._issues.errors import NeatTypeError, NeatValueError, ResourceNotFoundError from cognite.neat._issues.warnings import NotSupportedWarning, PropertyNotFoundWarning from cognite.neat._issues.warnings.user_modeling import ( @@ -310,7 +314,16 @@ def _create_containers( args: dict[str, Any] = {} if issubclass(type_cls, ListablePropertyType): - args["is_list"] = prop.is_list or False + is_list = args["is_list"] = prop.is_list or False + if is_list: + if type_cls is dm.DirectRelation and prop.max_count == DMS_DIRECT_RELATION_LIST_DEFAULT_LIMIT: + # Use default of API. + args["max_list_size"] = None + elif type_cls is not dm.DirectRelation and prop.max_count == DMS_PRIMITIVE_LIST_DEFAULT_LIMIT: + # Use default of API. + args["max_list_size"] = None + else: + args["max_list_size"] = prop.max_count if isinstance(prop.value_type, Double | Float) and isinstance(prop.value_type.unit, UnitEntity): args["unit"] = prop.value_type.unit.as_reference() if isinstance(prop.value_type, Enum): diff --git a/cognite/neat/_rules/models/dms/_rules.py b/cognite/neat/_rules/models/dms/_rules.py index 6926d64f2..f3299997e 100644 --- a/cognite/neat/_rules/models/dms/_rules.py +++ b/cognite/neat/_rules/models/dms/_rules.py @@ -1,3 +1,4 @@ +import math import warnings from collections.abc import Hashable from typing import TYPE_CHECKING, Any, ClassVar, Literal @@ -8,6 +9,7 @@ from pydantic_core.core_schema import SerializationInfo, ValidationInfo from cognite.neat._client.data_classes.schema import DMSSchema +from cognite.neat._constants import DMS_CONTAINER_LIST_MAX_LIMIT from cognite.neat._issues.errors import NeatValueError from cognite.neat._issues.warnings._general import NeatValueWarning from cognite.neat._rules.models._base_rules import ( @@ -102,22 +104,25 @@ class DMSProperty(SheetRow): alias="Value Type", description="Value type that the property can hold. It takes either subset of CDF primitive types or a View id", ) - nullable: bool | None = Field( + min_count: int | None = Field( + alias="Min Count", default=None, - alias="Nullable", - description="Used to indicate whether the property is required or not. Only applies to primitive type.", + description="Minimum number of values that the property can hold. " + "If no value is provided, the default value is `0`, " + "which means that the property is optional.", + ) + max_count: int | float | None = Field( + alias="Max Count", + default=None, + description="Maximum number of values that the property can hold. " + "If no value is provided, the default value is `inf`, " + "which means that the property can hold any number of values (listable).", ) immutable: bool | None = Field( default=None, alias="Immutable", description="sed to indicate whether the property is can only be set once. Only applies to primitive type.", ) - is_list: bool | None = Field( - default=None, - alias="Is List", - description="Used to indicate whether the property holds single or multiple values (list). " - "Only applies to primitive types.", - ) default: bool | str | int | float | dict | None = Field( None, alias="Default", description="Specifies default value for the property." ) @@ -147,13 +152,43 @@ class DMSProperty(SheetRow): description="Used to make connection between physical and logical data model aspect", ) + @property + def nullable(self) -> bool | None: + """Used to indicate whether the property is required or not. Only applies to primitive type.""" + return self.min_count in {0, None} + + @property + def is_list(self) -> bool | None: + """Used to indicate whether the property holds single or multiple values (list). " + "Only applies to primitive types.""" + if self.max_count is None: + return None + return self.max_count is float("inf") or (isinstance(self.max_count, int | float) and self.max_count > 1) + def _identifier(self) -> tuple[Hashable, ...]: return self.view, self.view_property - @field_validator("nullable") + @field_validator("min_count") def direct_relation_must_be_nullable(cls, value: Any, info: ValidationInfo) -> None: - if info.data.get("connection") == "direct" and value is False: - raise ValueError("Direct relation must be nullable") + if info.data.get("connection") == "direct" and value not in {0, None}: + raise ValueError("Direct relation must have min count set to 0") + return value + + @field_validator("max_count", mode="before") + def as_integer(cls, value: Any) -> Any: + if isinstance(value, float) and not math.isinf(value): + return int(value) + return value + + @field_validator("max_count") + def max_list_size(cls, value: Any, info: ValidationInfo) -> Any: + if isinstance(info.data.get("connection"), EdgeEntity | ReverseConnectionEntity): + if value is not None and value != float("inf") and not (isinstance(value, int) and value == 1): + raise ValueError("Edge and reverse connections must have max count set to inf or 1") + return value + # We do not have a connection, so we can check the max list size. + if isinstance(value, int) and value > DMS_CONTAINER_LIST_MAX_LIMIT: + raise ValueError(f"Max list size cannot be greater than {DMS_CONTAINER_LIST_MAX_LIMIT}") return value @field_validator("value_type", mode="after") diff --git a/cognite/neat/_rules/models/dms/_rules_input.py b/cognite/neat/_rules/models/dms/_rules_input.py index e597420bf..0115affd4 100644 --- a/cognite/neat/_rules/models/dms/_rules_input.py +++ b/cognite/neat/_rules/models/dms/_rules_input.py @@ -1,4 +1,6 @@ import re +import sys +import warnings from dataclasses import dataclass from datetime import datetime from typing import Any, Literal @@ -8,7 +10,8 @@ from cognite.client.data_classes.data_modeling import ContainerId, ViewId from rdflib import Namespace, URIRef -from cognite.neat._constants import DEFAULT_NAMESPACE +from cognite.neat._constants import DEFAULT_NAMESPACE, DMS_DIRECT_RELATION_LIST_DEFAULT_LIMIT +from cognite.neat._issues.warnings import DeprecatedWarning from cognite.neat._rules.models._base_input import InputComponent, InputRules from cognite.neat._rules.models.data_types import DataType from cognite.neat._rules.models.entities import ( @@ -26,6 +29,11 @@ from ._rules import _DEFAULT_VERSION, DMSContainer, DMSEnum, DMSMetadata, DMSNode, DMSProperty, DMSRules, DMSView +if sys.version_info >= (3, 11): + from typing import Self +else: + from typing_extensions import Self + @dataclass class DMSInputMetadata(InputComponent[DMSMetadata]): @@ -106,9 +114,9 @@ class DMSInputProperty(InputComponent[DMSProperty]): name: str | None = None description: str | None = None connection: Literal["direct"] | ReverseConnectionEntity | EdgeEntity | str | None = None - nullable: bool | None = None + min_count: int | None = None + max_count: int | float | None = None immutable: bool | None = None - is_list: bool | None = None default: str | int | dict | None = None container: str | None = None container_property: str | None = None @@ -117,6 +125,19 @@ class DMSInputProperty(InputComponent[DMSProperty]): neatId: str | URIRef | None = None logical: str | URIRef | None = None + @property + def nullable(self) -> bool | None: + """Used to indicate whether the property is required or not. Only applies to primitive type.""" + return self.min_count in {0, None} + + @property + def is_list(self) -> bool | None: + """Used to indicate whether the property holds single or multiple values (list). " + "Only applies to primitive types.""" + return self.max_count in {float("inf"), None} or ( + isinstance(self.max_count, int | float) and self.max_count > 1 + ) + @classmethod def _get_verified_cls(cls) -> type[DMSProperty]: return DMSProperty @@ -139,6 +160,44 @@ def referenced_view(self, default_space: str, default_version: str) -> ViewEntit def referenced_container(self, default_space: str) -> ContainerEntity | None: return ContainerEntity.load(self.container, strict=True, space=default_space) if self.container else None + @classmethod + def _load(cls, data: dict[str, Any]) -> Self: + # For backwards compatability, we need to convert nullable and Is List to min and max count + for min_count_key, nullable_key in [("Min Count", "Nullable"), ("min_count", "nullable")]: + if nullable_key in data and min_count_key not in data: + if isinstance(data[nullable_key], bool | float): + data[min_count_key] = 0 if data[nullable_key] else 1 + else: + data[min_count_key] = None + warnings.warn( + DeprecatedWarning(f"{nullable_key} column", replacement=f"{min_count_key} column"), stacklevel=2 + ) + data.pop(nullable_key) + break + for max_count_key, is_list_key, connection_key in [ + ("Max Count", "Is List", "Connection"), + ("max_count", "is_list", "connection"), + ]: + if is_list_key in data and max_count_key not in data: + if isinstance(data[is_list_key], bool | float): + if not data[is_list_key]: + data[max_count_key] = 1 + elif "direct" in (data.get(connection_key, "") or "") and "edge" not in ( + data.get(connection_key, "") or "" + ): + data[max_count_key] = DMS_DIRECT_RELATION_LIST_DEFAULT_LIMIT + else: + # Reverse or edge connection + data[max_count_key] = float("inf") + else: + data[max_count_key] = 1 + warnings.warn( + DeprecatedWarning(f"{is_list_key} column", replacement=f"{max_count_key} column"), stacklevel=2 + ) + data.pop(is_list_key) + break + return super()._load(data) + @dataclass class DMSInputContainer(InputComponent[DMSContainer]): diff --git a/cognite/neat/_rules/models/information/_rules.py b/cognite/neat/_rules/models/information/_rules.py index 5b2b5f35d..f0abd4d3d 100644 --- a/cognite/neat/_rules/models/information/_rules.py +++ b/cognite/neat/_rules/models/information/_rules.py @@ -237,18 +237,6 @@ def type_(self) -> EntityTypes: else: return EntityTypes.undefined - @property - def is_mandatory(self) -> bool: - """Returns True if property is mandatory.""" - return self.min_count not in {0, None} - - @property - def is_list(self) -> bool: - """Returns True if property contains a list of values.""" - return self.max_count in {float("inf"), None} or ( - isinstance(self.max_count, int | float) and self.max_count > 1 - ) - class InformationRules(BaseRules): metadata: InformationMetadata = Field(alias="Metadata", description="Metadata for the logical data model") diff --git a/cognite/neat/_rules/models/mapping/_classic2core.yaml b/cognite/neat/_rules/models/mapping/_classic2core.yaml index 996ddb9fb..305e3d4f9 100644 --- a/cognite/neat/_rules/models/mapping/_classic2core.yaml +++ b/cognite/neat/_rules/models/mapping/_classic2core.yaml @@ -3,18 +3,15 @@ containers: neatId: http://purl.org/cognite/neat/neatId_bb7e4121_bc17_46c7_a93d_c855f710ccbe used_for: node - container: ClassicSourceSystem - neatId: http://purl.org/cognite/neat/neatId_57fcf04b_a65f_4fc5_92e6_e9e7ac5d6876 used_for: node enum: - collection: timeseriesType description: Time series with double floating point data points. name: numeric - neatId: http://purl.org/cognite/neat/neatId_a7441186_75bb_4d36_a6bc_59b4da0e0262 value: numeric - collection: timeseriesType description: Time series with string data points. name: string - neatId: http://purl.org/cognite/neat/neatId_df06ec7f_5412_4e48_872f_84e5234d5857 value: string metadata: created: '2024-08-29T13:49:56.696000' @@ -29,17 +26,19 @@ metadata: properties: - connection: reverse(property=assets) description: An automatically updated list of activities related to the asset. - is_list: true + max_count: .inf + min_count: 0 name: Activities - neatId: http://purl.org/cognite/neat/neatId_4487a4a9_6e1e_4fde_871c_de37ea8134eb + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/activities value_type: ClassicEvent view: ClassicAsset view_property: activities - connection: reverse(property=parent) description: An automatically updated list of assets with this asset as their parent. - is_list: true + max_count: .inf + min_count: 0 name: Children - neatId: http://purl.org/cognite/neat/neatId_04c63f13_3088_4d24_9494_7f6948feb498 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/children value_type: ClassicAsset view: ClassicAsset view_property: children @@ -47,25 +46,27 @@ properties: container_property: description description: Description of the instance immutable: false - is_list: false - neatId: http://purl.org/cognite/neat/neatId_1852e4a8_af30_4461_9f92_5364f9ab2830 - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/description value_type: text view: ClassicAsset view_property: description - connection: reverse(property=asset) description: An automatically updated list of equipment related to the asset. - is_list: true + max_count: .inf + min_count: 0 name: Equipment - neatId: http://purl.org/cognite/neat/neatId_46d2b553_9e62_4cb8_bdd7_7bcea1f5d989 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/equipment value_type: ClassicEquipment view: ClassicAsset view_property: equipment - connection: reverse(property=assets) description: An automatically updated list of files related to the asset. - is_list: true + max_count: .inf + min_count: 0 name: Files - neatId: http://purl.org/cognite/neat/neatId_e515ea88_f19d_4069_b88d_b3244fd87cf4 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/files value_type: ClassicFile view: ClassicAsset view_property: files @@ -73,9 +74,9 @@ properties: container_property: tags description: Text based labels for generic use, limited to 1000 immutable: false - is_list: true - neatId: http://purl.org/cognite/neat/neatId_6ef04862_dc69_4bb8_8c57_14b08ea03206 - nullable: true + max_count: 1000 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/labels value_type: text view: ClassicAsset view_property: labels @@ -84,9 +85,9 @@ properties: description: Name of the instance immutable: false index: name - is_list: false - neatId: http://purl.org/cognite/neat/neatId_9047eb7a_03c2_4696_8453_14a93a29d9c0 - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/name value_type: text view: ClassicAsset view_property: name @@ -95,10 +96,10 @@ properties: container_property: assetHierarchy_parent description: The parent of the asset. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Parent - neatId: http://purl.org/cognite/neat/neatId_3755d55a_169d_4f39_ac85_4132177b835d - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/parentId value_type: ClassicAsset view: ClassicAsset view_property: parentId @@ -108,10 +109,10 @@ properties: description: An automatically updated ordered list of this asset's ancestors, starting with the root asset. Enables subtree filtering to find all assets under a parent. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Path - neatId: http://purl.org/cognite/neat/neatId_11622da5_9e91_4699_b69c_174b054a1a93 - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/path value_type: ClassicAsset view: ClassicAsset view_property: path @@ -120,10 +121,10 @@ properties: container_property: assetHierarchy_root description: An automatically updated reference to the top-level asset of the hierarchy. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Root - neatId: http://purl.org/cognite/neat/neatId_11138a07_144c_4998_a51d_4fbced64ce3d - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/root value_type: ClassicAsset view: ClassicAsset view_property: root @@ -133,25 +134,27 @@ properties: description: Direct relation to a source system immutable: false index: source - is_list: false - neatId: http://purl.org/cognite/neat/neatId_ff3bfe41_eb4c_416a_89b6_e525fce2fbfc - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/source value_type: ClassicSourceSystem view: ClassicAsset view_property: source - connection: reverse(property=assets) description: An automatically updated list of time series related to the asset. - is_list: true + max_count: .inf + min_count: 0 name: Time series - neatId: http://purl.org/cognite/neat/neatId_53bf067f_d9de_4ef0_945c_8024e9ed8981 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/timeSeries value_type: ClassicTimeSeries view: ClassicAsset view_property: timeSeries - connection: reverse(property=equipment) description: An automatically updated list of activities related to the equipment. - is_list: true + max_count: .inf + min_count: 0 name: Activities - neatId: http://purl.org/cognite/neat/neatId_c25997c1_a8c4_4c29_9517_3188cfe433b4 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/activities value_type: ClassicEvent view: ClassicEquipment view_property: activities @@ -160,19 +163,19 @@ properties: container_property: asset description: The asset the equipment is related to. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Asset - neatId: http://purl.org/cognite/neat/neatId_5e08021f_2315_4b48_a769_b824abc215a0 - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/asset value_type: ClassicAsset view: ClassicEquipment view_property: asset - container: ClassicEquipment container_property: classicEquipmentGUID immutable: false - is_list: false - neatId: http://purl.org/cognite/neat/neatId_d22d3e64_b57e_4fef_921f_6aa05cbc563b - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/classicEquipmentGUID value_type: text view: ClassicEquipment view_property: classicEquipmentGUID @@ -181,10 +184,10 @@ properties: container_property: files description: A list of files the equipment relates to. immutable: false - is_list: true + max_count: 1000 + min_count: 0 name: Files - neatId: http://purl.org/cognite/neat/neatId_3bd8dc76_ccec_4790_afc1_ad4c5dbdcadb - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/files value_type: ClassicFile view: ClassicEquipment view_property: files @@ -194,17 +197,18 @@ properties: description: Direct relation to a source system immutable: false index: source - is_list: false - neatId: http://purl.org/cognite/neat/neatId_4f64197b_ac89_4963_bdd5_527e7b1f6d4b - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/source value_type: ClassicSourceSystem view: ClassicEquipment view_property: source - connection: reverse(property=equipment) description: An automatically updated list of time series related to the equipment. - is_list: true + max_count: .inf + min_count: 0 name: Time series - neatId: http://purl.org/cognite/neat/neatId_e8c0570d_3a83_4b4d_8a7c_93e73a066e0c + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/timeSeries value_type: ClassicTimeSeries view: ClassicEquipment view_property: timeSeries @@ -212,9 +216,9 @@ properties: container_property: aliases description: Alternative names for the node immutable: false - is_list: true - neatId: http://purl.org/cognite/neat/neatId_01fd6860_7ec4_435a_b333_5efb28847ee2 - nullable: true + max_count: 1000 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEvent/aliases value_type: text view: ClassicEvent view_property: aliases @@ -223,10 +227,10 @@ properties: container_property: assets description: A list of assets the activity is related to. immutable: false - is_list: true + max_count: 1000 + min_count: 0 name: Assets - neatId: http://purl.org/cognite/neat/neatId_762c38a0_4342_4fe1_a5eb_076f143ed32c - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEvent/assetIds value_type: ClassicAsset view: ClassicEvent view_property: assetIds @@ -234,9 +238,9 @@ properties: container_property: description description: Description of the instance immutable: false - is_list: false - neatId: http://purl.org/cognite/neat/neatId_d044458b_3784_40a5_a96c_e05447dfad5a - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEvent/description value_type: text view: ClassicEvent view_property: description @@ -245,9 +249,9 @@ properties: description: The actual end time of an activity (or similar that extends this) immutable: false index: endTime - is_list: false - neatId: http://purl.org/cognite/neat/neatId_6a1842cc_35ea_4585_a288_f5b75e3032a5 - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEvent/endTime value_type: timestamp view: ClassicEvent view_property: endTime @@ -256,10 +260,10 @@ properties: container_property: equipment description: A list of equipment the activity is related to. immutable: false - is_list: true + max_count: 1000 + min_count: 0 name: Equipment - neatId: http://purl.org/cognite/neat/neatId_02efaf0e_d311_4b1f_9cbd_fa43c6141606 - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEvent/equipment value_type: ClassicEquipment view: ClassicEvent view_property: equipment @@ -267,9 +271,9 @@ properties: container_property: tags description: Text based labels for generic use, limited to 1000 immutable: false - is_list: true - neatId: http://purl.org/cognite/neat/neatId_1632b445_a660_4acf_a1b9_9450ee5369bd - nullable: true + max_count: 1000 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEvent/labels value_type: text view: ClassicEvent view_property: labels @@ -279,9 +283,9 @@ properties: description: Direct relation to a source system immutable: false index: source - is_list: false - neatId: http://purl.org/cognite/neat/neatId_c7d05e34_c8e9_4762_ac2b_bba369371e16 - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEvent/source value_type: ClassicSourceSystem view: ClassicEvent view_property: source @@ -290,9 +294,9 @@ properties: description: The actual start time of an activity (or similar that extends this) immutable: false index: startTime - is_list: false - neatId: http://purl.org/cognite/neat/neatId_3ab83d7f_ef84_40ea_a303_311e1e145e92 - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEvent/startTime value_type: timestamp view: ClassicEvent view_property: startTime @@ -301,10 +305,10 @@ properties: container_property: timeSeries description: A list of time series the activity is related to. immutable: false - is_list: true + max_count: 1000 + min_count: 0 name: Time series - neatId: http://purl.org/cognite/neat/neatId_a0c5e084_cdf1_49cf_9d39_0997c06d2f3b - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEvent/timeSeries value_type: ClassicTimeSeries view: ClassicEvent view_property: timeSeries @@ -313,10 +317,10 @@ properties: container_property: assets description: A list of assets this file is related to. immutable: false - is_list: true + max_count: 1000 + min_count: 0 name: Assets - neatId: http://purl.org/cognite/neat/neatId_6d6a510a_dac6_441f_b064_c605944fa171 - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicFile/assetIds value_type: ClassicAsset view: ClassicFile view_property: assetIds @@ -325,18 +329,19 @@ properties: description: Contains the path elements from the source (if the source system has a file system hierarchy or similar.) immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Directory - neatId: http://purl.org/cognite/neat/neatId_bdeed1bb_4733_47d8_8522_62983487a7b5 - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicFile/directory value_type: text view: ClassicFile view_property: directory - connection: reverse(property=files) description: An automatically updated list of equipment this file is related to. - is_list: true + max_count: .inf + min_count: 0 name: Equipment - neatId: http://purl.org/cognite/neat/neatId_527cc7c9_d504_41a7_b25d_f64ba2906a99 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicFile/equipment value_type: ClassicEquipment view: ClassicFile view_property: equipment @@ -344,9 +349,9 @@ properties: container_property: tags description: Text based labels for generic use, limited to 1000 immutable: false - is_list: true - neatId: http://purl.org/cognite/neat/neatId_6e9f9ada_cb78_4a64_b760_4de968df9838 - nullable: true + max_count: 1000 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicFile/labels value_type: text view: ClassicFile view_property: labels @@ -354,10 +359,10 @@ properties: container_property: mimeType description: The MIME type of the file. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: MIME type - neatId: http://purl.org/cognite/neat/neatId_b914ea9d_5c61_46cf_a3d1_c8798b2ac726 - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicFile/mimeType value_type: text view: ClassicFile view_property: mimeType @@ -366,9 +371,9 @@ properties: description: Name of the instance immutable: false index: name - is_list: false - neatId: http://purl.org/cognite/neat/neatId_71b469c1_9ff5_4e8e_a715_6d3dbd1f979c - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicFile/name value_type: text view: ClassicFile view_property: name @@ -378,9 +383,9 @@ properties: description: Direct relation to a source system immutable: false index: source - is_list: false - neatId: http://purl.org/cognite/neat/neatId_9ab00833_033e_4c3d_9b61_7f338f8bce0a - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicFile/source value_type: ClassicSourceSystem view: ClassicFile view_property: source @@ -389,9 +394,9 @@ properties: description: When the instance was created in source system (if available) immutable: false index: sourceCreatedTime - is_list: false - neatId: http://purl.org/cognite/neat/neatId_47b69049_7cb9_4e0f_ad9e_21c88fc5c3f6 - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicFile/sourceCreatedTime value_type: timestamp view: ClassicFile view_property: sourceCreatedTime @@ -400,36 +405,37 @@ properties: description: When the instance was last updated in the source system (if available) immutable: false index: sourceUpdatedTime - is_list: false - neatId: http://purl.org/cognite/neat/neatId_4e4a3955_b4fe_4e15_aad0_3248a00c5b3b - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicFile/sourceModifiedTime value_type: timestamp view: ClassicFile view_property: sourceModifiedTime - container: ClassicSourceSystem container_property: classicSourceSystemGUID immutable: false - is_list: false - neatId: http://purl.org/cognite/neat/neatId_baba86c4_fed1_4faf_8e48_b5f1e8179a50 - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicSourceSystem/classicSourceSystemGUID value_type: text view: ClassicSourceSystem view_property: classicSourceSystemGUID - container: cdf_cdm:CogniteDescribable container_property: name immutable: false - is_list: false - neatId: http://purl.org/cognite/neat/neatId_198ce929_258a_4605_a3a9_8d1bb58abe82 - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicSourceSystem/name value_type: text view: ClassicSourceSystem view_property: name - connection: reverse(property=timeSeries) description: An automatically updated list of activities the time series is related to. - is_list: true + max_count: .inf + min_count: 0 name: Activities - neatId: http://purl.org/cognite/neat/neatId_eb1527e5_e163_4d50_bcee_dd2546b7691f + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/activities value_type: ClassicEvent view: ClassicTimeSeries view_property: activities @@ -438,10 +444,10 @@ properties: container_property: assets description: A list of assets the time series is related to. immutable: false - is_list: true + max_count: 1000 + min_count: 0 name: Assets - neatId: http://purl.org/cognite/neat/neatId_bf108d22_f528_46b0_b7a6_51bda3a58531 - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/assetId value_type: ClassicAsset view: ClassicTimeSeries view_property: assetId @@ -449,9 +455,9 @@ properties: container_property: description description: Description of the instance immutable: false - is_list: false - neatId: http://purl.org/cognite/neat/neatId_6bcc87bd_4d61_4298_a038_780a67e57484 - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/description value_type: text view: ClassicTimeSeries view_property: description @@ -460,22 +466,22 @@ properties: container_property: equipment description: A list of equipment the time series is related to. immutable: false - is_list: true + max_count: 1000 + min_count: 0 name: Equipment - neatId: http://purl.org/cognite/neat/neatId_1fc3b262_51f2_444b_b105_2e5bf1feb3df - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/equipment value_type: ClassicEquipment view: ClassicTimeSeries view_property: equipment - container: cdf_cdm:CogniteTimeSeries container_property: isStep - default: 0 + default: false description: Specifies whether the time series is a step time series or not. immutable: false - is_list: false + max_count: 1 + min_count: 1 name: Is step - neatId: http://purl.org/cognite/neat/neatId_8e6d672b_00c5_4687_ba59_1617af6f5171 - nullable: false + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/isStep value_type: boolean view: ClassicTimeSeries view_property: isStep @@ -483,10 +489,10 @@ properties: container_property: type description: Specifies the data type of the data points. immutable: true - is_list: false + max_count: 1 + min_count: 1 name: Type - neatId: http://purl.org/cognite/neat/neatId_133afe5d_e988_4dc0_9464_e262154122f6 - nullable: false + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/isString value_type: enum(collection=timeseriesType) view: ClassicTimeSeries view_property: isString @@ -494,9 +500,9 @@ properties: container_property: aliases description: Alternative names for the node immutable: false - is_list: true - neatId: http://purl.org/cognite/neat/neatId_1301f5c0_ece7_42d5_af43_58e25d279f70 - nullable: true + max_count: 1000 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/legacyName value_type: text view: ClassicTimeSeries view_property: legacyName @@ -505,9 +511,9 @@ properties: description: Name of the instance immutable: false index: name - is_list: false - neatId: http://purl.org/cognite/neat/neatId_a6e3b986_c429_4aae_9c1b_b42981022f5e - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/name value_type: text view: ClassicTimeSeries view_property: name @@ -515,9 +521,9 @@ properties: container_property: tags description: Text based labels for generic use, limited to 1000 immutable: false - is_list: true - neatId: http://purl.org/cognite/neat/neatId_235a9058_8375_4bcf_8b86_340bdf3afa06 - nullable: true + max_count: 1000 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/securityCategories value_type: text view: ClassicTimeSeries view_property: securityCategories @@ -527,9 +533,9 @@ properties: description: Direct relation to a source system immutable: false index: source - is_list: false - neatId: http://purl.org/cognite/neat/neatId_b5d6ecd8_d48b_439d_892c_3d6e1bc7ffca - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/source value_type: ClassicSourceSystem view: ClassicTimeSeries view_property: source @@ -537,10 +543,10 @@ properties: container_property: sourceUnit description: The unit specified in the source system. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Source unit - neatId: http://purl.org/cognite/neat/neatId_9d17617a_accf_4f20_8e81_bd11209abc51 - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/unit value_type: text view: ClassicTimeSeries view_property: unit @@ -549,10 +555,10 @@ properties: container_property: unit description: The unit of the time series. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Unit - neatId: http://purl.org/cognite/neat/neatId_89977822_3f57_4ba1_90a8_73b68fb2cd10 - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/unitExternalId value_type: cdf_cdm:CogniteUnit(version=v1) view: ClassicTimeSeries view_property: unitExternalId @@ -560,43 +566,43 @@ views: - description: Represents a single unit of measurement implements: cdf_cdm:CogniteDescribable(version=v1) in_model: true - neatId: http://purl.org/cognite/neat/neatId_9c0f10f7_a746_4752_886a_fef5ae5ca498 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/CogniteUnit view: cdf_cdm:CogniteUnit(version=v1) - description: Assets represent systems that support industrial functions or processes. Assets are often called 'functional location'. implements: cdf_cdm:CogniteAsset(version=v1) in_model: true name: Asset - neatId: http://purl.org/cognite/neat/neatId_f0b71466_ea9c_411a_b623_b2dc1878d7d3 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset view: ClassicAsset - description: Equipment represents physical supplies or devices. implements: cdf_cdm:CogniteEquipment(version=v1) in_model: true name: Equipment - neatId: http://purl.org/cognite/neat/neatId_ca8401a4_c0c3_404b_96a2_d3ba5285448c + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment view: ClassicEquipment - description: Represents activities. Activities typically happen over a period and have a start and end time. implements: cdf_cdm:CogniteActivity(version=v1) in_model: true name: Activity - neatId: http://purl.org/cognite/neat/neatId_ddb890e4_2a78_4df8_a974_9be423eedb32 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEvent view: ClassicEvent - description: Represents files. implements: cdf_cdm:CogniteFile(version=v1) in_model: true name: File - neatId: http://purl.org/cognite/neat/neatId_5fd23b0c_ed87_45d0_87ab_09e10dec0c4e + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicFile view: ClassicFile - description: The CogniteSourceSystem core concept is used to standardize the way source system is stored. implements: cdf_cdm:CogniteSourceSystem(version=v1) in_model: true - neatId: http://purl.org/cognite/neat/neatId_7aed8567_2ca4_46ec_a71a_73922134219e + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicSourceSystem view: ClassicSourceSystem - description: Represents a series of data points in time order. implements: cdf_cdm:CogniteTimeSeries(version=v1) in_model: true name: Time series - neatId: http://purl.org/cognite/neat/neatId_c2e7d495_ae3d_4d33_abdd_d3e257dcc6b5 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries view: ClassicTimeSeries diff --git a/cognite/neat/_rules/transformers/_converters.py b/cognite/neat/_rules/transformers/_converters.py index d0abff398..6d3a8b520 100644 --- a/cognite/neat/_rules/transformers/_converters.py +++ b/cognite/neat/_rules/transformers/_converters.py @@ -716,9 +716,9 @@ def _create_new_views( view=view_entity, view_property=property_id, value_type=String(), - nullable=True, + min_count=0, immutable=False, - is_list=False, + max_count=1, container=container_entity, container_property=property_id, ) @@ -923,9 +923,9 @@ def _create_containers_update_view_filter( view=view.view, view_property=f"{prefix}{self.dummy_property}", value_type=String(), - nullable=True, + min_count=0, + max_count=1, immutable=False, - is_list=False, container=container_entity, container_property=f"{prefix}{self.dummy_property}", ) @@ -942,9 +942,9 @@ def _create_containers_update_view_filter( view=view.view, view_property=self.direct_property, value_type=read_view, - nullable=True, + min_count=0, + max_count=1, immutable=False, - is_list=False, container=container_entity, container_property=self.direct_property, ) @@ -1528,12 +1528,17 @@ def _as_dms_property( container: ContainerEntity | None = None container_property: str | None = None - is_list: bool | None = info_property.is_list - nullable: bool | None = not info_property.is_mandatory + # DMS should have min count of either 0 or 1 + min_count = min(1, max(0, info_property.min_count or 0)) + max_count = info_property.max_count if isinstance(connection, EdgeEntity): - nullable = None + min_count = 0 + max_count = 1 if max_count == 1 else float("inf") + elif isinstance(connection, ReverseConnectionEntity): + min_count = 0 + max_count = 1 if max_count == 1 else float("inf") elif connection == "direct": - nullable = True + min_count = 0 container, container_property = self._get_container(info_property, default_space) else: container, container_property = self._get_container(info_property, default_space) @@ -1541,8 +1546,8 @@ def _as_dms_property( dms_property = DMSProperty( name=info_property.name, value_type=value_type, - nullable=nullable, - is_list=is_list, + min_count=min_count, + max_count=max_count, connection=connection, default=info_property.default, container=container, @@ -1570,7 +1575,9 @@ def _get_connection( ): edge_value_type = edge_value_types_by_class_property_pair[(prop.class_, prop.property_)] return EdgeEntity(properties=edge_value_type.as_view_entity(default_space, default_version)) - if isinstance(value_type, ViewEntity) and prop.is_list: + if isinstance(value_type, ViewEntity) and ( + prop.max_count in {float("inf"), None} or (isinstance(prop.max_count, int | float) and prop.max_count > 1) + ): return EdgeEntity() elif isinstance(value_type, ViewEntity): return "direct" @@ -1759,8 +1766,8 @@ def as_information_rules( property_=property_.view_property, value_type=value_type, description=property_.description, - min_count=(0 if property_.nullable or property_.nullable is None else 1), - max_count=(float("inf") if property_.is_list or property_.nullable is None else 1), + min_count=property_.min_count, + max_count=property_.max_count, ) # Linking diff --git a/cognite/neat/_rules/transformers/_mapping.py b/cognite/neat/_rules/transformers/_mapping.py index 2e13eb814..46b477fab 100644 --- a/cognite/neat/_rules/transformers/_mapping.py +++ b/cognite/neat/_rules/transformers/_mapping.py @@ -112,7 +112,7 @@ class RuleMapper(VerifiedRulesTransformer[DMSRules, DMSRules]): """ _mapping_fields: ClassVar[frozenset[str]] = frozenset( - ["connection", "value_type", "nullable", "immutable", "is_list", "default", "index", "constraint"] + ["connection", "value_type", "min_count", "immutable", "max_count", "default", "index", "constraint"] ) def __init__(self, mapping: DMSRules, data_type_conflict: Literal["overwrite"] = "overwrite") -> None: diff --git a/cognite/neat/_session/_state.py b/cognite/neat/_session/_state.py index 361cddb57..a10e4598c 100644 --- a/cognite/neat/_session/_state.py +++ b/cognite/neat/_session/_state.py @@ -33,7 +33,6 @@ def __init__( def rule_transform(self, *transformer: VerifiedRulesTransformer) -> IssueList: if not transformer: raise NeatSessionError("No transformers provided.") - start = self.rule_store.provenance[-1].target_entity.display_name issues = self.rule_store.transform(*transformer) last_entity = self.rule_store.provenance[-1].target_entity diff --git a/docs/artifacts/rules/cdf-dms-architect-alice.xlsx b/docs/artifacts/rules/cdf-dms-architect-alice.xlsx index 77beb84ad8418c8fc0d29d3ce03a7e94d922219c..1a5478b37b0bddaf08dad769da5936f3e79dc154 100644 GIT binary patch literal 79880 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 literal 79803 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 XKiFU}zl;bJ0oY518vacDKd=4|todOx diff --git a/tests/config.py b/tests/config.py index 14defc9bc..d40cbc606 100644 --- a/tests/config.py +++ b/tests/config.py @@ -33,3 +33,4 @@ CLASSIC_CDF_EXTRACTOR_DATA = DATA_FOLDER / "class_cdf_extractor_data" IODD_EXAMPLE = DATA_FOLDER / "Piab-piCOMPACT10X-20230509-IODD1.1.xml" +CAR_DMS_RULES_DEPRECATED = DATA_FOLDER / "car_dms_rules_deprecated.xlsx" diff --git a/tests/data/car_dms_rules_deprecated.xlsx b/tests/data/car_dms_rules_deprecated.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e5a6e3d20443dfd80c120d9c10db93f440ac070b GIT binary patch literal 14462 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 literal 0 HcmV?d00001 diff --git a/tests/data/dm_view_space_different.xlsx b/tests/data/dm_view_space_different.xlsx index 32573ceb2bdab772c6b6925286ef82a597ff009e..a495ba66deaf157d2b2ca92fa4bdab5da63c8f90 100644 GIT binary patch delta 59088 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 xrO=#p84sSS#I+4_g3L2qU5|IaIQ!H56= literal 72351 zcmeFZc{r7A+c&I1(j*NeLb)m_DMIFyp%kS^85^+5m?^`u)+#C@V}{H^nJGdnLz6Pg zoH_GM#uW?eJ&yBShKB2TzCWIKd%y3y-)q}$*R|GptYg^s-~QWw`+l6;ec|k?)!S&+ z(5$7Qq1jDy_KVyR_Z2iW-`CL4Y^7PdQsb1ViKU*2rH+d29X$)J!#2i7oDr*6a);Bb z1mpkjKmWlNC{b-xT6uIcPI#0<2q$PXy5;7E^$gnVzN=^NT^D<`k!W1SvVFd#p6Bxp z8Tx<5Qi6=ddiWbdr`EW>EYm*XJ(+YN+Ez`kSHUzPXnX%{`_{~hEJu&8O0&Kav)6m) zgolS+hu(>zs0QWdJl%H^1%0;*oycV9)z$C6x$01u*~?Wv7SEnb4&3Fl>f06Bu_DzRlUmhOz5tcUPycW_mu8A7J{=E~$`)EpB{atoO?f$gDoK zeUGped&Kt7$4}}Xl~YLWdUB=eZWKq7dF;6lF)8a-o&YXRx(SKZQ^R6Dch>rF! z%U8j;>b^{J?dc8|y4G~|t zB&BCk|V|GKb)$SjK+{)P&jjv1X9J@W5w%psuzvJ3B&v0|Y6PoF5@l|uxgjF;& z6v`@^3%`VMn(7g*34qOWAWGMRFxD~GGqT`24FCS$@cj>t*=0vh@K!wk@yLcpBd2Gb z3P?50o|{jewU$0j+^vGYcczIU%`NgD*56XatS2selWR%gA`Ui&azX9goJP9^KEsrd+*qSb1dQ70HyB?2bG%l0OOFlf2$@7 zn4|xsjo8bLYW&jgeLckY#VTZ$Y?&CTvo(Dpe)I9U#}~Z!_C92pXqzgRGMQ44GWM|> zqd5_{x~taj=;ue>37p*uzUNNr##>4sI%oArF_z_wV%am^)x%``gY_Tw8Zh3NW8aY0 zY+m%z3HlkEhGx*}t86^TydDYZ-GT8f;^)uf!7eAFA@cayL1OHhxzOB`I;|AX)SN z;~c^_i+n-Hh864Yv+baFEBt)uacPc%>*_Z7z3=+gB=1nY;5b9OX!+uksjuKC!ayKN@t zmUysRblrV|L=a{5QBjxJJ-($3ckg_q-}$aZ=K=faX4#ceNj7#7qaUSa?S^Ocdv8dE zT&w%ZF47qE)U2sGKF=&54j0+`g2*uwZrZv!ceJ{jejS}-Rcanfx%st54yWPW&;3Te zsioW(KR$!|a#T9`t)hmB#m~v6A1bDiFO8pc-Gm~YQulT_$`X*_6 z&goUrBlft+aih`iMrM?u_7{&nC-XX8YG2KeIJUNRTcb#JJl}EJcd;1L2N=^0JDsc) zxEU>DC9KU#aLl@Cb4ErM4^!IcXJSrPL)Ly=o6aR9!qxLx6t5-Mm z#q4i25L#cKS-C~k$%XUFH+3gq=WE}ARG`5{v|7OnpooY-C+}%HtukO2h z^PZ}7l&-gO;C`3Kfo${-Gao%?UjM%B%($HNko)FU-XasGYBz3*1-93H-zG4iFYsO6 zc=J)_i*HZe^FBS=ZhO`6WA~Qwob&Qez=xAS*6j&_v1m4r2c`NzN_{0LbIHQMy}^-zPu%)>MiwVZo`q6^U`$N zu)CjRrRC|0(&NT%yxiJ+{D6VYQ7_|d+TYq%M78)n@YWSQGh^)g&i#j~^M*qTV|#h= zFMQl*U%u*bx)&nBDxd4vqnCLP=<@H(?WITJv3vaf0UVQ>R9Hqg4WCTgv_F z{WVT8wrl>wex+z?>e8-*el>gPZW1!r?_e5;8Nj^O(y<<|sBtYW9*8ba4wJH-=GUkO@nZX-2tS;G@Cf=AfYf?8x)+*+>%S&iVo4s8(Hl5T}PV~zgRG-f> zoNi3&8X@`-z=ur3>AIw@R-zvzyLs$R@rR%j)!3EF-HtPqeGz$&Kbb{+>FG$6k&!s_ zDfg^M-`Hqw@msNiD(sp*Yoh&FR(C9&~sWyOr7QV*LWtyl-6RXG7H%1YW! z9aq!q1zLwK__3kQ6C!LBXR*B|sduFwN=1D#4!8EV5ih>|*p^gobGHgJsL-UHs1v>L z{h7x@cP_RohT$G-C=o)ojI5rYILT3NuHJqo3?q!2VzzVrlJqH8v6Do+)Jk7}8~5c> zaIG~zS6I$)l{K?1kwjV7m6PKz*j+ffExIeea67&kqodt&NxPV&)0b}6vg>`v8Kw0` z`)PBBQ~6%8{iwwfcbIbJ5I={NS*Ujo?HVu3dBIlqxQawKlFHUp`^Ifzyh&@iN6mhqCz^oSI9 zTjMq!A7skv5s_kZsqsii32;+9Fqe7QL?okMhjl&F1c5>2Rxw&`Jo{0>1gs*;8U&mb~;&Zf*|RzQ}Ogwoe`oGs>P)>t^I-DKWhq+vg%92r3gEF7wJ2QasDQ ztiDlB0blS=%_c95@Msx@hPH}7Nlf!EA@IYHUc%du+i zW;kKPgvb5)qhF=|Pk#A>{C{LG6;k_VzQ|CX^>S>TyBR?^H{tPk{^)<)m+R+lJ|`TS z@OU`?`l}Sv%$JjtE4>{5abJ4%ay*{@kNl&&X)R|XP1o#T{$$5^B?lXGq^oIik`8`u za4epWU?46obBflgnP#s}j{dW2CinwuYgkO4TKaz%7aphBn4ByQt@f3_ADA;7|4nO8 zFV}@fq3frFz2Cnk2s;}0UVCANzvtdxaJ8g%ZF}I|%A&TXNt??Oism}iQ?{S6+##J1 zIXf)wrM+r3>uIH7miMfyndG$-;KjY_~tSF zEEKfld^f=>PoyPhc}ve&j}Q5K6m|hh)QU|Sk8I9n?v+}bC5&%;&A9*c;0}p5+!r!> z1N>s-Pb#l0{HL_lI8i;>o2&+tPBap|TflaJ=+-}rm^klFXMJZRqM!_%j8`MN2~r*4J*`}ZCvZc=Fc z_5&Zzc<~c)`_>k&>u2*kIP$D*E4W;@yi;M#cz^!!!4++DKdy+cK2q~}DE|}<{mO5$ z*r8DyAx*d9G+xi?dUqT#G*NyPooPNt+Hsxp6Ls&o3O;dU{0J&tm(u;6QTNAFCcL>o z-c{l#`0pwvd~Ke#2S&+$_1;5Wq!5-?BL&NikIkp1k7rBYpRwxd-5U`cf6B_oi>PTt z6Mp|mj1RUyGn|n=TuAM~3o$PPNnPo}=fd{~@vFpxe_SnUwM^V6p3r2p^O9#K%TFfR z+b2e=We?ocm@MgKetgDLeRr^`Pkqy`KcY7%%wFFA%gjuPV!>T z6&H9`+70JI&#e{>7&|3Ri4^d8iO>RJ8#4z6bbx7 zYx)cC9ocCR^2Gmgzk!)j+{ANTe&WiRuL4EuZux{7CedX?TVoW4Xcff%NierKb4Bl& zr>9@dZR_Am1`?+KSoQX)s6;=1epHOGJ~8d_pzW%T^h-yEC3xrhZmm>vy0`7D)XG&4 z!>+DKsF8(#Cw=uzyeCke56IiFP;Ouh^$C(B;(@=S^Rrf>57R)pX#d;Xx$hw11o zFMgNwce}$pu!h{KMY4&nCB8nF+85v+-O zN8eE%PI0`ox2EfU{b*of)ul?!NWwws@0FOtooUA3tBa)&9{T<2vpn`)0TJBjYyfS& zjc7PqSlSxtS-?Q9zM^3Y`s;YmUq9tTI>x+~R%XY>H(qjqyArFD-Z0>fK3-M(?Wp-V zI(d;R=FjK=ZvHVR{Ux)cjm zu~Usa{}f%4v32LdI;|&voG6#t_pnLXKJ~*Dbs8^buN-f4iM!2vu3mrSvOf2-htchcp&53Sv69{t+Lb#KS{ z;^6gf!cSNYkd$v2&)r{}kQgIek?JvZ{U65c?*Z8~n*JD;Ge2%-aangpL`kpg^xr-G ze1Mj>KBN8NX`I@3Y(xp>{Ql`j`RAA}e-O@GZ8033Fjg47Z66)3ktdPACzk)f>@eHs z;oxIAsh8uA-t35Y)!g?f@yE-jPkPoEF{p(5h|LF%o7yIX`Ub_;y?okEwDRCC`MK_& zHlOup9WK4ow%aGa!QZrmaqoKRYQqNOxZ85?oC8nL|6KQN!_kx0T_*3z4VdRq_{VYV zg`J@~io69(mlE?UV{T+R4<4VIIDde2ruc3YR$ud}#gEIu48(D>=NjvF9gFTvScfa? z!@fUy`@lCWE6bzikp3&PU&}O4Y~%77cD%{p5E=MPiPPisp|KrnE?W_Z8mHbA?e6lu zemc*(edxsrF{!mgKJMdtV{g0;9@ug9s+4=rc*W`Whc-#v*;uss<=GoED=!{?dwTct zx-;PnVm_Cu=<@?sYfAeawDPr2yxVs1WMz=jMF&4|c@^1tyN8)u)~zU*_Tp9ZOdWWq z?UnnaMyEJQ==M;B*{)Zyg_fGi{8Eb9yko@YRbI~NenPc;*R?ZO9>45xAV>M|57Szn zqv-+4+9y`Trg+62tL9}3?oXeHG7lFokvaH!Q*1teD=}A zQ{UnuFZn8+4|uf|9GaYA?Xh*{LYRx`P-WJMN8aCJh#IP-TztAp-QJYEmh=1Y@SxL6DACBy`HI8pM*?njS{UiAYcMQ+I zRb(a1{GH{L&oa2QIMLA5-C6x__ZI@l{e>!We}M~oL)knX@{dyG8_ttyX>pfh1LJU$ z^~cvFG#pJ;yst8b(~Q|ijNitsd+>1wZ9+s`XHC`# zDMFKC(uHe>VioqNbk=pY5@hk@nJ+~=u`C|JIee#8mN2+cfuQtd(KvcEde^rllOX=#@7xLwu!)${ES;PriN+Z{xdf-CtErPUb(Ol*VtM zcj}sZV4zNhl-oUTee=BY5S*6F61k*!kFoeLr%2>3v}_Jk_xA?D6Z&gZUQH zt|9K`g1Hmz(%(}z(b@1EoDDO2;Pmch`8tMqgA+Lw-`9j@Vq0#UF+Cbg+UTw#GWycu zKHtxN&Ees85)*MJ$+b<=~R_)-i&|V z{BY0+;b*rRVWyQZJ&-q7?k`30pv)^o%;XWHrRMvDDMOUG*`B=FzH-XWsiD@Pyy-bp z%7mRa_@7@ZF13{~9zXk0$AQv88o`qXC_m>+33Jg`$4IH2jiz{sr(v8@r{-6T(G>`E z(wg66+r7Vl#r(eJ?u>vzZAzuim+tf0U)Zx-a1?8@wa#r4@jN~+w9mTLzV4gEkZbEf z?^yrY2~Ydh;4Y%}XzKpyT(wz87Y@684tAF()zK9{U#p47KMS=hboFk|$mx8wr+(7A z!zJq5U3FVNJ@4{^m;+_nm&-0DLAcc!nE>&&Dc))~d*gb9Wv`%ug4JS z!vclIodZ%&r$RsC`X`3_|waJvC zfm*)0<^z_KXLXW$PI35k^f#z|pP?lZ%rxiP)drKN2U_?drVQFMj8r+qstG6aI?qm+ zk@{G>Qmn@D(nHuW)~Gmekk%@`X$PAo+)Vn!w8V7REoB@&h(iYaA}?BJjJEGBdBV7D z96MJ0KEj~&sSbmvDkU_KZ*A+mepr07zX|P^x`B$DD{%NrFFRywau1A~MfbO=JoU`$ zR>T##TD98NefpRzQW5=XVmeuXwfTJD>B@Plmyt>}b5`Vi?6~}(tl|;+-l`z=3#r;N z=(4f<80|}gW-K){TdJMv>TP$qm7Dh8bei!uH1X9LHxCWkMq#zejNG;<{>Hr1 z7PsvOTy2`0u+7_Wn{k5|D33Bt=7%hL1g%B{RVSn;UZ0v{?GBvD$ZMOj!&1t_M@Rw& z%@11Yu86kX>a*;d~lk?ITKNRvdiBf9%6CXDpm>1r?(G`4e z`*Bx4Tj<+v%8=rp!`x5b84C=zBTvFbtc}D9wG{Su%??DG5MC*JJ*TBz%Po?FK|6`)h)_1%(mp5J@3u&M|%5) z>PEYDP4hkr?Z=WQlSS$qlNCz~TksnVl%}QzPFbX6BsYWSItJj&T>ikPIPDcxrrH^t z_|cHj@yr&SHVvU8(~qus7^AS}8^LaBh(TaxbgS*7>=T!ty9d} zBbb?H;V??D#@QL>xoo@EnFx<}6}h)g!B0i-6HO)h$zITAz*W**mK?FMPiJCWwIh*l zreMvGt56i7qFl{CBe%E1ua!DuSB^fSH36Pj>2X@_GL9l%!W}H5Wb7&G)=CyCi0^ zYxm4K?XPT{@&)wfk2E>e3KI9`@I{(PNa2JDb;h_@>&Tv~)iW0b>5lz6V%QyykTAu? z3YYwSgvoa>!gRx%+-mI1_#p#aY~ZRuXuMO0Jr8!)dbjv1vvh!c%sJKi?-UEgC=Z;i zVf(t2EBz*NpSVbaDMswU6uJ}QuIf5*-S@he9h9V}a*^Cev@L%z`QlN=-*@q$^L%S5 z_GBWTppImDM6G|ENVv#JB~O9Qm6<0^c>8cHe%5&cBV{qAe4Sdy=n5Fk9fEf=7i>2- zJkwK5`ZzW`cMjJQqTI3m*F+9Bx1pHW8f1;Bo;lefYq2cHFMo8gYG{4nZ`QxkGS`wV z7Fp{bXrlAG-NAaK?q-&>+-gg*LpROu8`a_XVvBqGGV^?S%;bxgjm*F9ccl1LHaW-E zS`M7GIX7J7guCa~&JCF-k~}re+UY#%Y91*i3II3sP0^OFFn2=n@ut8AVt=s^17e{$D{DD7K2PR9e>i^){BU5sE%To%{(t4s zS;cpJx6rU(MDBH465aUl6Lp;e;;)a&{5hPunnCCR4}WGZSl{`F4++Nr*d`xlyZ-6k z|35ymug8fU`XQ-Qv%lq`V6C&Z3|)n?kB+z(%Hna{?5f*5cwFSS=SQyD?(vAWtvO>~+e0gMuZODnk#WfPF73*) zqcIV1xB;Aoy9H;+qYb9Xyz;Npbb@I*;WS?VI?WX@jXIph_UgY*(*vgIfzyQi>om?_ z8W%W?i2A=y(+{TUhttIV>ojk{G+A((>Az1i$u1}*JM)=xaNJ~Cu(X>#{b3q=X-avo zY>l+#wl3>~rS;*nCtrxLS`Mh>N1BOXr_)NxA_FmD)~N~OF>&o)BCOjyO6tRHbj#M{ zN0tWTDDR8DoX6(cx?eV*n#DeAW(!DF&gZfa;${y>l^!h!-smD9Bto8F<>e@@URXaq za{exO@V60;zSI%d|82yoKsaayr4!|u(joN*AC#cs7-{ryc5k=%K@CS_~7 zgo}ZJHKO}1rsnGIe9`pqn!=bc=8c5z#% zINkxjST_1iKyulOy*1y%XY>H?TZ7x`|Z3roXI9EeSJ&EHU`!V^0BG`FcpNV@(eas&_#!*W9q}dZY2dDQZ ziUHgGZA8ET7%_+`&x>gOyNSsj#tdWN$mMxm|1zRm_;YKZhhHnLsX%9my2lAVv9AEV zAu^Z>S!Eh`iwBXD$+eV?P;V@kdyozM)KD)HCG|+ z3K?3(wO70io*QOV!Gh0#lM6tgA_jv=4y@D-?3Ksr4}zGdE;7K%uyoEyB>)<8$*O?G ztUJu7=2U7TcbcWv{sMJK+KV&90S3STYl1jV`NgDw(VO1_0I5#K$TgJ!u=|Mo&Pc6p z#r331svZWP+Sq0<|4&4_USS8CB0i2e8 z@&d@Nbf38_(ghtt;%tr`#v~u3AC4KuG6Be?8#~1D1DI-X$M9IFFqE(XQ(@y%;KLIlLG1wsHA0*saa7V9Dp+^WFU=DzM7lApm=(;mdND@z;!J5Ss<2s1jl z{@~C9u>pG7O!k^;RuHi15!AhsQWFmhs^rLbxU922sQ7Tbp+&mZ!#I$-djAo1Jsc6= zTl*YfuSf2(`g-eHCKqiP=n1RmanPzcV2%cRlg^g!!ri&)mDk>;ez*Vuo4zBi2m~81 zzltw7kLg{O;bCJuLQl0UlG?B5%DqQp*0e!GDx6Y3@I+ z)0a^lEtoSZW&~R&r3#Z7tvl9j;fUs;Xnk_|BwIT#eERGb)m^gtE3R5HYRP77niL_o zFdf%-zud6Jx^^!xGaXR3^rGz3_USJkqt1k=wD=B=70UWr)Qk?sedAWdGPEvGqG3}{ znOU1MB3zX&H#+J9VrY-7YCvRQc!yWH+m)B#NHwbjpfGFU2K)65Hh$5*2_mjB4m_G} za?S_yK-j>Qh;SwI^hp;nC@30Vff2x?S5=@k3X*UoVyn;rs;4?SgiIVL)q|a-m0ZN6*a4q6!nWA3uUIVJwSvhYJg^tVpB5XW80rqhgld?RpW~ zReh&*?J?A@;5aqtfvwzNm=0%p`F{Q!;_HS`MVhi|H^7uxWE}7#HkAl$%7^5t#+lDw z4o;Eq>)DVE+&vC90E{N+9uilAL`Wc;^<@zke&`o;2$LwfN3mVjq{| z0U=-N&b|Yf(oYN$_+TmiOLI;eYAu&9Uk)QO1)&M(4@)hWn zpS|}X{`(>!bXx{-P0c|Jh}=uWgJs|&awPByDV6sga9mS)%iz7HW{u70ko(jjTcZ$S z)bm6^#9%H3M2}gVB!(}+)UZ&2Oaw~P0X5iC zMFim&E6hIHf22C*Qa51P+tPaUBI& z5UkIH6q@L^mbNoi5S$ZjeH568b!i(5yV}(+v9pdYQ>V{S^9oicmEj_+!WMO`iulec z`zibj2J`DszvjlkNGEfGNDnOs=_-`950tUr@KgB1Dn?-y>Q{Q;k%8oZlnaF}1mK14 z80GCAAaP_~cuk7wuJ4gheFEXY5e1ksl$9}`YYO^lAk%B^tz^NM*dl9nGAHv@a!9S@ zX@rq+2pSqC3(!Otx_&!ZB+ga{Mlr)hgdyo-AtMYqBKbuGdst;q0t`UDLP%mt8j&Vs zPBGO{kSf6pSPz3xC<~CYSfnpoLVTxxD)2FBO4`M|R0z`u=B_hBMwpKXV@#){hrdip zODd@**9(^GgWv~q!_y8qA_=CEu0D1~WYMBQ9)pf5R-2cRD`E*>$pYZC@(5;S7&!~O z2U`^)rGnXqdrsyL2O4v9?lBzq0$YPt1RI4^GbMc&d<02WGv*ssx9p|MQK}hg14SBv zy{;M#FWX}h7=Jj$#2w^VhRRhPAOsLgEFU7lkGYipOvGFY{u-tU#3C?FaFRM^I5|LQ z1*FE_cmk6S+-PPPbev5meoCLC6R*k9*`ZPc#2s|$;%|X1&T#kq$`Z1KNA6o0@^uIs;_sZT^asF~UfK#_83vTo1}=Sc>Le3*v(^cRXnjsc@#;;^JE)LXy$ zm%Y2?j!rXb-&CB6)fN^FZD{L4dt1C`;;9j_M<3 zj*8QS(h%4r3Cy!}mSMw*!`*hkvEe0vx)V|3^UF&L-+-R6fC&`vOxSX>FAJX_a8z(y zk4rT`YFx^PSq}lof^q)@HNsO%-dWnnf>EhIMNs=I>TP7McZ}~bB<)t-rLv3xmRp>~ zo98n#2)kcafm(#=(@~0!Gs+VHJxDVP2`hU^Bv5aSPcQn-$^xjB?t&gUz%@V)BA72y zAJ6nEl`KFhwSN+>&}puVE&W%NL2QE&pkfCLFqEjr({%?L15l=1@->`#8=O-~mkE+c z9kpPCFkWK4C9CvM7ZL{5NfQ}|Y&L)^41t=j$WD^|lmbU5%#8po-yokXL=XIkgiR>x z)jr3jDk6wX^r*`*hg1gujt6m`u-*c@_&Zzyd85?<V-l zps>o_j278_7;wztlqs=9By8XYA_;=6EDQey0g!|9j9{*i28E@AJGe7IVjKuO*iZn5MNSKPNqqlx_C^zY z8Tc`%a!|Ug4J=1#SDl(yQMW*>!pe04XFyCrrGus@@GX|iDZ8A9QZ6lOwt`^A?KhL^ z5u)n?jWm>$L80&my#(z>IBJ1Zmqx@PL=Pu7uyR8) zMAC9)_NPVh|BXed>rcWSgo!eg@@qh@2O@_=~>$|Vb~#nht;Y@l)!_J0<9 z0fpDHZ2+@=e+PWd~okps#4gY(^ zb!y7vC0LB)9Gp`i3JwcKl)E{n)FOLYzMbVG$Vg=u0IQfxcEPxoNFXq(K$iQ^Kn?^R z{;hrWYHslM-^wYp4g!VW&h#(|J+HZbK5+d2F1%j001&TPb{#MUt3$L#*&nwfY$0et zDFvZaBw+L4=)Gc5ZIVOCFfyG z`9qgxYeqX}f#tjfTNp^uy2!IoBL)xtI}iU?&mp{*o>SE(WQM!2A3rw;?EJVTU(>^& zzZ8e2zpmWRuoHs%Vv-%0I=K7t7ZdkEM@`)!Tqz*8Wnqupv;uFZFkFOPmUd;uucN4< zq-xsW&q&of#t7{dUZY{Dq`x*vzAz1~M)1${*?+Nw3i9z}|B>BwGMXzKO4j(l9}R)$H`kWN9n|F@zHw3UH{ zqG7RRg`yCEa;eaT4Ghp?N3FnPJTl@b(3@&(A|HNZkYS3vh#aJkr-( zh&w=I#N>K9k$RvECu8(GU{iV_-%xWu>IH#?IZ#+54GF3lK#!pu!SJ#OM$Edb&jLdV zF0$Adg3F*64!}z}NI>kr02BI!qy8akwU+wp6y<5+ci7 zfxcz|E;afbgJW*kGvzpMg2r4bgFr_Y#3sU|h;jwxe*JNK1--V%}EaegRYyZq?V5Wn}vWzF4)2QB!A!<`W>;gr0_}@ za*G`q-RNbgES3LDU4&3In7mgO-jOcSIHe;`2!&JU>LNiRXwfX&?~*A&_bZ*jd?i)Wn(M?Po#O?sg6a%L(BdZG6&2N@ zOQ{Wz-J-fejag@ew40)l9)T}L?f}7FTXzUA6z3SX>=Fv^KFsTUbJ&o2;6J-~OW+*J z2?NcY&T(KRRB-+#D3^uKLNg`Nsy(f zT}mYDKzO1RB2uqVv-Cm<`Uew$Dgci(7nQ=B>VQWR(&CB$zitHi4v5g5h~DUd83?I) zfX$cXAJADXy}yt?z%~pM<(f28!8;}i)JESzupxC3BKCwhl;?j&^m8uj;Q;_OmcwX= z=`k|Utz%K1BZ30F-2nQcO2FXjk#e(v1tyPsh()N0#^%j*Qvu`zs_cQ)J1<~H$2%~Y zgNQ&2WPoN+Z!F|Xj56q(BJUF++6am0rTQI+qd#OilJlu(-wGPCfF++Cb(aW8=4w${yZzSir~t z_aZ&DAUg(ly@0-5hjh28M7vnBLb7S9>(8W~2SgSmnq$a~QC2M^ z4Retc4bX0|xVF%J0W?tCpkD@+VJXlMY&Fh7RK%n+emZV%H1For>(2_2-pUc5%97pq6AhI z?G?57sj8eEW(C$>Ut;6nB~K*C_&}Z)u|XBj25zqckQ)~8f1+nTg;W$-X_vW7kUJp8 zWmQK&q#VdV>0xtdB?Sr*&=>{3zG?_>f{?l`9ZUe0`l^ooR6if6#br{v6Hb6sWAJ7P z-jpFln_p_!Wq82_Uq!lV2-*^eUPtb*d&(l1!cFi{y1qxJ}B2SD!sy+lIv&9ux&dn!y;=)L>Gn`AIJ!P`UK zxqhtbLyq==SA~JaBH-;0d@llh$3zdg@1->ZH}iuH&15iaB^8%0^5S9O;%gAz`$d9g zF?jW2LRxaUdV$AXcx4c<>n(S7>9jClgfIwhBxk7rI{@2hdVDJ%z7P<3om`I|7VTL` z9H}!}ywigBU*Lutou__j9`x481t^3CxIyfLDm+W5d$c_~Ej=Ynaio2GnWR`wT&|4B%`vbOoWc&QoWaRD}rk$Qe16n>QlR<`xWG-jL;eCQklgI*8lg9 zJ8|jar?m24R>a8G$ z8Um zd>#C_U#&1E8N+Ae$^6!JVUsE7?8xJ~U}X-5v6S!9n}(V^?n&hi%v_jJnYlP~c}96g zbtWjvTUn=E`v)iA7^kl{FwW^h^bF{K-)c-H+j#oZGML}0VyjPGA*An~jkwxEg?S$r zR_G!>dPIpl!}aW)vg}b8y9+|yKu9MI3c{z*=$)NB*u)V@?0d)TcUtzBPzLct%$&U)H)}Zws!w-R_gySm}Xp#M{GR-Jj@)Wt3os@L)MRjQ=nc? zry3g~67{oHmpJP7V0mcpV9hS^{(<_1oyIV=l_-NlBO5^=ERqRuB>{I@;HaV?mkazF zdk|Y{%>}Fi+;47P$}&01$phDopkU?mG`$N`+_AtS8xlIv5wkPU*zOOqd19%xzS?DeS`;ss}c zmw&3*M$%f38hBDuDLwa@7PmuGq$~?I07QG?J>Yo0PnHcp@t%U= z0(e7UJw{B=fnLDQGl9^8fPqVch%d4QXo#e48i}n?NF4~?v1n)`la&o-9kH%0LuI(T!}5R=aNIZ^ z+yUIdIqo^0ImL?$lwj+rFaoFxr9~>xe*q$l=05O(Al#Of9unN(aBP#!2%~_X2XG-< zsyCc60=WSYbwQyje?M`FG8UpoPC>557nm{!FkR@iPoa5rfSxAFVbxHcoykTobXBwh zB0;u?ON(X}X&VmI*C9z1Oh2F?H-U^ObPi4Q$&o7$1v$8p=tbR(U3wDuwMc3oVjq5a zFt((kP!LlMSnn`oJQ0lbY!1Yf$?i6kFXB>)H^)C)o& zY}=<$0Wz(MIHj5JkofbZ&l7_IMWE86O1vak4_JJ{fn7FC4T3nBq*VzPfIwtBNNMy! zR8H!GmN;FAPW4hm)TKWdFe4T1OT4+5Vfj9{2P+Syf+s)=ptuIi;N}Bxhx1dAqcrGM zu}zzFuCqRhX0jr-nuj7Dh`8CyHJrLX7W#*Z*{6)8`UMuEt|;P>E4Q7 zAxU26ax~Ad#&_}HkR}l#0^;RMbW!V@F;1r;`!D+tc?XWXu&OckF2Edw%1{$bWWPzH zY4QFJX>Am>wqYAzQFptbU@Fovq*2afs0Lm_s4nW?1#t&AIVh5NL`JYtLug9$PBp368J zR2=3B;uOV$=t-f%0CZk+ zzY{0K{h9Q7Y_^dP9C?XDF|mVbxrhqsf~p&q6o|@k@Im-@DMJH$FZfeg>)8S^4kB_B zizfr;Lu=@&Xqe*bphyCX#H|;QhtiOmC;`J?lJcgy7gfhg_=5C&Ox_ikW(@J)FJb@y z2rUm5jQ-aIg9N?x=|6JQZAp(%5ZEH>KRA;?c5Ff9J5oR`DIpNjh$oIA#BX_hAul4O z7F244hpD&S-G@czk_sKO_vpDB43q*CxuI5q+IM*v?LqR;EGZDcCjix3D1elb_~mgD zfMJ4rkeQQDFFam=GBsBC!rOxpt?{L397ZJ&WT;A}R$Zu9htnGDQh~J>b0!t?B7mg! z?|9u;q7AD6HK0zGa}O-1B*^q~Mn$(OKrm|~j{g>w&}?|>@J&D-1hgu9R3-7Z zlpJYXKD?%hq{WphawDfqo~NO$8!KZZ?SuQJ@<@Q3iDb*b1nBka|Hcxn@x( zqZtFS=5&V6AH`50q3(BhE=WbBSFpsr#(_wxV%Db?J-?|?=w~YNLqP)K0E&6cf;253O7M-NxNhB4A z#CVwz$`}IVH?MT7NhZ3WB!tYY9iJ%t*SZc#-hI}IOl{N{#wG$*TPjQebz+SXSfceD zwNi*Z*aKJx;1ZqM(^v zOO8RF{#R!1{WZfw$r0x(wbHD}9Y`7YHn98Tq#iFCp`oK#Iy`%X1Yk{szhSERr)K_y zRu1+AnSiR@H5OBMx?6ya>WtBZWClWOBnYaJ<-jqpN4ggN9-!mUttdM0az%b5xI5mjuL%D0h*&FnBkE2 zz(6OP|J#r*0`vj#eQ;{YD_F3Tg&Q~%NMI(;*#g1fP~bob7i3)|7y)fW$uS7jNK`-q zX>G-j|8jCUWQ_PSVN~p_4O^VI0c{AzSpyR!b2h_-i9MCgyu1r61jULfQ5@x$!D}?E zp{Uf_LD~m%Vhl?W1wxQh#%q?`oYqezr0U`%9)Vkjh6ha8b6JqKCcXlkw3XHNRC+u% zF^34AmP_6!wJ{9E7oX@cL%`|MF2p13gfT;c6x9%tq%)i(Ndtq%{N_c{RKz=8AMQ1; z&d1JgZK$&(i#yel!vR}D6vlT?k9LVOFZzD0LKC^h}jg}K81N3u_S^f0T1(;+J^oBud~KWvH^QHag?%h95s_>$58aI1%jlD zxsN+0Y%rIqQc{q!;~!IXPV}_jmr;)GKI9pCDS7X0g0tma29iX~8q-u1580h%;En{T z)K;ZSK8PKBMV1cQSY zU4w&93NHHWLaZ3<0%7-SKu<11ijr>xu`(m0%irmUG&hjsPIYXnxiby$l1wpQNJ z2a+{71(JPkpxK`T-0?zvINTkiUx)co#+&znsp_@&Tvm_(1%L$FHP$P7OTC(g~AO(zb5peouui2^eZ}c;Fu%v=5N`&id4zPGl<8vTEh|M)&HV27Q z05?>W{}Tx=zQM}w5G0D&tO-spO79IKvufR)Xfq)oJ+xb>J?uEUAJsT$%vC>KXxBw? z2-5aI>PQNTC<>;1Ww!mgzT6IqEV4u#4=A!Dgn5V#UOVz2OamE1sSo08uK{2+jzbfx zg?A(o$hVx66ehCLAE47;o-+n6(^P9o2NoeW&khz2MAEWk;=T1$(nVjwf(7t2)cux2 z&hcj8h7bs)LaIYk$`Vv%INA~--{UCx^d&ppNMh?2XOs$vLs_FY_?*~tL#+K3r{}vO zEPJ|w0iDZ0avg1i$d}$nh6GBAF%;q8JCYV7^`JyRu!Q}6HwiBVu^*DN*MhZA`9jX~ zqB!Q100<#9x`nkA8Lua_Gudd5Tl#c6aS9b>o7whShEoZGD`>bH!Lo@V2AzfCu+@VA ztU)#hNRW@pDWsP6;bIc!6D(CDR2}jhA zM8EwRfBM!QO2W>4ud(Q z`jhGlNRdO9kot4#nc(}N^aPkxQk`|yME=K7eTt(@HHJ~Guub0~K@GVNBHv87l~jnC zXIn~v2cQZPp>(mpJ+WGq07aHiR<;XlEv()+50XHrj|X!mGPeK<1Y80~>EPfbL{o3B zg;F8TMUtS9_ymSRi9qGR+3&)YI#yy1u`~9;krJhSMIMJ}`0Mdss!ARO(vI#IN*tQH zKhny!cbL+my(}9@12tRKxNLt%Fpjv=;yt zBC`)Mo=gfr?yhcEMG{hB9Fy4kf=DdT7S1N?ULiLGNfC=wa9td7N4+hs%>3DS2P(H% zK$3^#I-rwtmO%vp#=*I4OGzUen}P-lsN5q|)7KJ@5p;zM!D1_7Tavs%+%25!?p@@p zA&-S+f%r7w5oFO$p#jQIg&_Z48hy;U{;NWRSjk6aXNu`z-gjhRDUJ#5a!a5Yhu$oB#<5;EG@CY*=i`dRi&=4P<(@(D5iio zval*ECofnl#nNiuhNEmRF88n>*ulQB4dB@fLjsbpqS{czlZBnVVGYhzvNOm-TrBGY zmvF?J*jZwM>o=)%4j}S(888I|9i~oHM~BavamwW(R#S| z8W2Fwb&}3^mW@}>hJs0REMy8H@%Cg6v>{Z)Y9Ax<8Ah^*7!Prh7^@1dxSPBeycDnv zB0vxEFrjb&H5)xIvq-H)DmHFbR6;QvxDpvQ@}Q~)^;M$&sutcLn+S;vC^T71#Ozjr z0Qz;D-y_~%uu3Ppd4R0!46C-FVp7YAo@A`)*-*m(`rYrioviG@n;Ofkah)j1PPi94 zsOzYXfw>bV3iwUTSWuk_O!GYgr;{(NVezbNf*?RDo2*8?zSkl@kb-c9j8_6J|1w$v zVo3;HqVfXXyHdoe)vGg_yT<`H+uN-nZ!Z1`N@uvpgtH5%(TMOB6%?K6;tLJSS^`x_9UAO{XmMg>9?t#Fwe_lnGIHGr4~$t$eKxFrKoBEVq8 zxzVw=69fCKvIwkA&HM!8|oqICCZ;DwF7)6bfPucBh^oM z4s6qxgLvSpEKt&5ut$?s%z>y14v)wd|CvhWI?V$LLWl}yETNkNRh1y;2qvToj{r#s zdyWF{H@T$G4k8eza)mNIxEeAyrfyybL`j!|kE>G3u-N*{$FOpI$PuxRJutZVgzqj+ z*`-F7EOZjsw-KRKkLj$$@C7`lOIHm)61>$38o$Ucd*7}=H81~ESh5Gl%- z*AYyzMmBU}bO8a+DM0F_A<2W!ooqf6Cu{ufz`TI(V!7{D_zF{!T##cT->WHS)v=ra zyHJNsomdS2kW<}_aS@xPV)q}gADWGDO&YK+)TBvlL?%nG1-A^Kax)$3o-V|Jw5`LK zD0X8Vv}{398cN^*sZd1+YN&k}b!4IxAz5sJ+%*Y1#fwwsK%WFQvh8)adxY&uut$M1 zoda}nKo!;j7n?dfFLe^ifwOl*I-i~(M1jJN9U{m`<~WfDJ%Poz)JrHBY~@e*4wiMD z`?qY#A%dfx$apbp1%8523t2IB#)&@yWDE_ixG{|5sO(sIUNTPOW+@z-2)532LeEo?9#(fGk~n}VNCu6 z&SNMBBrDaR_t|J;AZBE`stN@CmG&Z#1}^P3IzU{&?Mx)y#N7elxLC_TPVajicGr7R z^%zG}R`qyD{2@}XgeH(45kKH`Hfk4QC7WU8Co~bwL>hqLKJt!i%a)F=T$RF8LLkC# z`bH@&QFZdD)ae3+g>oR0gpdh-LpT!X?kal)sS4xjB*^eXmkUn1vS83xUK7ceW&iAC zGSSirZkNI4LQ;^oS%nAm*tJ0;NLLa{Z<1*`Hb5U* z214$SMDXmoTN0#SNEd?~DUQhODt{=Irq>A}2IZ-2hy*B5EEZHiwW|5p?Q0N68~}N2 zqQMFK0|#Xk5ZJbl$|M8kA%F;>+4n5eN*t*?fvg4Nz&}(s8o+vi8>3Jo)3~Wh)PY^oau(w1PF7o%{%CU2dS*1|2U4$LJPC)%)K=SB& zoS?u33RZJNa-1_N_VkpZ&OJNm1-`czz7vx$Uz|*1G0t*a8>mA^0lgw*4<-H_I6cS; zwvjndl#3xS`YaZIM_tbwRBGO~HWeX95xsHEp$I4vLZ+T*Tp?eSKGcf#e89*(2 zx>qY0sP~RVY2*Ia#N8x4=3?iZ20^R@>nv)>?j!Ny&%7W)33E)=(4m5l&pqI@BH^t@wzvwk9R7<6U&jAQUw5nZWb+QS@b~k4riqRre zETJ6x=}-hQfD!A_6V;Z)`!(15_Y~*o)7u*+7jhKph{ZKETbqrLIWpQ5F_IUQW zAm>3oCX;ywxC&4aR;wPGImS_{qaKGYRFp`QG(yQ`#F`LaAxP2=b?EnNQ<{fyawjN# zfHJOL0p&r&qd1O7eQ(4m664^itM zW=X-mrsbw!A{mHbcIx?llgcAo$eo~td}xvcQxk|W%4%NWE?t9ricH0z@u4-^i#fGU zcsbH3lA>&ZvmwhZPN>bVU+3JCwKt^n4Pz3`# z;{sF=L3vlg9S|m9hFkl+2v{CAQ;HKQiO+Fx$63?>MRGINC@9#YDm~HEAP>p#8aofv z_(*&Xa$t}&bs{vX0%_~3$PSyjh)bP_MI&^NxnL*Z7x5zMI=^kGzut>Fa-vZuFVvrqco~c$4H0r;SC>)u(pND|9oX*T23cAivcT+!I0iwe zO(PUfG+GmPnLq;-_+%mMle;m+fNVeZ)||HU>S_WPMgBQs$L;1$=>ChLI*G6ynYhbv zi(F41xQD4E>cYs*lqa)>xnABoT2X|eElXd{kL2b>|7B51Djrw{U_QGV2G*)ao!j# z;f`!cb(aC6tB0ftq(Y!pN>*tG6ckPtFfqw%2#x#>lE*EftN|7dem|)!gnf}aI%eD> zMzoF~poVVpz*rusGZ~#Z)DUG0b8vK)!E~FMj5=0pae)Myu-VNsj#6+t53)H<>Yd=) zo{i4~l%a8+<(?X_!VGEqLouJ-elxoDlRpc15vdupV%!>u@2%p-*+xWzz^^F1`8rES z$N(D+x^)8IB17O20y*OM1K0X|;~s01p&;{>V}on}5NVdC5V;}jU6*0>#Lic+Ee@CO zQCMk%gbTV|2ml|>ZIP8a{_f;C4p5|}@Ocvo>rQrlq4o%jd(fROCweeM2SD_(Kvg=hW3!HBW`aK z2}VRhw*^-;ksV>n0(IX)-r~UO0m8nePxd>4L_JQVDkAg2zyw1W+~h~nN_;t)yXMr? z(J|x30U|m;$%w^ti7vpmaNilahlF+a!ta+Lt@3p{CV{GH6be_bqUu)|S$HczZ z3CSRt-MK-g+Q_68)}iad6(E#9vqa?3*bE5N2O7bk5fM6}<#ESCW1BY0RKwktY^ zE;1!cD{NAW@CM1kSa+_$O?tJmGAd+$mi#Yk$PP=CszS|pL_0H)KOq!}DAyAZm)&+s zRKnVC$*57>UO|ghrvthJVW<%4Ua?69-t*%BSnZ?|7k%i{tEYps{jQ@&XD9da@+m*m zZI|71Jhxv}AlPz?hV_KhCT(Dz@{+Qzb|+<{kZLicj~5blm^(NfwZC{b4y!|hE7ljX zy?Z~ASvrFarYn?ne?cr!e6zM8V9k=9$I84+(w(KvGF_@2K%zo#UG@k;MiAf9$FDn2 z6ggrk0#}fZnAAN-$T^XE6R{kcy$ot!ISOytXBxzzbNA%0N+)i?8LsK~62fDPjeWiA zpx_Kl-`Ei+b$X7{z$8~;4KDvYAEUH<1fo%k4HT^XcgpLxxxLvM!ZG44LWFif@qJyOOByEt6|pJPKDZr6hc*uhY$g9O1s!Pk zCvP5t3Ie)osXpA;3)O}~p;PTsNy zMdJ`$NiQTSA36u^#b-s(>pxtHed!Pv-mDye3K@theJVevUW-Nz9w9v*|4=xDmwy}F#uU!U3= zy`uzom?a=?1VX|Cy`VR5*6u|&)gi5JNyPVn-02GMV%-N4y#+g@%8ipDf=3K7eHfz4A+wtKF9ZpNP2<}Z}Cv`)44?QgFX@=u{uf5?yVaDgYGlL@Nm&m}>JsTn2fwM$BX^27AzUoA-EXWw_RvGI}8HfN26EgUOaT68$bbK$Qh5bcD@c}0=uF`N94+&wvfomjX}lT=$@eh{~>+2G&s}#Y;va!8ti+HiBWQJ zy$p-_3ifPW&&bH}7QBDQeC$RYg~4$UB&i&IQ@}n`BIKB6ISK>&Ck_&gcekY<=WK~< z0p803_=|sW_&gs-)B~bj0un$D7WlgzU<)hew_Wq6Fr!)ksRw7 z=2&OAr7=+@fdp>LbA)m$AO6~kZ$(HH-_zk9^QIzDAg=VUTs!Vb4(SSZGtB~6ggsVL zk1(8W`K9v9>|3{I!M#Ct76-AX(7&X|@}w;3fmXw92S0>NJw=rzJglKeBGC2G z|65Np`85i|8f9rLP> zBw_vk%79sm0|x{l8t^%~|8fs2yT{LwU`sI+0T!bkRyKpjI!MAaQu#Q!MI>eIXimWB zYcsXvi)O)0wvv#}6k*cuTOiv9;G18n9Y6w*4#qGPWlT6|l;w>H2+Fc?&~F$40Fk3h zFX&)KQ$Yo4#D@DHrLsAdEboq%)MRv1A9iIcaUOFEkO(rUpl*}0Ak?IRp-6!{m~rDU zD9MS;SBQo<~R8@e_s+&oU;f-I`pdZb*d8U)&R#ig4KvC^W7)c z!Cjh;{MnF2hCEou3gHzFY@H;LMfWq}D^>sx5X{Ul%~dwG1~<_)xFW=a12dtP+0b!- zQOfZw=#~o$M@=!TZ&;yj9`1A5=%xD^Qq3X56S2S<6>6}bMCbJvf&?ePjwzR2#@Myj z#OOkw9?8+7g!0HEVGjW^IJgJjEcJEQAqt$Sa7(WBD}ZA5^b?aOKwlW?^VvZZxTQ2= z^lyokxslPWGza;!KkG^fQn*x4+m&7&vUWL-pDZlHqohy14P z{tD^q#Iob1Qm*kWDV<|htKqy>Z1Q8N; z_jE*vk4A)M_1!ve5hJb7r=Jz}(7lc($P-_!VcPaK%*0ww{gqVley=>K&Rf0~G1oM^ z;j>pFw6jdF4v$#;!(Vx5_v(?zf14>C}Cz zY4%~Q*a2u&+~5A-1V91<2D|BpRHZAqd}nZd1xsuTx7TRn6sl^^m|uO$2QbIo3lf`(3s0& zs+OqqI)Qh~PRyEVXnUPv{CM(8??YmE#iO})ZXG>l2G=;Q@$l~jTpP^9w?2bsn?`YQ z3B#lPQ87CUD^u&kMn*Q)V)|A_N3F&1KO|P!n;l(+{(Z{p*@fq;XKd~r%}}&=^vyp# zNpZK-!UT=F(FXm+<4XK4_RgR?MhhA}t*No3)kyje$ljlGXtKBHhs2*wR~zyje)QR~ zcxCFw$n}k-GbXH*y?EgLs+8-a)znnaXI#{pIWh9|u0{0OX)Z5{B0VSEzbIc@q;lS2 z_3J*jIqx2XnwWLybH|9O#kPr7J8Qbi$f@sRGkDWqNLh^r!tU>X2yd=QN;_ zttv`=VL zXxgr#?28I^SC-sb+i1rf7VK-RvhT+7iOU1?c82Vkb>y9LTWh6?sBY};F*7|}3*THY z8Z;D)Xerj7_Tea{aB1)>sm+BRhXakRLby&dFQ{()HR$)tyUn)npLJ0!``unX=D|JX zcj8ytAHLUST=*?b>G<_g3Pst+K3!f{?LWygFZd&^P{&`O$MAjI$?Cy*&A$rI8K?Nj zxT$rKN=~6bSET9F{y1}O9-i3--c_<5rlCi-%s+mjW{JC~VT+kd>big@D|d{_-a@}s zxJT64S1@et9KU;S!#;$%G(67OSe03w)i(Ww;^7bL6Mh|YCGuzCrP(p!Ruic&msNOm zo>>3*H;+$Yn^KxeUYv`cYY=QLZXXe2p&R3p9~@*NpzAo*)_7O1cw_CZ-sO$i!L7Cd z2GipCb?xWv@|}A2@}%`w-KDNhlDg_Hd3BQHRrhsQC&h{ddH1X`ELNGcV^DNk_jbzN zBIEW|cNCAUnGt<6LGXgp((p3|@-qq)y|*)V7k%6u!cf*=jQyS(32xrLP-H6?S6ahQ zT(iG1By2)!kSYc2DKRfuJ;_<<5oJo(yb`NbTV2{=1U-4wD+{LQUX)0UokZ4{YZ-)rIJx=bXyb79?^ z85eV=uRoDw&op;geY{DMD`>uArFdeyiqgLTL$2NM-N?pb{V|M)w<+94w10HKv2raPQZLXglp;?jPvW+}qgt`}yvK&{u5FS|!bKs%6I-I9)oc0bffCeF+Ow`yKZ$|w z5jN1vdL6C%c6-BR(T_#bG)-h5y@#KDe06wJRl02JbF1^yrzZX)`arzjJ4#$BHk4hxSx<8A?pBPL?<{=Q(w!#k7!zcwW0l-K+g)#$ zjD=0zv+OfD0X28IEq`hoqw1MEUwQWF?oX;QlkDawUl&^8cyISz(d*lkUN36V(%H`Q zWZb7kdwz-Gv6S#QlP19*#hf3xapp8L*MLuPt3F2DSK{F^8$EjoUH!lWjpZ>9Uma7Z z4%v9i%sT2^cYWsBap&SjO@6P(ldfsvJk2=Ly?c75cI>iw#=bKnovZJZNe8V6WNfwA z&+`uA5GxQpC@l$})8JrUsk6prRNS2&@#1j{clg9E*!RG|%+o_nID2FB{FZ|vcBy(7 z@_O_Qe>*T%DR9g)*VH>lDT=C1r@e(-81Hu|(7U_6DD%vq9VDE&Z{6_&Ujzd-n-+I zf-M5>^j!VvokU*8Kt{W3++9lFsS*Y1QFG?JJVs^TodmhcU)E1kJ9S~_bb(D<*H2${ zYQ;_A((!T!=9f+oKCtlZsoN*BS~~qLsTDn5LZ>Qvge(W@d`lUA6(1<}s>hBz|J`y? z!1$Rr7fYPFV!3$#c+E}92~$rz|0Q9%((_-hPS`rie=DW9DHkr?N_lacx+9MAobrtN znI@IqGJ*TKx8=e;r>?)7qW%1u<%0ba=2j}zPZ(XPHhaSK1B*q+!WtbSN)%k)_4KqI z>#uWbX;7%@f-4*T{z^5bQN()%mnkkKokGn)JL2Lq6u1U|bhoLkwgVZw&s+Ki7=6_> zX}zgj&R@PTsxl)Kocj8E(n@G;6%>0Kzc^cWhLv^+YY8t+9(d;f)s_Ccn$eMI<>dER>SI|pvV#x zk^3SZA(sP0_+D$|s+jxeiEnB3*(I)W=(YNrp3?nS8ST~z@wYolcPyi2NkxcVa;;t} zt+HHY<&i}Xt3@Ag3HMR6^6m23Xyxbbqawcbih5j~%QpF%i+x^Hf79G}zq^;}YW)kk zvnqt8w|M&ahWLE&QOZ@#_HnCT-mpkYMT~!u-Rq^-7DXRiX5`qK@g|z~SbDy5CUY}o zaP4mn<|z)k6=;Cq^1t4pwZfes=j^PR4JB1#$JR?#JPEgWW8Imx%R>6g05rQ?s>st73&-kb026 zgds2UM1YWU+sMglw`+GVrb(A`FCZ?c+P)`2KLy)X*E!q%y$vNjG--Sbe588^;DR=VBb|JaBRXeObj~B#LhQ)4&`WHA8UCYt zCNKDrJ!744L^@HIA9^QZvQKdJUz?s|yhcm%-dK${)}|WoHMw8!vhvyEqn*1&`}IC6 z@BJcy)r%WMT&q{{i})VAB6|BMEx9DLM=z{+dClV=SGkCh*+Fu_535|(V}<6pP-mu! zKTPqd^hD?KAMmB16udvKMOdQTBb2D?2qn64WD*^?F*1odzx!c{wmb$;Cx3Wk79cc2 zBOZbHrF%07BaQ|m3(&F96ZtV6-8Djq-W#DrKa5bKCL@&S2z`pz2o+j+gbE!zLWTZu z@k`b*V!)@+mzcp6BZ$WGI2!-Bm!^(TM|X@+qDw|7QQr|tRAqz;9Wp|N&K;pb|G4;T zOR3;fQkWrGFvT(RABHx@Ba~?L2qn62gc5x)LW$;&P@*G*9n=xJ2-*l0dIaJR7{~-D z+Dnbu2jDFGp;Uy=4*}$XTO*Wc&d4O1GQu#XKSCEFHbRN=jZmT8MySx6N2t(0E`EP& zN|~9)0K-=jrbvJMV+H$sITA&MA*_^n(0 z;*+vWXhN|?c`i3UeRAnGk-6%5$M?Q?-kp~pu4mtIYcOftCbio_V4L0h!`HV(A1Rt5 zUT9|S=n$6N!dHCoMtYXe;?XIp<3bMp@`HbNq5;mp0CQW>03zA{Xn-IXz!?v4`kxID z2LqJh0c!r)0NF5rTpQZLX4*g6LM;pshzGd+&jw(?0CYUS*mwVE1+$zS!gN2QEg1c? z0an2P$#{VDkq_`r($$Z?_eGn6Nz%gbJ%?^+Mu^>VZ8$7*ZTW69lWh+hjwW6WzmsjV zw)@UA8!3-FuOmEmaXhOba!aK^m3W??(x9 z=`W!4d0M!1SBMEQzEoK-`zU&p{=N(R`s!HIWfD(1w8b5<}1nnSwnoj$Y}Ku{Bix`;xj|7;$@?=_rCt9 z;y>xj^1ocbcb2ztw(zN7R{45QqYea#W#|eaca`M zv|KfQ%Q)3>JBklJ)f|}+Kw>{{8s~N3$lXcnbwpg3n2CQ3`(cm9@_b{>*4oEcT=+s) zHq(4@`OT!R#_r8FtLJWCvfC(hyT|=?f!q1s=Y6gR1M|+Rl|S1;eW~-etGmy)o}E`YWS}j{>RiX z;h(CZ@V{#KuNwZx)G+3ss^Rp1)$m_6{Ew;OlYgp)Yrj=PreCaeiS44y(E5lQ{ap33 zp5r%6DdWAJSkcy9YNGmd^!yx;F%+7mXmFJBgYHY6wy&=1G*xRgR0Xb0Q#$ zXU7(SQn4$W1ilpi%=2^d;g6a(f1fHadnA8k7aXxn)%y9!N7EG&OS^9Uu7CPR<{i4U z&!RF@vk6A zec4g3;i}U*tNq-GRkI6Em(19I*fcNOtFyC~@gncX|2lDj|3oy?ldvC9Y@QW)OV4~NQ%LTJrAwZ& z@jq733xj5#d${#=oWC&t^?&~c0*U`bL`*jMyvoka{@3L4h4SyB$KBO*?mE6nh?=v+ zxT}HR`M465n!{(@Rm1OWtE5lOkuvUT;di!Es-WiZ8h2Ik(`}R#s5xTBT}=})?0Q=< zt__9wlF|PH$bXUaxc>l>zNyJmZWVt{`9ssnPow2bEl=brTm177uL>TtvP7qBSF-bG zUP}LxxmKxhcp=INBl4g<=y^nz4+yQ^JO zMFo|@@MAKXDj1y=3Ii<_jGB`|gJsMoI*dU-%3vLnULT*zsEKEOJWcsB5YNl#+Ck|{ zV)j>Y4|;!4c5QVZuyDJ!wy`%Go<%H#XMWe=*}(o<_Y)b-*$GUM>(apt8T0IfK}JEl zBjcKo3T5!dhN@m&O2yij8mWURjctxE6B_&~r0CAH*?jblfm^9<{8d5v297R^x+%4h za;ff)F6UeNyg$&UmULz&)cF+#38}OQZaqr#3Sqbx28mS#iABmO`1DH~IHtHero8AG z+|pQguBA^rg*xPowmN);izm8bpiiKrQ}}+Mp$8h63Ip3ZDd-!bDXm}hIL)n~6`)z@ zf{}9i8NHqB;_8&u6_k(C3fk#T_>%0%bTkbOrjbmcTCnH$Xsgpf3q#Xbz%;YaG*scZ zI?>x-mB>B{8+W(cG6k{N5&U{GUC19*bV49 zF|L+un5C*jgm}C0Iq^1M1o5_RQ}(%JszORm82)#Jn@P5Pf8xE~(#{M&d0S(UM*C)| zGX6+8ij$kFozhX7kbX{1AnZ7!SHT9qUGo!uTlR4Z9wFnF9e(+33!Z3ReQ7{@*DrNw zK*MWz4fZq4@IW+aVrdJm69e3gBnDs-(;j_H46r{RPq#ZV5$(^uI=9a~^S!WNxdm;- z{Q*H+>3QuwU)*=A(E0DnrOF2VnoED6?&#tmTYGDRaBQ7l#@ZQ)YtajX-1JuW4?+6# zm;*_~JCv2J*;`urYTB85lZcPpeO2pzmpP*^2;>;yQO1A2w==UU)tXojqlB z^l7txyV%Se1Ghn!bv>2D`~6gnqqK@U6ou3$SW}QfmUOk%`DqD-`xHyB!Wshux=1wj z4}WN@GZbpIiYZ)3@pE@h*!qB1Q-w}j9*16?)|959zCrl`uO0t@rC)IRtiH8E@B|Ht zXUvc<70EvvhV{>jb**4zZ)YU0-TCgy<)Di_F7mL*NcsIDvDPp8E&bpfY3-xlsas!? z*D{P}Ix4V7l{QF?|L#bE!ue;DV0~!g%^wTTCc$8rKQJE{;N|0mDkwM8oto2h4V)8H z!6cKZ-yf*zaOCD5^f}L2I<@ZiD_meb*Vf)CZ>l*QX_P&?t&(`X_XP1ee1ZN~ualpD z>6oA;)G7{pQ+8V^o&gIITp9NkT#3*~A2K*nkp`g; zNUeJVo%~cUc~v<%N@*t^>`xxFgv>#C(6PN;(^Gi`D`amm`_;_B2QTHkx+||l^2QTK z>JZXe0%}71i{_nZp$}4FYhpa;fJl!MI^iw!q+&RLD}|j{)5r~zr{B`|#VG-Hx0z8s zcfb;Bbqj5I{#hN?V4y9X?9aRfO~z9&qc61df!NriaGqm*!s>q9lUP1sD@fnl`|u72 zbY-sTTXCXrq~Gy-giu}g_R2+FQlN{IL~}8jEb+yp4yc5 z5ai%NIGH#k!h9@u2+Q*FfA>aZ?pv|gbZ4=9CEB^2R%b} z^Ec0nrQ!TIa{``V&kxTBQ$BQq5xDTNr=~6MaU6hC2NPGtXP6IKhlNU;I^Z;9W-2YC zZL6-=ES-bgEKz}VU@IUGt8f6B%J&As9-TZz91d7Blt5_s_W3u*$&nh0L!4v&-t%t{ zbLheT`SV#wt)w#W14XH^vrn?8GLFz8bt)|$)|rmn*fw zGgy)vOAANx94)&9oDrTM8|(<4qnI2&7lD|zt!11+{%R9WDIU%VD+wzDEoJQpdx4U| zvn6aVFoNe;f7s$cK7b{f;m?Ej6;P)_a3bY6d{$?9Kma;~)ko6Mk&`m*=^H$p-wmh- zw3kZ=?Q?9j9F4&?OKQ(w zJ`YD~WNW=2SxqBti?e(xI1iS;qtz7vJ|dl3ci*5)PbL0*w>79;H~=#2moOj$d&Ulk zbQk2uu$*-9*a!jwDj_W!oeVKB(z_(ioRMg!KRyytd0i0yIwAza961k~Mz9Tesy@0J zsUZ@7D`$s4uyn+1{*e&ot&DrIHV(m2pjOf0a>GPWQNmgi5UD!0qyW73A)Lr^fq2yb zSN~j=82FOMhk-BaSg^{nye3jcj^hW{{nrOJbl0Sx_@Bv-bbQzz81CQ;!2FX~zRt-7 zEFzxm1}#9|q=#y(pt1jjRgm*RtnudT0NR{ZHpH8dLu2P)hs_$RAeb%7;E@WFQ~tn6 zNClD48*0xbIR;w?H>hE-gB=Eh-U`lV{&bHxcn;Zq;@PB;tPA@;bB>4rNPNAnzuX~q zg7L!l6@+m_X2}VANtOVyV`RyOO7l9TO94{NngyE>I3bqkv6`{uf`T(^OdO9{!ytHp zuOJoxj$uduW1Ti<5|ms3js0dT!(=z)d`XQR8rfKjLLo@nr4_N;oDzuQ%Ri4@g z&L8*yGFCuLpc#%N7^Kw!Y$;)*jUEU!K%EF!Hj?K^e_A+`V1PkR`1j9o)CTd-BQPnJ z($MEFF@@8TQxN@Rd&UaR$00t0?0Yb9M6hkh##<{n8}d#(i#*cMald(vLmx|+XD2`9QP-D2uQPd@x=TQ2ORx&MJs-O&-h(dBmpaKuSxKnI1VvZOzZ&v`VFi?93kKkz?u+6{J(sTwU?z5Sm303{LOR6-m_W@TBml4zg8IR)~5`# zSP0SkEGUfkO!!VX@{8^y+&4~kT|H?`szKkV+kT;ZAGzh)f8yIVZPc-9(Z=4bZV6cr zluBkz=%2>BOjFxdDWkW<_x0{`d}(he&a0Do9<@Z>6TdI?Qo_IT#T^R@)zv`kV3363 zMNzvaszHrQH}@UB?$xIryuAPW-%P%!G8fm*QKSCstF^?*uh#M`UOmM*;sfQ} zpj!CRHH>8IV?yCVCy za4q4RaVyV{+qkk(YEH^pIsbzN?^HtLv&>&yDqWE7Gtt~D=+YRUnO;rWM-pdf^)BGw zJxfr6q5dRV-lJFlpijUNqYrP+yb_GPE|y9C)%RS~?+sCmu){vbLMl%u@yPDFZQ*;V zbkhEY^P-Nz`{XY^KHhMvQbUFDqHNtJ{{)eF>DP3!!&47Rc3XFZ81K&0dS+^$`}>ha z=7sIT<735Cw%sa{5O}`ab9!asl*3w=s}J2f`_ zQK9;qC{eMJGY>ny8)f0K9=it+Reo^Z34JMtx#5nheZaYz=d5E@QTFhJ(pU0Eqlbtj^ zn{jU}*=WvmeX5Whw`0kDW9P(eGy8b@x!DT;psdJTFk|M)O3kTXxN<)n&t9fD?V^^| zrL3a(ts58I+W%tmwse(pc{$04=L8m>>+17d+OvoEIz{SyU!ks-g`U2CszXmlR_0x= z)cy`CZ^{X)yzqIYgY+6csSHhOmu>gQZvQ2k!b0=(llwEW{Kc3(pZX&x(q3~*=wVrY z5%PVVsZ`yHCy9(tvp2{!Ywi$AmD$nh+9{i{7cTwsGHcCX_xrtGLeBKA_F&EUlEKf% z{hhn(k5|99Q0{MNc@^#ET^BFh(jrMM%U)aVIaqH{ou2;6OH9edYE8#`H*c!0`{1BK zb*G!R{(kqt4ufhtrVPNu_4XcRUp2-lOLtxXQk--O)$SCE!_9Z&4a$E+*@cDc*p`LP*<1Fg@r;JlgTw=QJYnWqwrRvmcQm9PCLYP#9%im>`##iv zZ&^$ue#s~=ka_O3{`AaHoxNpIjaM|{A0!&(tqe2YXL}&;vzHjCL!hVNQR*3b;7mpNR*S-l zYi);_h5BiXDWcjL44IyS$W%|db1yHykelwSSq}{<f!OTdBz4WI3OY6e&$@x&NTw!N{ShW$Mf@u1TQd>h;cu2HD~8q0V^d%+Trm6Jez|T z9Fc&p$-9@cbDcnxl48N(@pE{Lf)|)c#CV)Z$k{0+(4nMQad^BS&*|U=$0Q^?&%Dan zDJ>wbtXOw={9K;f!3%69Vm!|j=Iq=cV5O|sc6j_ep7h`a4iXYxXXMmXM&&-~y1WX3Pd+4VxB>4rBble)ZqXRLXrFs}cfzIby-c&@T$ zLv+}eN{ugF%blGr%crUe{dRlDqg-XJoBx3c{)g-P%gcXdUac3JPB*+o+1BNCp0OrJ zVR3)P|NKRJ=GTMVH?^-{I4|+S*;Q4~n(RMrnwRKvc2&(yQ-^wkdH;?1M?9uzm)B`V zTJ=H`>4rBc|K%5-4-B2I!K5}Z;BmNd_{8f?7iyn`NQWN@ce~ycTATPl z`v2adly6YR^#8x{r<^&pUg&qm|Fu8f^+M+v|11COsuw!V_+R-aGDktOKSPOGST8h( zZWv5C+U4cJ`2YPy$^(jQqJy(Dy|yS*N{q_jkbqy+w*LHl^_1i{tGOQ?UvO*DDDPFe z-D7s$J@P2))ax0~-s`N$D|7VfT`R0|V=a&3?{jvjtjw=}yJPIl>`(XQCD-lE-a|=R zTg07cKVi+x+4uZ|OS0x|G^p2n5Wr`9*3w90o@Typs_)xLHx2W}0=VS^S2kQ)Ft9E6 zCEq^T`Hy~8ZCqy+b#>n!rw=tbzBRi}EVQ-2-}gKG`^z;BC{4HlOx<8K7uOW7@uLn} z81A&Pu(TFCU}=e1@%&q3MlHR;1)uoe{a=9Zb_@98?K5qodxR#H&3UZ5bJFh*Zf)7n z_2{=zK8K9e?ik*@aPZs%zvhA+al111ITm{eMch9twAU`fHB;ODpsU!6Zc#q|6Vp|j zdQaPzyCn557dQAUlJGHd%92IL?kZ5!n`R5RAN7vf^L+OLliEWIM6L<&{t|tuXW8!4 z_FQV_rI|Z5@;@rBj^OSRwdfe!`^h`UPfKr|;l?$4_QwpSZqEEoM!wi=$M&D{8&i%1 ztb2NYYjV`$aX-&AUa>mg`i6|7tbmQGn$hxO=I@>;WiAO^A#I!Y@?@IPiA|ax$6uD^ z{xE%$RLZ)-E!we94(C{&<1bP;a#CvHz}QoBwH9cfnKVy&w(rCQkBZc-_a2%ZHMi_YO6mVuzpL#| zz$({RI_aujfAQk2w2z_VJ&*g|eiY zO+v<*xNrV>mAa9FaniE2g&W3i*IrxvyV}8=(*fS@`lmNO;Tg3lL{3;C*kx*U@ZR10 z9h0V9Jt=lZM78xxhSIWMuWw#z@I_1hzR!xWBClUgYWitUqQIcHx^etyoe5@}tz0BU zuRS_Qo$~85-QUkBCHk7pbCaprQ|N!DYs%>^C4noyEo!SQj+&4eHE);D_KlVwCx>{C zqM1h(-$t=sCo$HlzCViC1{%wll?3d$JXK&^=J~r8KcE*_Os-G6OyUT~| zmU+n6?UP+^kDH&Ia@e0{Tl&jb4QKv!y5r;dj!loZoU^rSyVsla zpW}_5cL>DuZ`F$PS*N@BZdtM632)_%O$k$~qFj%^np`qfdB1jkw06ery6!*JmLEH? z{JQ5VCBM&ORs|}$XTEJ(mmDq?bIW$WmJN?qM4{#}?uY~YE40#^?1e=u(&e6pQn9d2GK>!}~|`B#~$ zHv?s@`_4wo1l;>WY>%9ikd5P|Pr-4LOGNJ6yI`b{C7GFEU%Eh?*1m{Z!T*$ME!)}6 z2+QO4x?1cKbDI=9x2fdRW zn>8GS;#8S-%$DQha(jAuR<%<3AKLz`6+On?p!WCt!@r+?t}Hrlo_I*S*22;nd$%mV zokG!v*PlBsBII%H+OKY#XBh>`yUAYQoimYPm?7n@KTY<&)~L7QN2a-5bAGlaF_>Pl z{(AIW?qwsU&%h=$z;TeYB-<)%wA zsA{Du{!=TR542TjRLVtGo_KA1n`-oUnnFs&y~LozSI2UHS-vcuo)v0vIR8*tP+kD@ zMDCio1?T$M5Ihw+t#)I~y!nHh!PV@==W!7A|_O*evQ; zeEp@Tk^ddKV?Yc~&4Q33t={bRz-tDH8rx$=H60AwdTH^P%{LrYgy>zVzaNyYxzsA? z$g}Hv70)04_%239VMW5tC$XP@(;1z=)pFPTBg&7L<-BoJTyxxM?1jgR*4s?sd#LgD z>|I@hv@h3Jjxs*A-(YOegj)XA-y`|Y*Poo>^y_url1W_8)=1p=#qsR>Md|u_yn7!j z%o$hn;(kcQwbkzzv@X;6oV-3UUd{7mc$3d6A%jzc%Ul90ZvdhK#vdrWZHI$-c z7i->Zl(_3`WHFYJqwn#H?YRzxW7B-y){EF)-z9$2clW2MJ9!?b>ZkTY^!xVLYTlh& zwJZ%JoDKg^B;ul(kh8AyIudvRK&fy9hY;u4aPF{`E4O03>#|15mL*lFuV zT@cU~m_2*;H35FtU(;`&dOX|X^!lu~E4OVE-8PA5rryS}9;eoCcVD^9gGco3)8$6V zKR?#m-T6t;_4KK^*1O%reW!Ojcequ}?abY6t?oAWS6THx1|Ms!pS@`IX|2IQ`u^L6 z0fUO02AwajA57ctTIw{I7F!rN-CErDf;dmY%GrXmWoQ31d*N)K_3LMkxhgVy#?|OT z>8oQHOeRe){rNM|XX{WX^MtSmZ_$c4~$*SSY8vdJ4oB>n9i5(691*qX84F9&f%kc%>X%LaB;az9K|)94-UV2IMU`^zi0BOAI06n2mLxka)#vM s`aEsOl2`$A_~paB9A|)|Gx3^OK5ysNv0#pf_)g(k11hRD3-R3l10PDzX8-^I diff --git a/tests/tests_unit/rules/test_importers/test_excel_importer.py b/tests/tests_unit/rules/test_importers/test_excel_importer.py index 4dd3e354d..02fce09ba 100644 --- a/tests/tests_unit/rules/test_importers/test_excel_importer.py +++ b/tests/tests_unit/rules/test_importers/test_excel_importer.py @@ -13,13 +13,14 @@ PropertyValueError, ) from cognite.neat._issues.warnings import ( + DeprecatedWarning, NotSupportedHasDataFilterLimitWarning, NotSupportedViewContainerLimitWarning, ) from cognite.neat._rules.importers import ExcelImporter from cognite.neat._rules.models import DMSRules, InformationRules -from cognite.neat._rules.transformers import VerifyAnyRules -from tests.config import DATA_FOLDER, DOC_RULES +from cognite.neat._rules.transformers import VerifyAnyRules, VerifyDMSRules +from tests.config import CAR_DMS_RULES_DEPRECATED, DATA_FOLDER, DOC_RULES from tests.tests_unit.rules.test_importers.constants import EXCEL_IMPORTER_DATA @@ -49,8 +50,13 @@ def invalid_rules_filepaths(): [ PropertyValueError( row=5, - column="Is List", - error=NeatValueError("Expected a bool type, got 'Apple'"), + column="Max Count", + error=NeatValueError("Expected a float type, got 'Apple'"), + ), + PropertyValueError( + row=5, + column="Max Count", + error=NeatValueError("Expected a int type, got 'Apple'"), ), ] ), @@ -189,3 +195,25 @@ def test_import_dms_rules_with_skipped_rows_error_at_correct_loc(self): assert len(issues) == 1 assert issues[0].row == 15 + + def test_load_deprecated_rules(self) -> None: + """Tests that DMS Rules with nullable and Is List columns are + correctly translated into min and max count properties""" + importer = ExcelImporter(DATA_FOLDER / CAR_DMS_RULES_DEPRECATED) + with catch_issues() as issues: + read_rules = importer.to_rules() + dms_rules = VerifyDMSRules(validate=False).transform(read_rules) + + deprecation_warning_count = sum(1 for issue in issues if isinstance(issue, DeprecatedWarning)) + assert deprecation_warning_count == 2 * len(dms_rules.properties) + actual_properties = { + (prop.view.external_id, prop.view_property): {"min_count": prop.min_count, "max_count": prop.max_count} + for prop in dms_rules.properties + } + assert actual_properties == { + ("Car", "make"): {"min_count": None, "max_count": float("inf")}, + ("Car", "year"): {"min_count": 0, "max_count": 1}, + ("Car", "color"): {"min_count": 0, "max_count": 1}, + ("Manufacturer", "name"): {"min_count": 0, "max_count": 1}, + ("Color", "name"): {"min_count": 0, "max_count": 1}, + } diff --git a/tests/tests_unit/rules/test_models/test_dms_rules.py b/tests/tests_unit/rules/test_models/test_dms_rules.py index 29e452953..c01d08717 100644 --- a/tests/tests_unit/rules/test_models/test_dms_rules.py +++ b/tests/tests_unit/rules/test_models/test_dms_rules.py @@ -200,7 +200,7 @@ def rules_schema_tests_cases() -> Iterable[ParameterSet]: DMSInputProperty( value_type="WindTurbine", connection="direct", - is_list=True, + max_count=100, container="WindFarm", container_property="windTurbines", view="WindFarm", @@ -412,7 +412,7 @@ def rules_schema_tests_cases() -> Iterable[ParameterSet]: DMSInputProperty( value_type="CogniteTimeseries", connection="reverse(property=asset)", - is_list=True, + max_count=float("inf"), view="Asset", view_property="timeseries", ), @@ -423,11 +423,12 @@ def rules_schema_tests_cases() -> Iterable[ParameterSet]: container_property="root", view="Asset", view_property="root", + max_count=1, ), DMSInputProperty( value_type="Asset", connection="reverse(property=root)", - is_list=True, + max_count=float("inf"), view="Asset", view_property="children", ), @@ -437,6 +438,7 @@ def rules_schema_tests_cases() -> Iterable[ParameterSet]: container_property="name", view="CogniteTimeseries", view_property="name", + max_count=1, ), DMSInputProperty( value_type="Asset", @@ -445,11 +447,12 @@ def rules_schema_tests_cases() -> Iterable[ParameterSet]: container_property="asset", view="CogniteTimeseries", view_property="asset", + max_count=1, ), DMSInputProperty( value_type="Activity", connection="direct", - is_list=True, + max_count=100, container="CogniteTimeseries", container_property="activities", view="CogniteTimeseries", @@ -457,7 +460,7 @@ def rules_schema_tests_cases() -> Iterable[ParameterSet]: ), DMSInputProperty( value_type="CogniteTimeseries", - is_list=True, + max_count=float("inf"), connection="reverse(property=activities)", view="Activity", view_property="timeseries", @@ -914,7 +917,7 @@ def invalid_container_definitions_test_cases() -> Iterable[ParameterSet]: properties=[ DMSInputProperty( value_type="float64", - is_list=False, + max_count=1, container="GeneratingUnit", container_property="maxPower", view="sp_core:Asset", @@ -970,7 +973,7 @@ def invalid_container_definitions_test_cases() -> Iterable[ParameterSet]: properties=[ DMSInputProperty( value_type="float64", - is_list=True, + max_count=1000, container="GeneratingUnit", container_property="maxPower", view="sp_core:Asset", @@ -978,7 +981,7 @@ def invalid_container_definitions_test_cases() -> Iterable[ParameterSet]: ), DMSInputProperty( value_type="float64", - is_list=False, + max_count=1, container="GeneratingUnit", container_property="maxPower", view="sp_core:Asset", @@ -1026,7 +1029,7 @@ def invalid_container_definitions_test_cases() -> Iterable[ParameterSet]: properties=[ DMSInputProperty( value_type="float64", - nullable=True, + min_count=0, container="GeneratingUnit", container_property="maxPower", view="sp_core:Asset", @@ -1034,7 +1037,7 @@ def invalid_container_definitions_test_cases() -> Iterable[ParameterSet]: ), DMSInputProperty( value_type="float64", - nullable=False, + min_count=1, container="GeneratingUnit", container_property="maxPower", view="sp_core:Asset", @@ -1453,7 +1456,7 @@ def test_reverse_property(self) -> None: view_property="object3D", value_type="Cognite3DObject", connection="direct", - is_list=False, + max_count=1, container="CogniteVisualizable", container_property="object3D", ), @@ -1491,7 +1494,7 @@ def test_reverse_property_in_parent(self) -> None: view_property="object3D", value_type="Cognite3DObject", connection="direct", - is_list=False, + max_count=1, container="CogniteVisualizable", container_property="object3D", ), @@ -1530,7 +1533,7 @@ def test_subclass_parent_with_reverse_property(self) -> None: view_property="object3D", value_type="Cognite3DObject", connection="direct", - is_list=False, + max_count=1, container="CogniteVisualizable", container_property="object3D", ), @@ -1604,7 +1607,7 @@ def edge_types_by_view_property_id_test_cases() -> Iterable[ParameterSet]: view_property="windFarm", value_type="WindFarm", connection="edge", - is_list=False, + max_count=1, ), DMSInputProperty( view="WindFarm", @@ -1645,7 +1648,7 @@ def edge_types_by_view_property_id_test_cases() -> Iterable[ParameterSet]: view_property="units", value_type="GeneratingUnit", connection="edge", - is_list=False, + max_count=1, ), DMSInputProperty( view="WindFarm", diff --git a/tests/tests_unit/rules/test_models/test_information_rules.py b/tests/tests_unit/rules/test_models/test_information_rules.py index 8f5b18f0f..1e73fa80a 100644 --- a/tests/tests_unit/rules/test_models/test_information_rules.py +++ b/tests/tests_unit/rules/test_models/test_information_rules.py @@ -334,6 +334,7 @@ def test_convert_above_container_limit(self) -> None: class_="MassiveClass", property_=f"property_{no}", value_type="string", + max_count=1, ) for no in range(DMS_CONTAINER_PROPERTY_SIZE_LIMIT + 1) ],

`}T3pIOHx?|9lhhcDi?m?dZbDfOeWnAjC>h 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 delta 59151 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 p==!;HL{{wvo&>H{% diff --git a/tests/data/pump_example_duplicated_resources.xlsx b/tests/data/pump_example_duplicated_resources.xlsx index ad8d2491fed4d709f6e27257fdc38db6f156143f..c7d5ca0983fececac5dbd64900f12f1a524eec05 100644 GIT binary patch delta 11249 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 delta 11224 zcma)iWmp{1vhCo(-QC??g1fsD+}#2M8JyrU5Q4iTIKkcB-QC?C@<`6P=iGCjd~bgA zkKI+>d+%N~t5)qwjt3iw1FPJG20D7k>#l(V0C&&;05Sjo@U&z0aCEUXadfn0^0c?h z*HCcWVnJ!GsQKM__0b)Tq(DV%7Hfjco_^-EzltrK6e~QVmN5J0)4B(N^arQII#iyN zk%!082QL?|+Claj6IoYUvXhKP99Gof;7Ez!ETVozVsiUpX)7wI$P4^w;DgP@b^osJ z&t3T;N^n39c{-k2aPR?-Iq$4xwGp_0>kk*34t4lk_+G1AwLbYw)OB}=1U04$EK>EX z&bVvd*hS?&^ReK?K$>qV5I62a@CJFimzEnYKfjr8_OLMnO#0Xz*65U@u6WWJg4Nx= zi7eq)gmJ<7fxUdhhHn1^3)H8U+ZE7M9d6`>u&So?O=#ao8|SC#+^d1k5<5cc)m%9< z?v{lzG{fZ3?j#ydUO3lBl6Mvv%;H>!!(Dib8YH zM%#2{*-bq)ykSu_cUHSXXvti@_K}Bjol=sVkFT;vUp9!5u^Ihvda=_lXe=-pg_P{Cn$@_$c5dg z-~7%I$6FRfk@k~wdiK%(u<@fy*Iq3TML;REJ!cDe0C$AkoPH9s--Fd~O=p7nrQ$p< z@_Kpl;mb}`px?T4KX5hPb<@Kk-TC**dBc82+VSNDM1qP4j+}0)TYW7SUzfo`Kl(i3 z>I~61qFm;QbxU*eaMgWY&YkZo?Y2JStZp{i&OjnC&NTo`kGD2eqe36KC=L; zbuhmlwbk0IiBCMZq0qrnG6$DWFVP`FmmPSUIqoLJ=WfPkR-k?iA<{xTR_jl9@X@0f zamsssi{d0OH|u5Xl7yfRvF3uq*+oHCdhAVQxU1W^#P4YT4RRw#{q+Q^2@Y4M+;8d!0RSMugJQ{XfvkVfpAH&!*e1aUy(hmVM0v(p zw$7WWR;yK$m^R={9ZucY#tDgpYLMYb^~eeW@x)huFaCyzgS7q_kacBUg!u^AFW|%+ zO-Mvz>6)7=rGL8acVR2)fpM@YFAaz|>zpp?T}^heUG1v}1dwz-MAVVGL79H4$!=7# zgMkK0;T>}zKOE1Ecp!Oxl%I;&wdONTl@mh_?pp1tR3L|H(Vetq*#tOedkVj{C1nUr z)-*sBH7?(*ifgZunouSoJcG%GWA!dCY4>Zv&9@GpHInd$ImWEtBw8G_59Jp)%`H<= zNL#>+&JP34VxuDC-CEz$SQbCJUXX5sWvT!l_bJSg$?1i<3$ubpCAC+Wv~H@)53+6^ zT+q#BNL*HYsIB{3`metBLppb z<-YaCk!~dim$h4g4%U-u(|9gIo0zPUtA;z%)f@EG`l2dwTFJC5DvA$CLmwaffEI6Y4_f5bBxCMR1K>LHY|p4m5_?4?lBT=iP%^(GMIhoh7@oS^S< z+M)4T-=ZW#v*yhDb}og=aawP_u-n6e85hJT+Do38aL`F6i-46Z@(l|3&CFk;{8t1I z15;2boOS}3X6snBv$j684q_z*1VjB;E>nbaxIVNt*UI<`(0h}Sr zOsF>P$Kb42gML;gToxV(ZYo@!)C(@`QYxg#VG?=)H(tC!9Cl=QJxvMF!qBXQN;91Y zFbWEfg_SR2I2*Y?kiqQja9b^gO|cOPu4;dO)Jp&N8Ix+iacPu$Sdh(H6b^?}_k{<~ zkEx5}M{rOkvMt2Lh7{f(bQImcxdg#L4gJ3@q2bUnq?I+1h}d(_en zq|QuBi9+<8gk2dIBK*5msliyc0m@&S+7aTv#ouJUTso<G(L8Vz<|y*BrXq-ixnIH97+rp0Ht&I-gZt_PTW2A0y(I2TPw zvW5Xix$2U@zJ(8NC zSL3St_&Py~lnj>#6u}*Xgtdws^W1CiL(C5l%#DnH#TB@_79=~@#9q}~*UHIKjzs)* zk-v)^-%QBGbZ3tQRZ_suycT^jqxJTl+x%Co zr>;6|Nn->XLR|vH5Fpve(X5?KgQ9_-NQbgBS{G7g<1$u#pWRJQ`ZPjTRejJU3dVQu z4s)A*ja=V8^R=eU-_IwHjuZcu_Y+hKI^21gKfZUpT~9XR%<%E9c+&%>3Mo=M0<+eE zFO5RL*UM*#bj3HsZxxP)ZEu!}`}NcJa6S(;-`nigO2-}N4otKT_hnyi(HMxhei<^S zEiNZ5a*dqO1=HYQe5Mhn>7hAM;mMB6j>~ltClw==$`Q_KLAB7RT}~Jm(!8>bX2YE+d)UJXF6_4pWf)|t&dY-CUcN6F^kVA-A>bjZi%m+J zKx({MeLpj`@AZ?Fk`R+9185fHH%9W^9G8nZD74s7lA|}0L8vjIFrbYGRZcKLM= zfeD^J%T%v(pgb|l`#H+9`0l#+?y5OA5yXl(Z6Rg=IqXb<^F6vj^2>DBha&R@s!nR@ z-UA|MQ&j|pY+Ss38Vs7mp*i0eKA`arq{QvuUcALh4)z8KQt{60N-BV@ocr;Ko^{%k2sI2Tzd}35$dSYPWmFA%zpFPMTJ#hXs^XPSyaD~KtS(w$+<@)`N zjY>sVp%9<)TdK~b=Dbyrv2pees;V*hX8Ak$82O3S79KIC0ru@t?7O+~Vru0$ z0`Uf+kd7Pl{_pOzTG13fUYctcqNs)`Yx9W_OhQ$+ zS@g3O!g3BSwP5bN*yW`adq@C`neIR@Oqxd@0VKhl!JG|#2=lcsMGdS~gO+ZGt^^R0W4OoMGw+Ow-q zFn51Z=+kz0l(wHhHZVAoLPJUP@{&eXa*mf4ingHX^=T|wD!^Vf8a=CNbr#rwIfBMm*Ansmj7qiJnncXl zYV&`r<>#`{>aojW%mRilRE^X98SVHi=Z_j`7{ys9VM8oC82V7-0y@Y+FC0 zzsejxZsyJ%5l)HDp28jYFkfn_ho5Z@kU_PSVT+;Mji^CrYzz_8!n9-}qY3#iuKK{}B5l*rNfG_7 zf=y;Ds;|C;q&MkG#<(A7k>h4?YNW8qIgnmEb$|6JRf*bv;cuYi1;wDg=4lAv z?5|^AYr5$rV|$cennOjhXdDbg=z7j<;WMv7_hT2;2S;#q8E{d*4wA@0TXP*D2_3zn zU)(~M$UAf2IDI18H^N22{4zQ2gDMYSgHRE_^S0~HE`n?fT&;f$%@gd>GFt884+Sf& zvKrDE3(pV9%L0ozhRsC!4H0t&^H3SIZd}W~Cz%B1<1rZR!yR~uh||%K8T^~ym7wMM zU55P^XX~ms;IU$~z%4;Qo`gV=1{YrivAObzA^zs!r=oz=uC!mD)x13% zD`(32c)a)A{dy1F^yDKjH0@tBFtFzi6TfD>)L$@prmgd{TXkW7U2rH28)rJzNqiX0Cu+>u52bck2oJTM;rVdO4I2&hsG17=O7!!Ao8BN^b+w?6DC3N^pJ;Q)bZ%i+ z#p9CwWXkYxt8#cciHWHB#4WjZ0wO|xU2`X=FW$1ayl4pu@Wbw-|D)a~`6h_UMkZqi z3eqbxSPo2Z|D8-C;coyVF36S;9xuo5(|(@t@s@GQpkI7|K{YU87d2*)@h2lQzw2yZ z1?v>HSG6FUDh!G5@Vm=YuX!tEk|0isJ=oJX$tNb}4w;}A%*G68AUZe`+NwLAIA*(xN)uDVw zRpFw@ts%VgKf>#9{Uvu{peun)E!GvNKM%GvF#`8B0r`t?t?c6pRWqc9ZUH*AtGL*( zX(Y{g)Yq%IuQcb;fBfp{$^Ze&9rM7^P5W*Q9iEMF> zkweNd1;$*TP?5xO=6AQKPzp1qbk1}Qd0FvB=$!>56{IWwxuMfM71$KH<5Uf87q&)* zq%6uNRX?IpxsK9Tgb_+1Jqar6>*0tO0zk%fBfN4M#CLf9s(M+;aI1@*2rVOVYp63Y z4L&EkO(4oiS%M1L5NzytoPRkFCg7*L^qz+Coo9(z;@7L^?8RyDCQZ8C1y155W4rDY zFl7S>BPKIw$D}BRg{pk;K>) ze;eYcPjH>u-1Gz8a_`GB(aRZ)A?~;qeui}Ic z;^HjC;ea_&DF`$b?1buiS?O@;4;p=v-<6J7bjJ;GPGr|=BSb#+q3%DFDzd75%h_x&M$!VDzf$^j_jyr#qctJLQpLFQELcxf)~SVhPY@EcO4%hvL53 z)(WhXl?$gCXMbZYBL5D8>=;V-x5;_f5lt*E+fpY(6MZz3seFo-ikVZ5Yu+*VmG#r? z%_%+Nh?N5{WStA6J`8DL_(8B%<3dLKF?v#SJ|-7Txy|kfY?f`av8{4?R&$aH)jY+9 z6ien%3#Xp$Z^f9zirUr1q#&fC0Pl6{o&8B-D98+b|A(_8{%{sd<&N_o z&MF%1D+kjL{_xIOr~06G&a#c0L2?H|ztj_-7+ME^|7bz$#ShZBTHg)#0)*;s?_-Zk(YA|K%*zr3uySGhecN!vO?3D=;N1VH`zH2+qBcivaNG_{Mc5Brw;}}WU{}B6lRY$u zP0Hw$tbk0rFe>+81<+To4;Wi0o1P?rKKCEr!2h8pTG>LPcwHSy+r*kI&nM|6qg^rzT4VOqVO;7QDn2gJrWS4m`M+ z+Q^~#@C4j+yGFIShZH3dw8GI~k9jK`yNoV-f1oavtL*^;;!oF3iQPg!#ADIS!EMv< z2U6HdigUR=$$&lBqEXX1Fk-Rh$Z0-YawxJ>JR0+xqQnhTwIzvE*VL$Z@OTK?O$+%3 zmViYxAG@It*SiVcYQy$o9)q zKpOS5L%Uovl6fPEs^OQU6%HTMf2eB+cClY$p8^N|)6tOB1r$=VDxW4172*I}aI|Q^B_- z@(JvDWe)mLJ3GaXOK)OVamri?<*)0(gBIZdg!jxBQA6ugw9WWBkGMcCU-A>b;76B~ z+My`mG8E&Af8EqHvvz=`LCd}qSgl#XUcheh55ri(o_Cmuo11#9GI6)> zCrkfK=0AHcL*Z75z)h;N za1{40kbFiPu zi7!Va!dqOj5+(QO+jqHoZQ}k5>plMNdE$S<8V|_zk28V4`sQEw9)=_9`nk$@B-^U} z|Hiiu&;JqMAO8d2-AAv@yZ;w_1OEl^|0}+&|G)6v@=tt!meO%!c^JIp|5yNftd&Ax zDXF*GfHOF#a$Wl>Q7uh_FEjt<*k$JNPkaOa06ZDaAAB=YRk!wFbNN8#+*8WPRO?ciYL8Zt`(TnmD98w! z^%kv21^Z_a+}&+?>@3$$eL3dNRMCvU<^M^7*XF(eNh$JM(Zev?IhF+SY68L>7<0Y> z)h(-PyGsE3-CIG4lIpDh@bH zA12H73U7!%>iriF9T+^)xbjM58!P~j%>e*l06=F_SReyVbYNsQq8)Z9cN?D7N_L&v zMjK>J&#F0jIGxPm;@gv;m`pRY&|=%J5y zcFl*2-yRh`i~{Pts4oV_USXx*t@g)e6@YguDN$LuBxx8 z6a#!Q{_JP7^Z4UqR%FOX0aTbg<3hA-FmLq9qqTSiJ=&K8p=NF$T!EHNoeMiA`BHNc z;tzM2E7ix1zaMy|9Ix0+lj#&BzB>-jt&-9C>S)&;+MCzPXY=v_A4m-xd{Mk! zQU4s{>c|ZIcw@yp40HJn+qYSdFje$aN8*RtzLayXU1B#wUa;Pqy(F2GkuFodbgoG) z7e!g#gL1x4>x@$|MN?-)mPG2$^&~~m!6nZXBr#gu+_*$$$&kFDm|9ZM$BVF=6hB|e z)t{>UCSPrYkR)eTzU6#$Z|DsYBz&U+q=uekIe*gxN+Pt_DTiiH@QYHp1|IPQOO4~* z3&esR9k*0e%?`F*#TCw>rwG?h06DRb_-{1HNVlFt4e~fGDPa7Ba658_-45-{6?-CF zQZvrfp=ZkHrz~jtmDFt(nyg(pfihj%IBum$tc1FxADp{CI3!(12R~K>jIXXN9${?x>;;Ag-raNh|_jJJ$1M;9ER$op7?@nbeJfJPP zt322OCK>x$>`svsyFp$fg@6rv7v(hYfGbpW&s%5yWj;(OPWJZkl<*{A6FE3I#Y*n8 zDvcUtc$0|Y{z5(>PMnK(m&a-+P)ghex0FPT@3`)7?m5 zv<#K{8VXGp9DC18(m=G28+4fTj4TVXN-8No899^=L$r~=V;;wx`Jh<^K0nZy>&)o` z)G$@O5Ts03)QcQPrayU1(iF|Zd!4Z~8gmh~xefuQEK?p6g*4cda@A9PSJ4R1d~>Q1 z1If@R2%G{#P6*a@z%7HG?W|fkm%I>oiL@u?(n712jWM1~8_&NM*UHE3h7V6vA*_^H zz7ZO(Px9SA?dUp=EgmIP72`Yg;g{>J#-k7PbRVfH9!^~RBue{CLMuYyjFbRM15t?d z>YdIn^;>z+ggwy>P*#31=iMGCROA`-zwbv6i_%hncpzU)Y!htX+ zjFWLMJjQQ%Qr|#bcy&rT=b|Q2$q;I3B~Au-Dw>O|-bF%0r#A_?Fg-V#1h!lHDA-Di z#2QklOHunba>Fn1e{7D?UL4Z+lHbb2BA;H|47N`cP97kqBB_WU|+Z_eV( z{If{%@glU4 z`M7A2JwDkDDVu^c-39P#wQ^c-+4`8Wy$Z9i8NyGR`Gigf+`w*W0Wy%~Fkq(oL2DpSWjqXY3L3 zY2smr4QyNBV6FDEfhCbb?!>`_0IcW{v!PpV4J~lzA{#mREn!BLQ1u|AtspMp60HMTMW7S?jz8BKYi!khFOPdX zDhmt0naq~F(@v*@of&uy`4~*_@@&Or@+`_cRR#XSY{C354BWG3TKqUc+W^6jfriI@ zHsIzpI>gu4*KIn56*{Bmso~YP29*6^4$z|m+OQS|>jkzpN473}0tL5yhdxH+MHUjrc9aBObw~4hfrUPg|V~Lyd=(-B?BQPsVB}@7Kev`+BlXrMWk)HtK zE|+QS!zK9n;ztL5xGV#KvW7zrQh8~kD@}rpr_c*0-)~zMYx?_nisKvsluNz4G&aXq zZTZY|&`q{!x5aSzc~BR(BRuo{eEyhc4t+(=MwjdzS;wBWZ_3$1ybklTGWBBq6&Vt4 zCTs?Asz5A3i+m^9g-zc=@K4d}Fg=~TjhCcZ?sy}P z(W}oD@knqP*Ef6(*4~0y=M^QuL=*wRyQ~SW5$@4PcJ2dW0N&_aX#4MM^Njq>BqN>d z5){F5n3-3FpGc}S4$*RE$5U}rG5HatR{K||e#UNZ+#n}%Oju_ZDGufLq}22mhY%SU z&`>Fe1*3Oe;RPxGTp4cK99U@YSQM4uTBa+IcfW9O zOBrj8s3ty178O=>Ctxcn&IXjb?{hdFXUU)zh?x|KLD-os@!2c>BK1nPJFnbkLNoA^ zKn8c{7{k7-jJ7Y-F~^L`32C>-y+FgiTkoH~C4 zqWWz{0tSUZ42+V-mIe01+nw%2!J})An&g=3lIba5##YQ?;QiKyAPz51S|My|L*(Wa z`b%9C@aX50YHj_Nf3>*N5GRY?Aw%bOCtBFA+6@)Lw0_;Jf zGAku>fgcO{SsB0*SsgBG?F)es>(_6uV-td`d5X``b3WxZb}4KH$KbG{9fydC&G_m# z+4VDq*^XNZJD}iUN52eH`9zhe_KIsEA%T*{ejt?2OMs>nDr-r6M?Y`LTR|!XPVi$y zZ6MzD1FViHq4I^Rr~s+kwqC%Uh(N?QEJnI&LD(lHf(=4BKamb322(~)#85ILOME0> z{bu1$Z#8d}>R&M+V?#+7!_>|>=7@J%xO+CH7BE4-#Yj=*Tr}2fUVJB)JXz~Qh0_|6 zL9F5m#PkVTMxV9Q1u8-uZ0ox#XdU-|-T30oJ0+mM2pB$MgEGY9;Qrl53gVVffLwbQ z6d*V_JO*VsFmT3qT>%Yv?+pTw0{-1*2LRx_kNo?`fdI;u!~|_iU=sYhm*{^Q9U%WT zqLsuX`1jG{|1^@p`D@gH0|nXjz9x1XG+TXb#q&i%(l1!-12!V=83i1>=IF(dPYr&-L{3q1ax~DfbBut66t04C}42J#fupfzl4-E(=Y>Q5NY~2(iv!B((HFnB-oRWQ`kW^CKGp(th7c2 z1mqf|{lIJfaz{G5OwJGXXhR(4K|LzIg>AO{FK|XGi;DW~T1U`glOKnt9H3)za%6ZB z$+0u7c5VrLa#})M;6%>`XV(Bd@Jh6GOII;E*_A$Ri4(+P%%UUf%87KtsM#2Q#WRBf5#KoGi< z3_LGW^c+9aVGOb3=f>l7AxMWGMVkn~<;^kQA~WzWmsSz<;z)#YAH)Fmgr}yd+Tp@- z)KM!BL$7H@?4OB&Xzh@ch3J_l@az?ul}s|BwvPq}IkHT;^DH6C=IbbFXEz%j^5e@Z8tkqhU-3Yc zf<~4n$QhBi7|h+zyo35j4fK=x7)Ust7jW%%?$71ubh-3leT9VI@T8mVY+hf~EooFc z&ge|i!e7{^mSG=LRS5yh)fFCE>+;3SKMBHuC@+7IrZ9qaRTz-jpWsz!1#hIoGsz!rY~$dmkZ0*FLe% zug!?4;yF=7?>kS6p0+L?XpgWHnL57 z4iM`a$yli|WK?OXsa$HaTkEh1af=&3MRWyyK7H#6eXcx6|D1;0n)u{@nP72Mzktw< z@V%59xlBJHiEX2GzMAm)Zf4;Og_1PGF0)aF>m#dBpkClhg`j9XS#= zdET7_Xa1@xSh&cOvSD*>uj}-;+EkOg01aFiJexV_GnwNY! zyRqDxRz!T@82ORiUcV8?M7<9SrR_NY+Gq-V_T_j?tre^Hea#aH(~kkt#l+X8W2yt z-{^!QZy{5wqXaep3~(?qC00T*v%-$)N9W)wg%JL~`%jAv#t+WGhE!14NQoKvqBLQX z!(QKC+1uND3VVCYN!fG`WkU)#g+2ridj6?vC0Fwi{VTBjv<#-@$NF*vgN~3l`?mBn z|3mcwp9s@+7s|fC?d$E$s57ZT6_bDBGFTNzeYJ6*Xxssi`eMtgQa;>%>s z=}TA{X9o}KBBa)3z)7s%W$Z~!dl1FNNxLo>cM&+PSTUnCVFZk{)Vf78cHvxV5wT<_ zMNySSGv=QIhd(2{BgYD1GP*I&_ykz!o5aQBY9Vd!hf66N0*(DV$K-D`6z#N- zLC~Hce2bGjm)4~Dt2HITLW8_WmhPRsix(@48>7T{#5c4Y6T)hD6}1BGDO|d9N-b=dJ}Ue+ zb5z!Q0~MWd1L{q{mtJt3Hieo%$#ajNg+}fP*Kg^D$!VVWlvNLh*zMe9q_+>Ib%M+@ zuRUGI1wqN@3{Rgc^NZ@Ub2bv2m=x!!Iw?1Ib-nJ9%)7<8xrobc8-L8}yM2Nfy!upd z+K@P=9S-h_RN}f!)R|3em~HS2YL{NQSU&E|-$w0$pUI0Ka3{w#MXCO+Pr$pQS0#=pB1gLCI~J~V%9NmMo2D_zYM@ag2k zl}CVoI2Ud~?^+ScCm$C;k+H_XB%RhP){v*S{KXkdg;!g;OI@AI!}a?0{_S!iz`EC4 zK5LRiG{4vMu{S_|dF*U`o#l&Zz+=wjt8)4btLf`2E1B7wV!{x~N^C7AgpqL5tKnfs}B$M3<5)1A_52l4ufy+UsL;sBS8Qm7m z7X4VrY%6kU=+5LT@3%Q)q+M>EPRql{JMe*tl&4N$GQ0wThP(I|RC-u({jd}XwKVd> z&nnF*{Hg;}3?(@!ggZImgnAWNDa!2{)O5hzmVzJ!WKEm`4Mw^G4O+TT1@Vp>Y2_gp8NrI>}Uqom&2Mp#hX08;L8TEQEWHDOgb zvN#r)q1tLj)tDt2#w4%tE^9n3=^eCZbC6^(kYo^S^1wC2c@F%TH4b68B)s-4MD|U0 z>@w*IQ*>da(>wh06KcoN=~l)d!dtPZn_X(dZ)?9GRhodJYU22cX% z6NOLE5_gr#xNAU42}A_0Z%is<%tP=~JdALf{VC9`9*XMo`^mJo=^|p&d2^qo3M2|- z3d9Sf3os)|HCWY}02`{h3qVSH4(NO{bs1-T6-6k7TXAUzdIkP%BitI7c1Zr#tl0I>(Q$yXl=f)jPG*G_LL=ZrU}~1;#k`kw81y5p{a8iM%jH=LJh0 z3=MP*%z3nVjQI+_xQ*@#{Ed6adY|5mI!DSnWWYlnFbcY6k~3H%NgX4!lEK0!Dj@O}YJbqMs_DYX-)nb23LC9`KxBiAIBAUKhid^ls@~1b zEOk@4;0yg}?qv@?!1?v%SZG2kN;Lrh;imwdMI1d?hKiPCFCk?gBPS`RC|53&h!iu$ z`iWF7Vtuse&EsA?C^?wlA&0_P7x@Xw-F*ZZRyDIJm=SQZ!^dNaUIaW_ z*dz>$7ki(Vq-niQ=&u1(m5f}{imppDDPP5;@%=OfH!dBKz~`)l?Z2!V=HAPg9oJjI`d8T3;U8jzEs?^4W$6}~N-^%nF@ zf)t#B6|SXSRGE5In02$to^A$hG3?!nKLyBl0F`Q&(AlS$!TR@jB;wMb3a&yC&dPjl zC3C||0yC&pm}5cwwg0qWrUYT3Z`df)q6QSk`^EP1Y}cs$$;uv#kgSj!x}xUXT>-gH zoCC8G#lT;K9>APA)cZ+ZxjZ=4go;ogu1Js}(^g(}^oAKpTRUXX=&B`b=@tzcxk<0L zLfR&QYs{rzzD)Orb6@HiS_4{qy&o!d@WI1GqjnZE!DM%==5T24@Ff~xY;JhF*EKoB z!Ai?Yl4_ynXyX3vcOFL|h4E1@JZ8DppiDcoP;mq)BY>VHS8tG$>4EI*0?K2d^ty!( z@fWXvKg`PT1qL$324ato|81fYZD}92cLfBpwm8ZDGe172K<+*AZ_U1?t`k@tFVliX zPTQ=INpp;L(AIJsB|kZ5VT?fdu1=k36iIpms*uuo7?%D zdJQ%_gx_4~ntq&p9h?^6-!OG<^8xtw=AgLrzA|kk#M|NAZKp5$-QPGZGnoLk65}_8 z!b|~EkM1wG*ZIAhb#2S8zBl!DDv=IKk0ebA@eVk`^H_y`g}?8v!oTkgaIg{B>B~~UQLsC~U8S%}LBRnz5aU{Et>2kFlTt zW{4Nm*A}3e%X-!6Z+aB4_7k56hz2cSk+F+%7oZ(H92(P=p6QKynCXUea*yGP9q|S& zJd?R`)*?K&Vn0iqwMz@GQJ|8&bU%XU)M8*<=c80QGFBord{J0~HU)(Er9FYE=)y~0l2rwlCG*F~Js zTDzYdCXs3~25SyoNq81>@@)!ARkP5j^aYOq&)S#_2G>%KkhotTJYO<`Ru71eqdU5j z+l1$8W2=-wix~nyldflNQULwq5`L65fWD!=YAYnLv%DP3EK}tXl6B|m!pS-%YSHPqYt89 z{<0fjFt0(Lp%>!IgoP~6A1El~n4HeSA7 z0_L(hYIX^rgv#DdHps~}a5fSUl4|c}SBklob@lGHZ|-%J8J~>v|4dbY5o>#UF%A|- zD5tGM@*}gQun$GKk@6DvelRrd7O;8-Dz;5AgL#XoaHy%cY$!FizcdvxsK#v(FUPC7 zaO)F|-Y8Pjss_8^>)>~l8BZJKaPBmFMa=_VU4V_)RD{$D`lJgyTC2I?cOq<$w(&(9 z2O@5m?@pV^GBZ%u6Hp=2j5$7wDK&CchKvq@r}jdeFo`qXij^Xe_V?>5vTVJ|l6sz1P>fpr6NZP?m?CRh{;^=D4)WiO zjTqn6dz-A@xa~y%FLO;-sTViw1)h=CM0ctgPYe`eB1!sEmQDDZsG#f5JxPc_y~_Gk zT38#^h64`3-t&6}@ZS=;kzP&-gi2z9fFpHbsrfFgL*f1|OF$AhK+HNDTErz{0BrG- zo(T0Sw_94H;;{s4nltKhj8KBKCtI?+{Yj^fCGBd87`%hySlVyEbs|@u@L6hHt645v z2Zdb@5RQwtWwt8D|E(2oGilVf%z-98B8I3hDe_?iwJEp3VHx5c4t`C$#SM3tgUJ?9zeGTPgWfLv9yUI7KQZeTLDA$xva^FCQmP)-Tp4LNyR!A<TK4N^!hMqWIe-%K;1fX?vj|e|+Jd|0)e#j-N zL%+4NO;%5iJlcDdJZdu7fsd@FKvb3%DLph-I`&^$oKAzaNo(^#gQAB0PpG^C$R8 z08TOGr&fUHLttau@mmls;kViP_}_^#uUIWEjPAIqo}*i)u^gFd^kchIN$rxc`+c(2*xQnQ|imNVUY-vd{gL z-t09>v4}zZZLUV3g-ap+nl#g>&d)SA0^>E9qG|mFK7IjLmPS`O*Rp#w$t>f&Mu#C|U06mv3pjm14B-<$TDMt>8%L4(}= zBFM@d@-eeH#(+_C6GWk1ptfaU#b{*na|U`x2I|eVWZzP5w`?I%`f&B&SI!7|;4C}x z+^a)mqyhTmNcIIM*DH956v-#^jacNaoyHiZ_&b^Khr%6U6z-*G2;r|#@a;I=0H`C; z*g14zeF1>znjgXIze2<05tb4Vv(|?FCElh<-{hc)&^_nbyft6!e}~3h;{P`^2p`Yk zW70bxvKN05L!*07rM zbgC7^JDVRYz#h5_=6d`jJMTa>M%&oUo&Xh=jS_!e!M@*Yb^2R3GFeLPeDv~;4PAEnZ zvUUEJ(@q~G@@xhTY-R{T$G7cg3)I-B(BwIkYD}4Qs(4I{;G;5(PsYiY+j%lRRPK2v zG4jQQRI;uIfe){n<}PQ$++ZRSA>Pz>T`q_U#4cj&xY;;d(~H9lM^_7g+6o8e`btcC z`6jANjiE3a;llbhHYH<3l*9-ZY};+ge*rA@114*)Z3n9<+evUwrX@-bp8mNZ^c~Zg~iZOT041r?1bP$egq9ZHE7nz2r%ld4*xHJS;iup@81D7 z^85qvmT}iRz`DbZ1OEb;19|SsAvV$g;~n5z&c*)#O#BXTa&_DvfNS3Y{`L;==Fne& z|IM!VR{2P0Xe=|H&2QfUCgjRFa!dG=+dn7# z8{ouHN@psVJ{}E<=XSliv)P*`lDz4CA=PWkEb?3zVj3TW?7ZLI7P(O!Y8;k*$8f=>R{z;+R4M9PY}<&z@3c*3?-mf&VW`X`4fd=yqlcZ%E_!; z({R?{Yi^;ZZEIyE-KwfZMSY3m#GYp^>tB39%Tj1fZgjo~C=enk_l@viU8q@l6PIv-Aeso5*!Zn|}l(uNYwkYkc1+R9WyuzXtvm9d#Af=rQ<3bneVhRTL% z@Au^7nyAJDbAl?dSRM@OP1Y^Hi!YN8b*gp)Iue8xjj?klV?WR_^-Ih%nOS7+e3nID zILwECF&#yZe;u-Ao;+TjAboXnj*r~8YQu7H68BgJ}`ojVD%s%6N!s_(!uV!Z0tDVwh#Y=QkTruJ(R)K{8h zfYgib301q{TJ1x}H@j)Y*^k zPY-nA?L?ek<@y;B6Qd>8%5%fqs)-hH^{k0i?m{c#+NDpr#&i`@$dk7;MAGJ@0AR*g z!zGR3LWN*R>!9AAohNasvpRN#s;=*+MJe|$FH+#)jyaSt$YZPe<2H?*;I!4jdU z)iv*irlzQ%^jC_0gz z(+mA~0{MMl|5@{TVV~k~!;`Zi5+ppK<}nzK)J)ZWuF?=QFojJPTfj7zM1;j#-a#5+ zcE~A~g4Ow3f{Q4^7d@COtMqxc=iTava(IcgQZqU;`N=iX9NL(5-ZvqM1V96>t<&WC z48{tVa2M&?p&=p(mg!DMQ$A|X;2Kq?Nazo!A;@Y@#cL_FD5MK8)prPA36@oybJmHS!?DF>s} zz8L@7@FQ?$&gCSZ-WfX zoCj-@?Fa+cwNzkOyrk-N7$a921w~)6$?E9uh#@@p`@gT$BaCGj5Gce%4PbEt=s6%G z5+G1gKf}-@vP(k>6fH(sC2@sZ-Omi@EuX1%IqyAVAK@N)^F;((Nmr0s$WO*SQ|x%O zVg5{&qmN%Dy0-&ZFTv#ggwNK8k*$*5N2Ew`EeaZBfu#-<6t`9SiE|@Z6oJ6L0<(M?!2NDmQVlO}UUq_jm&^AIEK=pNWh#3rnR|PHE!b_;0etS2go{l3KEMP8 z13F!O!vCx-&JIPrhA=?JR5i+N9^u(bSD~9>nafmrq%aWvz8F)7rCc7r5mI>xh?^!f zl9NW?N1K6dnV{8heTorIL(a4LTsrO|V~i1GonaIKtUg^#gCY(!K%9 zQ`S20|5?epB`Pq9n0Vva4{$I=+Rfpi=*2&89*zfW2wr2=n5(Z__M}zP$#!y6KYIXK z*j~XoS`eF-JfNJ`794v`eM2mW?Xo<5ar8KhG+xcTv#>#9gBJhFV< z5+(+qob6ybE zMV}@m^GTQTGIZFtF}>(QmO#ZuyTXko@&ciW#E_Nu4Cmi0WJCocN@!3_01ZlxAiqsv z$=1(Pl=|K1q=?cjYil&^Wln)NU-D@z!T|w30BjCgQZJ{IsiHE5Y(g)zwq1I-L@KCO z@GWy!v8ZzL%2kyUpUk4V0;iVOm?9bmNmTog*6}58imC{OBffg>sO_}_`}Vjrr9N;b zu_kY5wi?KzrdyTUA3U`L&m=lr-fn?hOe>()*`X%si-BTNwcoO=k}&Fkv=2dhsD$DW zAwsk$u!7Yv{6?EzA^CmkHYAKfel8qFGmP^kAB81pxMIii$dODhDPun0S6Ws2HhwrpyJl~%nZ)c`V>jq6<3x=CSpK>ob z#O}_;Xg^+GG;}|OM_i<9a^iP2)C_j<;xY4X-xQkd(mxWuLb+WDN=$v@U1_i3olS9E zPPj5uNPmL`?T}-^JNiYW8NX{PkEU56GH^gxvbt*MpRXax&!{D;k6_FNu{?boHn%0w zV{8Q5_I@K#YFVx0x0lTIclS2129Hq#Sk7O|0yLXHutk5fp`JdF2> z=QSuH=x}3bG{c4-tv=`vU?0Xu&~DPrwnFXmCv&A#VL8=kV_6Kgsc~ZRg?mmZ1BxB2 zH`Q_V*kAh*`q0TajY6$L^dkfd>SQPc$e>A+PBnFf#axlF7s+b+KcMZA)<7F)i^4um zOX;V3*BOdh{TCuBZMwc#D&hs2JiYiZnL4c`X?UI`bdYJyD_8B$pm3mkt+QVJ3n2}%za}OPO z)1%ree~bLr*))h9l_l@aj%_j!lr8@3YgAdDL)ci1CbjTA`*1VH@Mh_0iKe-ZW{5^8Qbe(1PZcZNIK*8xVT> z#b7Mbn2eb8q!*d^5-SG?_L#<4=u1(#)jmZK-&xsVZTYp-&7t>>UGtAX7A|}S)Md>9 zkrQImUYE7}zFiHSAFWWC(O+Z@6F{eQq^Qb3lLpAI4vH6I`!mEywaK)gMkH|H`afbh zK;xv3>7|)bA_OW#$%Z-GGP02?%*_``ON&^}Ju6#uepp46I&(!>l3?4R``~3YSe)pD zNk6(R(lv~bRJ2oJCU?8r>`jmjsB_=KE!pX+=fo3Bc1>t!w`6~1&_z3jxbj!n;6&765taY%Ly6$@u(z9Y7i+wWY zGZ(`HDu_e^i11INCa7IP8S2No+yVWBCty-j1czXLS3NLbaPK8Kaiq4hAj^YLKQR{15-{^$@iGV~`5El%|Ank@$1+ F{{hxVc{%_9 delta 11043 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 LDdDNa|LOaGu#SO% diff --git a/tests/data/windturbine.py b/tests/data/windturbine.py index 1d7e1d770..38bc2df7e 100644 --- a/tests/data/windturbine.py +++ b/tests/data/windturbine.py @@ -138,7 +138,7 @@ _TODAY = datetime.datetime.now() -_DEFAULTS: dict[str, Any] = dict(immutable=False, nullable=True, is_list=False) +_DEFAULTS: dict[str, Any] = dict(immutable=False, min_count=0, max_count=1) INPUT_RULES = DMSInputRules( @@ -180,7 +180,7 @@ "metmasts", "MetMast", connection="edge(properties=Distance, type=distance)", - is_list=True, + max_count=float("inf"), ), DMSInputProperty( "MetMast", @@ -203,7 +203,7 @@ "windTurbines", "WindTurbine", connection="edge(properties=Distance, type=distance, direction=inwards)", - is_list=True, + max_count=float("inf"), ), DMSInputProperty( "Distance", diff --git a/tests/tests_end_to_end/test_rules_flow/test_excel_importer_to_yaml.yml b/tests/tests_end_to_end/test_rules_flow/test_excel_importer_to_yaml.yml index e40579720..11140e717 100644 --- a/tests/tests_end_to_end/test_rules_flow/test_excel_importer_to_yaml.yml +++ b/tests/tests_end_to_end/test_rules_flow/test_excel_importer_to_yaml.yml @@ -54,195 +54,199 @@ metadata: properties: - container: CircuitBreaker container_property: maxCapacity - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/CircuitBreaker/maxCapacity + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/CircuitBreaker/maxCapacity - nullable: true value_type: float32 view: CircuitBreaker view_property: maxCapacity - container: CurrentTransformer container_property: maxCapacity - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/CurrentTransformer/maxCapacity + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/CurrentTransformer/maxCapacity - nullable: true value_type: float32 view: CurrentTransformer view_property: maxCapacity - container: DisconnectSwitch container_property: maxCapacity - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/DisconnectSwitch/maxCapacity + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/DisconnectSwitch/maxCapacity - nullable: true value_type: float32 view: DisconnectSwitch view_property: maxCapacity - connection: direct container: DistributionSubstation container_property: primaryPowerLine - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/DistributionSubstation/primaryPowerLine + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/DistributionSubstation/primaryPowerLine - nullable: true value_type: Transmission view: DistributionSubstation view_property: primaryPowerLine - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/DistributionSubstation/secondaryPowerLine + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/DistributionSubstation/secondaryPowerLine value_type: DistributionLine view: DistributionSubstation view_property: secondaryPowerLine - container: EnergyArea container_property: activePower - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/EnergyArea/activePower + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/EnergyArea/activePower - nullable: false value_type: timeseries view: EnergyArea view_property: activePower - connection: direct container: EnergyArea container_property: geoLocation - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/EnergyArea/geoLocation + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/EnergyArea/geoLocation - nullable: true value_type: Polygon view: EnergyArea view_property: geoLocation - container: EnergyArea container_property: name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/EnergyArea/name + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/EnergyArea/name - nullable: false value_type: text view: EnergyArea view_property: name - container: EnergyArea container_property: ratedPower - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/EnergyArea/ratedPower + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/EnergyArea/ratedPower - nullable: false value_type: float32 view: EnergyArea view_property: ratedPower - container: EnergyConsumer container_property: load - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/EnergyConsumer/load + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/EnergyConsumer/load - nullable: false value_type: timeseries view: EnergyConsumer view_property: load - connection: direct container: EnergyConsumer container_property: location - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/EnergyConsumer/location + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/EnergyConsumer/location - nullable: true value_type: Point view: EnergyConsumer view_property: location - container: EnergyConsumer container_property: name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/EnergyConsumer/name + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/EnergyConsumer/name - nullable: false value_type: text view: EnergyConsumer view_property: name - container: GeneratingUnit container_property: activePower - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/GeneratingUnit/activePower + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/GeneratingUnit/activePower - nullable: false value_type: timeseries view: GeneratingUnit view_property: activePower - connection: direct container: GeneratingUnit container_property: geoLocation - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/GeneratingUnit/geoLocation + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/GeneratingUnit/geoLocation - nullable: true value_type: Point view: GeneratingUnit view_property: geoLocation - container: GeneratingUnit container_property: name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/GeneratingUnit/name + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/GeneratingUnit/name - nullable: false value_type: text view: GeneratingUnit view_property: name - container: GeneratingUnit container_property: type - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/GeneratingUnit/type + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/GeneratingUnit/type - nullable: false value_type: text view: GeneratingUnit view_property: type - container: GeoLocation container_property: name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/GeoLocation/name + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/GeoLocation/name - nullable: false value_type: text view: GeoLocation view_property: name - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/Meter/consumer + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/Meter/consumer value_type: ElectricCarCharger view: Meter view_property: consumer - container: Meter container_property: consumption - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/Meter/consumption + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/Meter/consumption - nullable: false value_type: timeseries view: Meter view_property: consumption - connection: direct container: Meter container_property: powerLine - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/Meter/powerLine + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/Meter/powerLine - nullable: true value_type: DistributionLine view: Meter view_property: powerLine - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/MultiLineString/point + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/MultiLineString/point value_type: Point view: MultiLineString view_property: point - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/OffshoreSubstation/primaryPowerLine + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/OffshoreSubstation/primaryPowerLine value_type: ArrayCable view: OffshoreSubstation @@ -250,215 +254,220 @@ properties: - connection: direct container: OffshoreSubstation container_property: secondaryPowerLine - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/OffshoreSubstation/secondaryPowerLine + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/OffshoreSubstation/secondaryPowerLine - nullable: true value_type: ExportCable view: OffshoreSubstation view_property: secondaryPowerLine - connection: direct container: OnshoreSubstation container_property: primaryPowerLine - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/OnshoreSubstation/primaryPowerLine + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/OnshoreSubstation/primaryPowerLine - nullable: true value_type: ExportCable view: OnshoreSubstation view_property: primaryPowerLine - connection: direct container: OnshoreSubstation container_property: secondaryPowerLine - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/OnshoreSubstation/secondaryPowerLine + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/OnshoreSubstation/secondaryPowerLine - nullable: true value_type: Transmission view: OnshoreSubstation view_property: secondaryPowerLine - container: Point container_property: latitude - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/Point/latitude + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/Point/latitude - nullable: false value_type: float32 view: Point view_property: latitude - container: Point container_property: longitude - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/Point/longitude + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/Point/longitude - nullable: false value_type: float32 view: Point view_property: longitude - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/Polygon/point + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/Polygon/point value_type: Point view: Polygon view_property: point - container: PowerLine container_property: currentVoltage - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/PowerLine/currentVoltage + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/PowerLine/currentVoltage - nullable: false value_type: timeseries view: PowerLine view_property: currentVoltage - connection: direct container: PowerLine container_property: geoLocation - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/PowerLine/geoLocation + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/PowerLine/geoLocation - nullable: true value_type: MultiLineString view: PowerLine view_property: geoLocation - container: PowerLine container_property: length - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/PowerLine/length + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/PowerLine/length - nullable: true value_type: float32 view: PowerLine view_property: length - connection: direct container: PowerLine container_property: voltageLevel - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/PowerLine/voltageLevel + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/PowerLine/voltageLevel - nullable: true value_type: VoltageLevel view: PowerLine view_property: voltageLevel - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/Substation/circuitBreaker + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/Substation/circuitBreaker value_type: CircuitBreaker view: Substation view_property: circuitBreaker - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/Substation/currentTransformer + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/Substation/currentTransformer value_type: CurrentTransformer view: Substation view_property: currentTransformer - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/Substation/disconnectSwitch + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/Substation/disconnectSwitch value_type: DisconnectSwitch view: Substation view_property: disconnectSwitch - container: Substation container_property: location - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/Substation/location + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/Substation/location - nullable: true value_type: text view: Substation view_property: location - connection: direct container: Substation container_property: mainTransformer - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/Substation/mainTransformer + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/Substation/mainTransformer - nullable: true value_type: VoltageTransformer view: Substation view_property: mainTransformer - container: Substation container_property: name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/Substation/name + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/Substation/name - nullable: false value_type: text view: Substation view_property: name - connection: direct container: Substation container_property: primaryPowerLine - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/Substation/primaryPowerLine + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/Substation/primaryPowerLine - nullable: true value_type: PowerLine view: Substation view_property: primaryPowerLine - container: Substation container_property: primaryVoltage - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/Substation/primaryVoltage + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/Substation/primaryVoltage - nullable: false value_type: timeseries view: Substation view_property: primaryVoltage - connection: direct container: Substation container_property: secondaryPowerLine - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/Substation/secondaryPowerLine + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/Substation/secondaryPowerLine - nullable: true value_type: PowerLine view: Substation view_property: secondaryPowerLine - container: Substation container_property: secondaryVoltage - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/Substation/secondaryVoltage + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/Substation/secondaryVoltage - nullable: false value_type: timeseries view: Substation view_property: secondaryVoltage - container: VoltageLevel container_property: maxLevel - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/VoltageLevel/maxLevel + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/VoltageLevel/maxLevel - nullable: false value_type: float32 view: VoltageLevel view_property: maxLevel - connection: direct container: VoltageTransformer container_property: inputVoltageLevel - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/VoltageTransformer/inputVoltageLevel + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/VoltageTransformer/inputVoltageLevel - nullable: true value_type: VoltageLevel view: VoltageTransformer view_property: inputVoltageLevel - connection: direct container: VoltageTransformer container_property: outputVoltageLevel - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/VoltageTransformer/outputVoltageLevel + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/VoltageTransformer/outputVoltageLevel - nullable: true value_type: VoltageLevel view: VoltageTransformer view_property: outputVoltageLevel - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/WindFarm/arrayCable + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/WindFarm/arrayCable value_type: ArrayCable view: WindFarm @@ -466,26 +475,27 @@ properties: - connection: direct container: WindFarm container_property: exportCable - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/WindFarm/exportCable + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/WindFarm/exportCable - nullable: true value_type: ExportCable view: WindFarm view_property: exportCable - connection: direct container: WindFarm container_property: substation - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/WindFarm/substation + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/WindFarm/substation - nullable: true value_type: OffshoreSubstation view: WindFarm view_property: substation - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/WindFarm/windTurbines + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/WindFarm/windTurbines value_type: WindTurbine view: WindFarm @@ -493,46 +503,46 @@ properties: - connection: direct container: WindTurbine container_property: arrayCableConnection - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/WindTurbine/arrayCableConnection + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/WindTurbine/arrayCableConnection - nullable: true value_type: ArrayCable view: WindTurbine view_property: arrayCableConnection - container: WindTurbine container_property: hubHeight - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/WindTurbine/hubHeight + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/WindTurbine/hubHeight - nullable: false value_type: float32 view: WindTurbine view_property: hubHeight - container: WindTurbine container_property: lifeExpectancy - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/WindTurbine/lifeExpectancy + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/WindTurbine/lifeExpectancy - nullable: true value_type: int32 view: WindTurbine view_property: lifeExpectancy - container: WindTurbine container_property: manufacturer - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/WindTurbine/manufacturer + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/WindTurbine/manufacturer - nullable: true value_type: text view: WindTurbine view_property: manufacturer - container: WindTurbine container_property: ratedPower - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/power/power2consumer/0.1.0/WindTurbine/ratedPower + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/power/power2consumer/0.1.0/WindTurbine/ratedPower - nullable: false value_type: float32 view: WindTurbine view_property: ratedPower diff --git a/tests/tests_end_to_end/test_rules_flow/test_to_extension_transformer.yml b/tests/tests_end_to_end/test_rules_flow/test_to_extension_transformer.yml index 9a651838c..5ce2b1ec3 100644 --- a/tests/tests_end_to_end/test_rules_flow/test_to_extension_transformer.yml +++ b/tests/tests_end_to_end/test_rules_flow/test_to_extension_transformer.yml @@ -73,18 +73,18 @@ data_product: container_property: collection360 description: Direct relation to Cognite360ImageCollection immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite360Image/collection360 - nullable: true value_type: EnterpriseNeat360ImageCollection view: EnterpriseNeat360Image view_property: collection360 - container: sp_enterprise:Neat360Image container_property: neat360ImageGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat360Image/neat360ImageGUID - nullable: true value_type: text view: EnterpriseNeat360Image view_property: neat360ImageGUID @@ -94,18 +94,18 @@ data_product: description: Direct relation to Cognite3DGroup instance that groups different Cognite360Image instances to the same station immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite360Image/station360 - nullable: true value_type: EnterpriseNeat360ImageStation view: EnterpriseNeat360Image view_property: station360 - container: sp_enterprise:Neat360ImageAnnotation container_property: neat360ImageAnnotationGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat360ImageAnnotation/neat360ImageAnnotationGUID - nullable: true value_type: text view: EnterpriseNeat360ImageAnnotation view_property: neat360ImageAnnotationGUID @@ -114,24 +114,24 @@ data_product: container_property: model3D description: '' immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite360ImageCollection/model3D - nullable: true value_type: EnterpriseNeat360ImageModel view: EnterpriseNeat360ImageCollection view_property: model3D - container: sp_enterprise:Neat360ImageCollection container_property: neat360ImageCollectionGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat360ImageCollection/neat360ImageCollectionGUID - nullable: true value_type: text view: EnterpriseNeat360ImageCollection view_property: neat360ImageCollectionGUID - connection: reverse(property=model3D) description: List Cognite360Image collections for this instance - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite360ImageModel/collections value_type: EnterpriseNeat360ImageCollection view: EnterpriseNeat360ImageModel @@ -139,27 +139,27 @@ data_product: - container: sp_enterprise:Neat360ImageModel container_property: neat360ImageModelGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat360ImageModel/neat360ImageModelGUID - nullable: true value_type: text view: EnterpriseNeat360ImageModel view_property: neat360ImageModelGUID - container: sp_enterprise:Neat360ImageStation container_property: neat360ImageStationGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat360ImageStation/neat360ImageStationGUID - nullable: true value_type: text view: EnterpriseNeat360ImageStation view_property: neat360ImageStationGUID - container: sp_enterprise:Neat3DModel container_property: neat3DModelGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat3DModel/neat3DModelGUID - nullable: true value_type: text view: EnterpriseNeat3DModel view_property: neat3DModelGUID @@ -168,22 +168,22 @@ data_product: container_property: thumbnail description: Thumbnail of the 3D model immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DModel/thumbnail - nullable: true value_type: EnterpriseNeatFile view: EnterpriseNeat3DModel view_property: thumbnail - connection: reverse(property=object3D) description: Asset that is tied to this 3D object - is_list: false + max_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DObject/asset value_type: EnterpriseNeatAsset view: EnterpriseNeat3DObject view_property: asset - connection: reverse(property=object3D) description: List of up to 1000 CADNodes that represents the connected CogniteAsset - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DObject/cadNodes value_type: EnterpriseNeatCADNode view: EnterpriseNeat3DObject @@ -191,7 +191,7 @@ data_product: - connection: edge(properties=cdf_cdm:Cognite360ImageAnnotation(version=v1),type=cdf_cdm:image-360-annotation) description: Edge connection to Cognite360Image annotations that represents the connected CogniteAsset - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DObject/images360 value_type: EnterpriseNeat360Image view: EnterpriseNeat3DObject @@ -199,16 +199,16 @@ data_product: - container: sp_enterprise:Neat3DObject container_property: neat3DObjectGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat3DObject/neat3DObjectGUID - nullable: true value_type: text view: EnterpriseNeat3DObject view_property: neat3DObjectGUID - connection: reverse(property=object3D) description: List of up to 1000 PointCloudVolumes that represents the connected CogniteAsset - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DObject/pointCloudVolumes value_type: EnterpriseNeatPointCloudVolume view: EnterpriseNeat3DObject @@ -217,27 +217,27 @@ data_product: container: cdf_cdm_3d:Cognite3DRevision container_property: model3D immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DRevision/model3D - nullable: true value_type: EnterpriseNeat3DModel view: EnterpriseNeat3DRevision view_property: model3D - container: sp_enterprise:Neat3DRevision container_property: neat3DRevisionGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat3DRevision/neat3DRevisionGUID - nullable: true value_type: text view: EnterpriseNeat3DRevision view_property: neat3DRevisionGUID - container: sp_enterprise:Neat3DTransformation container_property: neat3DTransformationGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat3DTransformation/neat3DTransformationGUID - nullable: true value_type: text view: EnterpriseNeat3DTransformation view_property: neat3DTransformationGUID @@ -246,10 +246,10 @@ data_product: container_property: assets description: A list of assets the activity is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Assets neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteActivity/assets - nullable: true value_type: EnterpriseNeatAsset view: EnterpriseNeatActivity view_property: assets @@ -258,19 +258,19 @@ data_product: container_property: equipment description: A list of equipment the activity is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Equipment neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteActivity/equipment - nullable: true value_type: EnterpriseNeatEquipment view: EnterpriseNeatActivity view_property: equipment - container: sp_enterprise:NeatActivity container_property: neatActivityGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatActivity/neatActivityGUID - nullable: true value_type: text view: EnterpriseNeatActivity view_property: neatActivityGUID @@ -279,25 +279,25 @@ data_product: container_property: timeSeries description: A list of time series the activity is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Time series neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteActivity/timeSeries - nullable: true value_type: EnterpriseNeatTimeSeries view: EnterpriseNeatActivity view_property: timeSeries - container: sp_enterprise:NeatAnnotation container_property: neatAnnotationGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatAnnotation/neatAnnotationGUID - nullable: true value_type: text view: EnterpriseNeatAnnotation view_property: neatAnnotationGUID - connection: reverse(property=assets) description: An automatically updated list of activities related to the asset. - is_list: true + max_count: .inf name: Activities neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/activities value_type: EnterpriseNeatActivity @@ -308,17 +308,17 @@ data_product: container_property: assetClass description: Specifies the class of the asset. It's a direct relation to CogniteAssetClass. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Asset class neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/assetClass - nullable: true value_type: EnterpriseNeatAssetClass view: EnterpriseNeatAsset view_property: assetClass - connection: reverse(property=parent) description: An automatically updated list of assets with this asset as their parent. - is_list: true + max_count: .inf name: Children neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/children value_type: EnterpriseNeatAsset @@ -326,7 +326,7 @@ data_product: view_property: children - connection: reverse(property=asset) description: An automatically updated list of equipment related to the asset. - is_list: true + max_count: .inf name: Equipment neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/equipment value_type: EnterpriseNeatEquipment @@ -334,7 +334,7 @@ data_product: view_property: equipment - connection: reverse(property=assets) description: An automatically updated list of files related to the asset. - is_list: true + max_count: .inf name: Files neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/files value_type: EnterpriseNeatFile @@ -343,9 +343,9 @@ data_product: - container: sp_enterprise:NeatAsset container_property: neatAssetGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatAsset/neatAssetGUID - nullable: true value_type: text view: EnterpriseNeatAsset view_property: neatAssetGUID @@ -354,10 +354,10 @@ data_product: container_property: assetHierarchy_parent description: The parent of the asset. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Parent neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/parent - nullable: true value_type: EnterpriseNeatAsset view: EnterpriseNeatAsset view_property: parent @@ -368,10 +368,10 @@ data_product: starting with the root asset. Enables subtree filtering to find all assets under a parent. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Path neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/path - nullable: true value_type: EnterpriseNeatAsset view: EnterpriseNeatAsset view_property: path @@ -381,16 +381,16 @@ data_product: description: An automatically updated reference to the top-level asset of the hierarchy. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Root neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/root - nullable: true value_type: EnterpriseNeatAsset view: EnterpriseNeatAsset view_property: root - connection: reverse(property=assets) description: An automatically updated list of time series related to the asset. - is_list: true + max_count: .inf name: Time series neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/timeSeries value_type: EnterpriseNeatTimeSeries @@ -401,19 +401,19 @@ data_product: container_property: type description: Specifies the type of the asset. It's a direct relation to CogniteAssetType. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Asset type neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/type - nullable: true value_type: EnterpriseNeatAssetType view: EnterpriseNeatAsset view_property: type - container: sp_enterprise:NeatAssetClass container_property: neatAssetClassGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatAssetClass/neatAssetClassGUID - nullable: true value_type: text view: EnterpriseNeatAssetClass view_property: neatAssetClassGUID @@ -423,34 +423,34 @@ data_product: description: Specifies the class the type belongs to. It's a direct relation to CogniteAssetClass. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Asset class neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAssetType/assetClass - nullable: true value_type: EnterpriseNeatAssetClass view: EnterpriseNeatAssetType view_property: assetClass - container: sp_enterprise:NeatAssetType container_property: neatAssetTypeGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatAssetType/neatAssetTypeGUID - nullable: true value_type: text view: EnterpriseNeatAssetType view_property: neatAssetTypeGUID - container: sp_enterprise:NeatCADModel container_property: neatCADModelGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatCADModel/neatCADModelGUID - nullable: true value_type: text view: EnterpriseNeatCADModel view_property: neatCADModelGUID - connection: reverse(property=model3D) description: List of revisions for this CAD model - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCADModel/revisions value_type: EnterpriseNeatCADRevision view: EnterpriseNeatCADModel @@ -460,18 +460,18 @@ data_product: container_property: model3D description: Direct relation to Cognite3DModel immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCADNode/model3D - nullable: true value_type: EnterpriseNeatCADModel view: EnterpriseNeatCADNode view_property: model3D - container: sp_enterprise:NeatCADNode container_property: neatCADNodeGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatCADNode/neatCADNodeGUID - nullable: true value_type: text view: EnterpriseNeatCADNode view_property: neatCADNodeGUID @@ -480,9 +480,9 @@ data_product: container_property: object3D description: Direct relation to object3D grouping for this node immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCADNode/object3D - nullable: true value_type: EnterpriseNeat3DObject view: EnterpriseNeatCADNode view_property: object3D @@ -492,9 +492,9 @@ data_product: description: List of direct relations to instances of Cognite3DRevision which this CogniteCADNode exists in. immutable: false - is_list: true + max_count: 100 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCADNode/revisions - nullable: true value_type: EnterpriseNeatCADRevision view: EnterpriseNeatCADNode view_property: revisions @@ -503,18 +503,18 @@ data_product: container_property: model3D description: . immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCADRevision/model3D - nullable: true value_type: EnterpriseNeatCADModel view: EnterpriseNeatCADRevision view_property: model3D - container: sp_enterprise:NeatCADRevision container_property: neatCADRevisionGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatCADRevision/neatCADRevisionGUID - nullable: true value_type: text view: EnterpriseNeatCADRevision view_property: neatCADRevisionGUID @@ -524,9 +524,9 @@ data_product: description: Direct relation to a file holding the back projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/back - nullable: true value_type: EnterpriseNeatFile view: EnterpriseNeatCubeMap view_property: back @@ -536,9 +536,9 @@ data_product: description: Direct relation to a file holding the bottom projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/bottom - nullable: true value_type: EnterpriseNeatFile view: EnterpriseNeatCubeMap view_property: bottom @@ -548,9 +548,9 @@ data_product: description: Direct relation to a file holding the front projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/front - nullable: true value_type: EnterpriseNeatFile view: EnterpriseNeatCubeMap view_property: front @@ -560,18 +560,18 @@ data_product: description: Direct relation to a file holding the left projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/left - nullable: true value_type: EnterpriseNeatFile view: EnterpriseNeatCubeMap view_property: left - container: sp_enterprise:NeatCubeMap container_property: neatCubeMapGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatCubeMap/neatCubeMapGUID - nullable: true value_type: text view: EnterpriseNeatCubeMap view_property: neatCubeMapGUID @@ -581,9 +581,9 @@ data_product: description: Direct relation to a file holding the right projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/right - nullable: true value_type: EnterpriseNeatFile view: EnterpriseNeatCubeMap view_property: right @@ -593,33 +593,33 @@ data_product: description: Direct relation to a file holding the top projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/top - nullable: true value_type: EnterpriseNeatFile view: EnterpriseNeatCubeMap view_property: top - container: sp_enterprise:NeatDescribable container_property: neatDescribableGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatDescribable/neatDescribableGUID - nullable: true value_type: text view: EnterpriseNeatDescribable view_property: neatDescribableGUID - container: sp_enterprise:NeatDiagramAnnotation container_property: neatDiagramAnnotationGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatDiagramAnnotation/neatDiagramAnnotationGUID - nullable: true value_type: text view: EnterpriseNeatDiagramAnnotation view_property: neatDiagramAnnotationGUID - connection: reverse(property=equipment) description: An automatically updated list of activities related to the equipment. - is_list: true + max_count: .inf name: Activities neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteEquipment/activities value_type: EnterpriseNeatActivity @@ -630,10 +630,10 @@ data_product: container_property: asset description: The asset the equipment is related to. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Asset neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteEquipment/asset - nullable: true value_type: EnterpriseNeatAsset view: EnterpriseNeatEquipment view_property: asset @@ -642,10 +642,10 @@ data_product: container_property: equipmentType description: Specifies the type of the equipment. It's a direct relation to CogniteEquipmentType. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Equipment type neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteEquipment/equipmentType - nullable: true value_type: EnterpriseNeatEquipmentType view: EnterpriseNeatEquipment view_property: equipmentType @@ -654,25 +654,25 @@ data_product: container_property: files description: A list of files the equipment relates to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Files neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteEquipment/files - nullable: true value_type: EnterpriseNeatFile view: EnterpriseNeatEquipment view_property: files - container: sp_enterprise:NeatEquipment container_property: neatEquipmentGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatEquipment/neatEquipmentGUID - nullable: true value_type: text view: EnterpriseNeatEquipment view_property: neatEquipmentGUID - connection: reverse(property=equipment) description: An automatically updated list of time series related to the equipment. - is_list: true + max_count: .inf name: Time series neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteEquipment/timeSeries value_type: EnterpriseNeatTimeSeries @@ -681,9 +681,9 @@ data_product: - container: sp_enterprise:NeatEquipmentType container_property: neatEquipmentTypeGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatEquipmentType/neatEquipmentTypeGUID - nullable: true value_type: text view: EnterpriseNeatEquipmentType view_property: neatEquipmentTypeGUID @@ -692,10 +692,10 @@ data_product: container_property: assets description: A list of assets this file is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Assets neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteFile/assets - nullable: true value_type: EnterpriseNeatAsset view: EnterpriseNeatFile view_property: assets @@ -705,16 +705,16 @@ data_product: description: Specifies the detected category the file belongs to. It's a direct relation to an instance of CogniteFileCategory. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Category neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteFile/category - nullable: true value_type: EnterpriseNeatFileCategory view: EnterpriseNeatFile view_property: category - connection: reverse(property=files) description: An automatically updated list of equipment this file is related to. - is_list: true + max_count: .inf name: Equipment neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteFile/equipment value_type: EnterpriseNeatEquipment @@ -723,33 +723,33 @@ data_product: - container: sp_enterprise:NeatFile container_property: neatFileGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatFile/neatFileGUID - nullable: true value_type: text view: EnterpriseNeatFile view_property: neatFileGUID - container: sp_enterprise:NeatFileCategory container_property: neatFileCategoryGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatFileCategory/neatFileCategoryGUID - nullable: true value_type: text view: EnterpriseNeatFileCategory view_property: neatFileCategoryGUID - container: sp_enterprise:NeatPointCloudModel container_property: neatPointCloudModelGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatPointCloudModel/neatPointCloudModelGUID - nullable: true value_type: text view: EnterpriseNeatPointCloudModel view_property: neatPointCloudModelGUID - connection: reverse(property=model3D) description: List of revisions for this PointCloud model - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CognitePointCloudModel/revisions value_type: EnterpriseNeatPointCloudRevision view: EnterpriseNeatPointCloudModel @@ -759,18 +759,18 @@ data_product: container_property: model3D description: . immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CognitePointCloudRevision/model3D - nullable: true value_type: EnterpriseNeatPointCloudModel view: EnterpriseNeatPointCloudRevision view_property: model3D - container: sp_enterprise:NeatPointCloudRevision container_property: neatPointCloudRevisionGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatPointCloudRevision/neatPointCloudRevisionGUID - nullable: true value_type: text view: EnterpriseNeatPointCloudRevision view_property: neatPointCloudRevisionGUID @@ -779,18 +779,18 @@ data_product: container_property: model3D description: Direct relation to Cognite3DModel instance immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CognitePointCloudVolume/model3D - nullable: true value_type: EnterpriseNeatCADModel view: EnterpriseNeatPointCloudVolume view_property: model3D - container: sp_enterprise:NeatPointCloudVolume container_property: neatPointCloudVolumeGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatPointCloudVolume/neatPointCloudVolumeGUID - nullable: true value_type: text view: EnterpriseNeatPointCloudVolume view_property: neatPointCloudVolumeGUID @@ -799,9 +799,9 @@ data_product: container_property: object3D description: Direct relation to object3D grouping for this node immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CognitePointCloudVolume/object3D - nullable: true value_type: EnterpriseNeat3DObject view: EnterpriseNeatPointCloudVolume view_property: object3D @@ -810,36 +810,36 @@ data_product: container_property: revisions description: List of direct relations to revision information immutable: false - is_list: true + max_count: 100 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CognitePointCloudVolume/revisions - nullable: true value_type: EnterpriseNeatCADRevision view: EnterpriseNeatPointCloudVolume view_property: revisions - container: sp_enterprise:NeatSchedulable container_property: neatSchedulableGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatSchedulable/neatSchedulableGUID - nullable: true value_type: text view: EnterpriseNeatSchedulable view_property: neatSchedulableGUID - container: sp_enterprise:NeatSourceSystem container_property: neatSourceSystemGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatSourceSystem/neatSourceSystemGUID - nullable: true value_type: text view: EnterpriseNeatSourceSystem view_property: neatSourceSystemGUID - container: sp_enterprise:NeatSourceable container_property: neatSourceableGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatSourceable/neatSourceableGUID - nullable: true value_type: text view: EnterpriseNeatSourceable view_property: neatSourceableGUID @@ -849,16 +849,16 @@ data_product: description: Direct relation to a source system immutable: false index: source - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteSourceable/source - nullable: true value_type: EnterpriseNeatSourceSystem view: EnterpriseNeatSourceable view_property: source - connection: reverse(property=timeSeries) description: An automatically updated list of activities the time series is related to. - is_list: true + max_count: .inf name: Activities neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteTimeSeries/activities value_type: EnterpriseNeatActivity @@ -869,10 +869,10 @@ data_product: container_property: assets description: A list of assets the time series is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Assets neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteTimeSeries/assets - nullable: true value_type: EnterpriseNeatAsset view: EnterpriseNeatTimeSeries view_property: assets @@ -881,19 +881,19 @@ data_product: container_property: equipment description: A list of equipment the time series is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Equipment neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteTimeSeries/equipment - nullable: true value_type: EnterpriseNeatEquipment view: EnterpriseNeatTimeSeries view_property: equipment - container: sp_enterprise:NeatTimeSeries container_property: neatTimeSeriesGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatTimeSeries/neatTimeSeriesGUID - nullable: true value_type: text view: EnterpriseNeatTimeSeries view_property: neatTimeSeriesGUID @@ -902,28 +902,28 @@ data_product: container_property: unit description: The unit of the time series. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Unit neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteTimeSeries/unit - nullable: true value_type: EnterpriseNeatUnit view: EnterpriseNeatTimeSeries view_property: unit - container: sp_enterprise:NeatUnit container_property: neatUnitGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatUnit/neatUnitGUID - nullable: true value_type: text view: EnterpriseNeatUnit view_property: neatUnitGUID - container: sp_enterprise:NeatVisualizable container_property: neatVisualizableGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatVisualizable/neatVisualizableGUID - nullable: true value_type: text view: EnterpriseNeatVisualizable view_property: neatVisualizableGUID @@ -933,306 +933,306 @@ data_product: container_property: object3D description: Direct relation to an Object3D instance representing the 3D resource immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteVisualizable/object3D - nullable: true value_type: EnterpriseNeat3DObject view: EnterpriseNeatVisualizable view_property: object3D - container: sp_solution:Neat360Image container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat360Image/enterprise - nullable: true value_type: EnterpriseNeat360Image view: Neat360Image view_property: enterprise - container: sp_solution:Neat360ImageAnnotation container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat360ImageAnnotation/enterprise - nullable: true value_type: EnterpriseNeat360ImageAnnotation view: Neat360ImageAnnotation view_property: enterprise - container: sp_solution:Neat360ImageCollection container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat360ImageCollection/enterprise - nullable: true value_type: EnterpriseNeat360ImageCollection view: Neat360ImageCollection view_property: enterprise - container: sp_solution:Neat360ImageModel container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat360ImageModel/enterprise - nullable: true value_type: EnterpriseNeat360ImageModel view: Neat360ImageModel view_property: enterprise - container: sp_solution:Neat360ImageStation container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat360ImageStation/enterprise - nullable: true value_type: EnterpriseNeat360ImageStation view: Neat360ImageStation view_property: enterprise - container: sp_solution:Neat3DModel container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat3DModel/enterprise - nullable: true value_type: EnterpriseNeat3DModel view: Neat3DModel view_property: enterprise - container: sp_solution:Neat3DObject container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat3DObject/enterprise - nullable: true value_type: EnterpriseNeat3DObject view: Neat3DObject view_property: enterprise - container: sp_solution:Neat3DRevision container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat3DRevision/enterprise - nullable: true value_type: EnterpriseNeat3DRevision view: Neat3DRevision view_property: enterprise - container: sp_solution:Neat3DTransformation container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat3DTransformation/enterprise - nullable: true value_type: EnterpriseNeat3DTransformation view: Neat3DTransformation view_property: enterprise - container: sp_solution:NeatActivity container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatActivity/enterprise - nullable: true value_type: EnterpriseNeatActivity view: NeatActivity view_property: enterprise - container: sp_solution:NeatAnnotation container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatAnnotation/enterprise - nullable: true value_type: EnterpriseNeatAnnotation view: NeatAnnotation view_property: enterprise - container: sp_solution:NeatAsset container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatAsset/enterprise - nullable: true value_type: EnterpriseNeatAsset view: NeatAsset view_property: enterprise - container: sp_solution:NeatAssetClass container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatAssetClass/enterprise - nullable: true value_type: EnterpriseNeatAssetClass view: NeatAssetClass view_property: enterprise - container: sp_solution:NeatAssetType container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatAssetType/enterprise - nullable: true value_type: EnterpriseNeatAssetType view: NeatAssetType view_property: enterprise - container: sp_solution:NeatCADModel container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatCADModel/enterprise - nullable: true value_type: EnterpriseNeatCADModel view: NeatCADModel view_property: enterprise - container: sp_solution:NeatCADNode container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatCADNode/enterprise - nullable: true value_type: EnterpriseNeatCADNode view: NeatCADNode view_property: enterprise - container: sp_solution:NeatCADRevision container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatCADRevision/enterprise - nullable: true value_type: EnterpriseNeatCADRevision view: NeatCADRevision view_property: enterprise - container: sp_solution:NeatCubeMap container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatCubeMap/enterprise - nullable: true value_type: EnterpriseNeatCubeMap view: NeatCubeMap view_property: enterprise - container: sp_solution:NeatDescribable container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatDescribable/enterprise - nullable: true value_type: EnterpriseNeatDescribable view: NeatDescribable view_property: enterprise - container: sp_solution:NeatDiagramAnnotation container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatDiagramAnnotation/enterprise - nullable: true value_type: EnterpriseNeatDiagramAnnotation view: NeatDiagramAnnotation view_property: enterprise - container: sp_solution:NeatEquipment container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatEquipment/enterprise - nullable: true value_type: EnterpriseNeatEquipment view: NeatEquipment view_property: enterprise - container: sp_solution:NeatEquipmentType container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatEquipmentType/enterprise - nullable: true value_type: EnterpriseNeatEquipmentType view: NeatEquipmentType view_property: enterprise - container: sp_solution:NeatFile container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatFile/enterprise - nullable: true value_type: EnterpriseNeatFile view: NeatFile view_property: enterprise - container: sp_solution:NeatFileCategory container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatFileCategory/enterprise - nullable: true value_type: EnterpriseNeatFileCategory view: NeatFileCategory view_property: enterprise - container: sp_solution:NeatPointCloudModel container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatPointCloudModel/enterprise - nullable: true value_type: EnterpriseNeatPointCloudModel view: NeatPointCloudModel view_property: enterprise - container: sp_solution:NeatPointCloudRevision container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatPointCloudRevision/enterprise - nullable: true value_type: EnterpriseNeatPointCloudRevision view: NeatPointCloudRevision view_property: enterprise - container: sp_solution:NeatPointCloudVolume container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatPointCloudVolume/enterprise - nullable: true value_type: EnterpriseNeatPointCloudVolume view: NeatPointCloudVolume view_property: enterprise - container: sp_solution:NeatSchedulable container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatSchedulable/enterprise - nullable: true value_type: EnterpriseNeatSchedulable view: NeatSchedulable view_property: enterprise - container: sp_solution:NeatSourceSystem container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatSourceSystem/enterprise - nullable: true value_type: EnterpriseNeatSourceSystem view: NeatSourceSystem view_property: enterprise - container: sp_solution:NeatSourceable container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatSourceable/enterprise - nullable: true value_type: EnterpriseNeatSourceable view: NeatSourceable view_property: enterprise - container: sp_solution:NeatTimeSeries container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatTimeSeries/enterprise - nullable: true value_type: EnterpriseNeatTimeSeries view: NeatTimeSeries view_property: enterprise - container: sp_solution:NeatUnit container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatUnit/enterprise - nullable: true value_type: EnterpriseNeatUnit view: NeatUnit view_property: enterprise - container: sp_solution:NeatVisualizable container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatVisualizable/enterprise - nullable: true value_type: EnterpriseNeatVisualizable view: NeatVisualizable view_property: enterprise @@ -1586,17 +1586,17 @@ enterprise: container_property: collection360 description: Direct relation to Cognite360ImageCollection immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite360Image/collection360 - nullable: true value_type: Neat360ImageCollection view: Neat360Image view_property: collection360 - container: Neat360Image container_property: neat360ImageGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: Neat360Image view_property: neat360ImageGUID @@ -1606,17 +1606,17 @@ enterprise: description: Direct relation to Cognite3DGroup instance that groups different Cognite360Image instances to the same station immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite360Image/station360 - nullable: true value_type: Neat360ImageStation view: Neat360Image view_property: station360 - container: Neat360ImageAnnotation container_property: neat360ImageAnnotationGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: Neat360ImageAnnotation view_property: neat360ImageAnnotationGUID @@ -1625,23 +1625,23 @@ enterprise: container_property: model3D description: '' immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite360ImageCollection/model3D - nullable: true value_type: Neat360ImageModel view: Neat360ImageCollection view_property: model3D - container: Neat360ImageCollection container_property: neat360ImageCollectionGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: Neat360ImageCollection view_property: neat360ImageCollectionGUID - connection: reverse(property=model3D) description: List Cognite360Image collections for this instance - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite360ImageModel/collections value_type: Neat360ImageCollection view: Neat360ImageModel @@ -1649,24 +1649,24 @@ enterprise: - container: Neat360ImageModel container_property: neat360ImageModelGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: Neat360ImageModel view_property: neat360ImageModelGUID - container: Neat360ImageStation container_property: neat360ImageStationGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: Neat360ImageStation view_property: neat360ImageStationGUID - container: Neat3DModel container_property: neat3DModelGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: Neat3DModel view_property: neat3DModelGUID @@ -1675,22 +1675,22 @@ enterprise: container_property: thumbnail description: Thumbnail of the 3D model immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DModel/thumbnail - nullable: true value_type: NeatFile view: Neat3DModel view_property: thumbnail - connection: reverse(property=object3D) description: Asset that is tied to this 3D object - is_list: false + max_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DObject/asset value_type: NeatAsset view: Neat3DObject view_property: asset - connection: reverse(property=object3D) description: List of up to 1000 CADNodes that represents the connected CogniteAsset - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DObject/cadNodes value_type: NeatCADNode view: Neat3DObject @@ -1698,7 +1698,7 @@ enterprise: - connection: edge(properties=cdf_cdm:Cognite360ImageAnnotation(version=v1),type=cdf_cdm:image-360-annotation) description: Edge connection to Cognite360Image annotations that represents the connected CogniteAsset - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DObject/images360 value_type: Neat360Image view: Neat3DObject @@ -1706,15 +1706,15 @@ enterprise: - container: Neat3DObject container_property: neat3DObjectGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: Neat3DObject view_property: neat3DObjectGUID - connection: reverse(property=object3D) description: List of up to 1000 PointCloudVolumes that represents the connected CogniteAsset - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DObject/pointCloudVolumes value_type: NeatPointCloudVolume view: Neat3DObject @@ -1723,25 +1723,25 @@ enterprise: container: cdf_cdm_3d:Cognite3DRevision container_property: model3D immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DRevision/model3D - nullable: true value_type: Neat3DModel view: Neat3DRevision view_property: model3D - container: Neat3DRevision container_property: neat3DRevisionGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: Neat3DRevision view_property: neat3DRevisionGUID - container: Neat3DTransformation container_property: neat3DTransformationGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: Neat3DTransformation view_property: neat3DTransformationGUID @@ -1750,10 +1750,10 @@ enterprise: container_property: assets description: A list of assets the activity is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Assets neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteActivity/assets - nullable: true value_type: NeatAsset view: NeatActivity view_property: assets @@ -1762,18 +1762,18 @@ enterprise: container_property: equipment description: A list of equipment the activity is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Equipment neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteActivity/equipment - nullable: true value_type: NeatEquipment view: NeatActivity view_property: equipment - container: NeatActivity container_property: neatActivityGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatActivity view_property: neatActivityGUID @@ -1782,24 +1782,24 @@ enterprise: container_property: timeSeries description: A list of time series the activity is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Time series neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteActivity/timeSeries - nullable: true value_type: NeatTimeSeries view: NeatActivity view_property: timeSeries - container: NeatAnnotation container_property: neatAnnotationGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatAnnotation view_property: neatAnnotationGUID - connection: reverse(property=assets) description: An automatically updated list of activities related to the asset. - is_list: true + max_count: .inf name: Activities neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/activities value_type: NeatActivity @@ -1810,17 +1810,17 @@ enterprise: container_property: assetClass description: Specifies the class of the asset. It's a direct relation to CogniteAssetClass. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Asset class neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/assetClass - nullable: true value_type: NeatAssetClass view: NeatAsset view_property: assetClass - connection: reverse(property=parent) description: An automatically updated list of assets with this asset as their parent. - is_list: true + max_count: .inf name: Children neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/children value_type: NeatAsset @@ -1828,7 +1828,7 @@ enterprise: view_property: children - connection: reverse(property=asset) description: An automatically updated list of equipment related to the asset. - is_list: true + max_count: .inf name: Equipment neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/equipment value_type: NeatEquipment @@ -1836,7 +1836,7 @@ enterprise: view_property: equipment - connection: reverse(property=assets) description: An automatically updated list of files related to the asset. - is_list: true + max_count: .inf name: Files neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/files value_type: NeatFile @@ -1845,8 +1845,8 @@ enterprise: - container: NeatAsset container_property: neatAssetGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatAsset view_property: neatAssetGUID @@ -1855,10 +1855,10 @@ enterprise: container_property: assetHierarchy_parent description: The parent of the asset. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Parent neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/parent - nullable: true value_type: NeatAsset view: NeatAsset view_property: parent @@ -1869,10 +1869,10 @@ enterprise: starting with the root asset. Enables subtree filtering to find all assets under a parent. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Path neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/path - nullable: true value_type: NeatAsset view: NeatAsset view_property: path @@ -1882,16 +1882,16 @@ enterprise: description: An automatically updated reference to the top-level asset of the hierarchy. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Root neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/root - nullable: true value_type: NeatAsset view: NeatAsset view_property: root - connection: reverse(property=assets) description: An automatically updated list of time series related to the asset. - is_list: true + max_count: .inf name: Time series neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/timeSeries value_type: NeatTimeSeries @@ -1902,18 +1902,18 @@ enterprise: container_property: type description: Specifies the type of the asset. It's a direct relation to CogniteAssetType. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Asset type neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/type - nullable: true value_type: NeatAssetType view: NeatAsset view_property: type - container: NeatAssetClass container_property: neatAssetClassGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatAssetClass view_property: neatAssetClassGUID @@ -1923,32 +1923,32 @@ enterprise: description: Specifies the class the type belongs to. It's a direct relation to CogniteAssetClass. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Asset class neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAssetType/assetClass - nullable: true value_type: NeatAssetClass view: NeatAssetType view_property: assetClass - container: NeatAssetType container_property: neatAssetTypeGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatAssetType view_property: neatAssetTypeGUID - container: NeatCADModel container_property: neatCADModelGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatCADModel view_property: neatCADModelGUID - connection: reverse(property=model3D) description: List of revisions for this CAD model - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCADModel/revisions value_type: NeatCADRevision view: NeatCADModel @@ -1958,17 +1958,17 @@ enterprise: container_property: model3D description: Direct relation to Cognite3DModel immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCADNode/model3D - nullable: true value_type: NeatCADModel view: NeatCADNode view_property: model3D - container: NeatCADNode container_property: neatCADNodeGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatCADNode view_property: neatCADNodeGUID @@ -1977,9 +1977,9 @@ enterprise: container_property: object3D description: Direct relation to object3D grouping for this node immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCADNode/object3D - nullable: true value_type: Neat3DObject view: NeatCADNode view_property: object3D @@ -1989,9 +1989,9 @@ enterprise: description: List of direct relations to instances of Cognite3DRevision which this CogniteCADNode exists in. immutable: false - is_list: true + max_count: 100 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCADNode/revisions - nullable: true value_type: NeatCADRevision view: NeatCADNode view_property: revisions @@ -2000,17 +2000,17 @@ enterprise: container_property: model3D description: . immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCADRevision/model3D - nullable: true value_type: NeatCADModel view: NeatCADRevision view_property: model3D - container: NeatCADRevision container_property: neatCADRevisionGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatCADRevision view_property: neatCADRevisionGUID @@ -2020,9 +2020,9 @@ enterprise: description: Direct relation to a file holding the back projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/back - nullable: true value_type: NeatFile view: NeatCubeMap view_property: back @@ -2032,9 +2032,9 @@ enterprise: description: Direct relation to a file holding the bottom projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/bottom - nullable: true value_type: NeatFile view: NeatCubeMap view_property: bottom @@ -2044,9 +2044,9 @@ enterprise: description: Direct relation to a file holding the front projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/front - nullable: true value_type: NeatFile view: NeatCubeMap view_property: front @@ -2056,17 +2056,17 @@ enterprise: description: Direct relation to a file holding the left projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/left - nullable: true value_type: NeatFile view: NeatCubeMap view_property: left - container: NeatCubeMap container_property: neatCubeMapGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatCubeMap view_property: neatCubeMapGUID @@ -2076,9 +2076,9 @@ enterprise: description: Direct relation to a file holding the right projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/right - nullable: true value_type: NeatFile view: NeatCubeMap view_property: right @@ -2088,31 +2088,31 @@ enterprise: description: Direct relation to a file holding the top projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/top - nullable: true value_type: NeatFile view: NeatCubeMap view_property: top - container: NeatDescribable container_property: neatDescribableGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatDescribable view_property: neatDescribableGUID - container: NeatDiagramAnnotation container_property: neatDiagramAnnotationGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatDiagramAnnotation view_property: neatDiagramAnnotationGUID - connection: reverse(property=equipment) description: An automatically updated list of activities related to the equipment. - is_list: true + max_count: .inf name: Activities neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteEquipment/activities value_type: NeatActivity @@ -2123,10 +2123,10 @@ enterprise: container_property: asset description: The asset the equipment is related to. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Asset neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteEquipment/asset - nullable: true value_type: NeatAsset view: NeatEquipment view_property: asset @@ -2135,10 +2135,10 @@ enterprise: container_property: equipmentType description: Specifies the type of the equipment. It's a direct relation to CogniteEquipmentType. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Equipment type neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteEquipment/equipmentType - nullable: true value_type: NeatEquipmentType view: NeatEquipment view_property: equipmentType @@ -2147,24 +2147,24 @@ enterprise: container_property: files description: A list of files the equipment relates to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Files neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteEquipment/files - nullable: true value_type: NeatFile view: NeatEquipment view_property: files - container: NeatEquipment container_property: neatEquipmentGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatEquipment view_property: neatEquipmentGUID - connection: reverse(property=equipment) description: An automatically updated list of time series related to the equipment. - is_list: true + max_count: .inf name: Time series neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteEquipment/timeSeries value_type: NeatTimeSeries @@ -2173,8 +2173,8 @@ enterprise: - container: NeatEquipmentType container_property: neatEquipmentTypeGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatEquipmentType view_property: neatEquipmentTypeGUID @@ -2183,10 +2183,10 @@ enterprise: container_property: assets description: A list of assets this file is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Assets neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteFile/assets - nullable: true value_type: NeatAsset view: NeatFile view_property: assets @@ -2196,16 +2196,16 @@ enterprise: description: Specifies the detected category the file belongs to. It's a direct relation to an instance of CogniteFileCategory. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Category neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteFile/category - nullable: true value_type: NeatFileCategory view: NeatFile view_property: category - connection: reverse(property=files) description: An automatically updated list of equipment this file is related to. - is_list: true + max_count: .inf name: Equipment neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteFile/equipment value_type: NeatEquipment @@ -2214,30 +2214,30 @@ enterprise: - container: NeatFile container_property: neatFileGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatFile view_property: neatFileGUID - container: NeatFileCategory container_property: neatFileCategoryGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatFileCategory view_property: neatFileCategoryGUID - container: NeatPointCloudModel container_property: neatPointCloudModelGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatPointCloudModel view_property: neatPointCloudModelGUID - connection: reverse(property=model3D) description: List of revisions for this PointCloud model - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CognitePointCloudModel/revisions value_type: NeatPointCloudRevision view: NeatPointCloudModel @@ -2247,17 +2247,17 @@ enterprise: container_property: model3D description: . immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CognitePointCloudRevision/model3D - nullable: true value_type: NeatPointCloudModel view: NeatPointCloudRevision view_property: model3D - container: NeatPointCloudRevision container_property: neatPointCloudRevisionGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatPointCloudRevision view_property: neatPointCloudRevisionGUID @@ -2266,17 +2266,17 @@ enterprise: container_property: model3D description: Direct relation to Cognite3DModel instance immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CognitePointCloudVolume/model3D - nullable: true value_type: NeatCADModel view: NeatPointCloudVolume view_property: model3D - container: NeatPointCloudVolume container_property: neatPointCloudVolumeGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatPointCloudVolume view_property: neatPointCloudVolumeGUID @@ -2285,9 +2285,9 @@ enterprise: container_property: object3D description: Direct relation to object3D grouping for this node immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CognitePointCloudVolume/object3D - nullable: true value_type: Neat3DObject view: NeatPointCloudVolume view_property: object3D @@ -2296,33 +2296,33 @@ enterprise: container_property: revisions description: List of direct relations to revision information immutable: false - is_list: true + max_count: 100 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CognitePointCloudVolume/revisions - nullable: true value_type: NeatCADRevision view: NeatPointCloudVolume view_property: revisions - container: NeatSchedulable container_property: neatSchedulableGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatSchedulable view_property: neatSchedulableGUID - container: NeatSourceSystem container_property: neatSourceSystemGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatSourceSystem view_property: neatSourceSystemGUID - container: NeatSourceable container_property: neatSourceableGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatSourceable view_property: neatSourceableGUID @@ -2332,16 +2332,16 @@ enterprise: description: Direct relation to a source system immutable: false index: source - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteSourceable/source - nullable: true value_type: NeatSourceSystem view: NeatSourceable view_property: source - connection: reverse(property=timeSeries) description: An automatically updated list of activities the time series is related to. - is_list: true + max_count: .inf name: Activities neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteTimeSeries/activities value_type: NeatActivity @@ -2352,10 +2352,10 @@ enterprise: container_property: assets description: A list of assets the time series is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Assets neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteTimeSeries/assets - nullable: true value_type: NeatAsset view: NeatTimeSeries view_property: assets @@ -2364,18 +2364,18 @@ enterprise: container_property: equipment description: A list of equipment the time series is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Equipment neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteTimeSeries/equipment - nullable: true value_type: NeatEquipment view: NeatTimeSeries view_property: equipment - container: NeatTimeSeries container_property: neatTimeSeriesGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatTimeSeries view_property: neatTimeSeriesGUID @@ -2384,26 +2384,26 @@ enterprise: container_property: unit description: The unit of the time series. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Unit neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteTimeSeries/unit - nullable: true value_type: NeatUnit view: NeatTimeSeries view_property: unit - container: NeatUnit container_property: neatUnitGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatUnit view_property: neatUnitGUID - container: NeatVisualizable container_property: neatVisualizableGUID immutable: false - is_list: false - nullable: true + max_count: 1 + min_count: 0 value_type: text view: NeatVisualizable view_property: neatVisualizableGUID @@ -2413,9 +2413,9 @@ enterprise: container_property: object3D description: Direct relation to an Object3D instance representing the 3D resource immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteVisualizable/object3D - nullable: true value_type: Neat3DObject view: NeatVisualizable view_property: object3D @@ -2843,18 +2843,18 @@ solution: container_property: collection360 description: Direct relation to Cognite360ImageCollection immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite360Image/collection360 - nullable: true value_type: EnterpriseNeat360ImageCollection view: EnterpriseNeat360Image view_property: collection360 - container: sp_enterprise:Neat360Image container_property: neat360ImageGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat360Image/neat360ImageGUID - nullable: true value_type: text view: EnterpriseNeat360Image view_property: neat360ImageGUID @@ -2864,18 +2864,18 @@ solution: description: Direct relation to Cognite3DGroup instance that groups different Cognite360Image instances to the same station immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite360Image/station360 - nullable: true value_type: EnterpriseNeat360ImageStation view: EnterpriseNeat360Image view_property: station360 - container: sp_enterprise:Neat360ImageAnnotation container_property: neat360ImageAnnotationGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat360ImageAnnotation/neat360ImageAnnotationGUID - nullable: true value_type: text view: EnterpriseNeat360ImageAnnotation view_property: neat360ImageAnnotationGUID @@ -2884,24 +2884,24 @@ solution: container_property: model3D description: '' immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite360ImageCollection/model3D - nullable: true value_type: EnterpriseNeat360ImageModel view: EnterpriseNeat360ImageCollection view_property: model3D - container: sp_enterprise:Neat360ImageCollection container_property: neat360ImageCollectionGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat360ImageCollection/neat360ImageCollectionGUID - nullable: true value_type: text view: EnterpriseNeat360ImageCollection view_property: neat360ImageCollectionGUID - connection: reverse(property=model3D) description: List Cognite360Image collections for this instance - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite360ImageModel/collections value_type: EnterpriseNeat360ImageCollection view: EnterpriseNeat360ImageModel @@ -2909,27 +2909,27 @@ solution: - container: sp_enterprise:Neat360ImageModel container_property: neat360ImageModelGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat360ImageModel/neat360ImageModelGUID - nullable: true value_type: text view: EnterpriseNeat360ImageModel view_property: neat360ImageModelGUID - container: sp_enterprise:Neat360ImageStation container_property: neat360ImageStationGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat360ImageStation/neat360ImageStationGUID - nullable: true value_type: text view: EnterpriseNeat360ImageStation view_property: neat360ImageStationGUID - container: sp_enterprise:Neat3DModel container_property: neat3DModelGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat3DModel/neat3DModelGUID - nullable: true value_type: text view: EnterpriseNeat3DModel view_property: neat3DModelGUID @@ -2938,22 +2938,22 @@ solution: container_property: thumbnail description: Thumbnail of the 3D model immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DModel/thumbnail - nullable: true value_type: EnterpriseNeatFile view: EnterpriseNeat3DModel view_property: thumbnail - connection: reverse(property=object3D) description: Asset that is tied to this 3D object - is_list: false + max_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DObject/asset value_type: EnterpriseNeatAsset view: EnterpriseNeat3DObject view_property: asset - connection: reverse(property=object3D) description: List of up to 1000 CADNodes that represents the connected CogniteAsset - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DObject/cadNodes value_type: EnterpriseNeatCADNode view: EnterpriseNeat3DObject @@ -2961,7 +2961,7 @@ solution: - connection: edge(properties=cdf_cdm:Cognite360ImageAnnotation(version=v1),type=cdf_cdm:image-360-annotation) description: Edge connection to Cognite360Image annotations that represents the connected CogniteAsset - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DObject/images360 value_type: EnterpriseNeat360Image view: EnterpriseNeat3DObject @@ -2969,16 +2969,16 @@ solution: - container: sp_enterprise:Neat3DObject container_property: neat3DObjectGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat3DObject/neat3DObjectGUID - nullable: true value_type: text view: EnterpriseNeat3DObject view_property: neat3DObjectGUID - connection: reverse(property=object3D) description: List of up to 1000 PointCloudVolumes that represents the connected CogniteAsset - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DObject/pointCloudVolumes value_type: EnterpriseNeatPointCloudVolume view: EnterpriseNeat3DObject @@ -2987,27 +2987,27 @@ solution: container: cdf_cdm_3d:Cognite3DRevision container_property: model3D immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/Cognite3DRevision/model3D - nullable: true value_type: EnterpriseNeat3DModel view: EnterpriseNeat3DRevision view_property: model3D - container: sp_enterprise:Neat3DRevision container_property: neat3DRevisionGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat3DRevision/neat3DRevisionGUID - nullable: true value_type: text view: EnterpriseNeat3DRevision view_property: neat3DRevisionGUID - container: sp_enterprise:Neat3DTransformation container_property: neat3DTransformationGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeat3DTransformation/neat3DTransformationGUID - nullable: true value_type: text view: EnterpriseNeat3DTransformation view_property: neat3DTransformationGUID @@ -3016,10 +3016,10 @@ solution: container_property: assets description: A list of assets the activity is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Assets neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteActivity/assets - nullable: true value_type: EnterpriseNeatAsset view: EnterpriseNeatActivity view_property: assets @@ -3028,19 +3028,19 @@ solution: container_property: equipment description: A list of equipment the activity is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Equipment neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteActivity/equipment - nullable: true value_type: EnterpriseNeatEquipment view: EnterpriseNeatActivity view_property: equipment - container: sp_enterprise:NeatActivity container_property: neatActivityGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatActivity/neatActivityGUID - nullable: true value_type: text view: EnterpriseNeatActivity view_property: neatActivityGUID @@ -3049,25 +3049,25 @@ solution: container_property: timeSeries description: A list of time series the activity is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Time series neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteActivity/timeSeries - nullable: true value_type: EnterpriseNeatTimeSeries view: EnterpriseNeatActivity view_property: timeSeries - container: sp_enterprise:NeatAnnotation container_property: neatAnnotationGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatAnnotation/neatAnnotationGUID - nullable: true value_type: text view: EnterpriseNeatAnnotation view_property: neatAnnotationGUID - connection: reverse(property=assets) description: An automatically updated list of activities related to the asset. - is_list: true + max_count: .inf name: Activities neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/activities value_type: EnterpriseNeatActivity @@ -3078,17 +3078,17 @@ solution: container_property: assetClass description: Specifies the class of the asset. It's a direct relation to CogniteAssetClass. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Asset class neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/assetClass - nullable: true value_type: EnterpriseNeatAssetClass view: EnterpriseNeatAsset view_property: assetClass - connection: reverse(property=parent) description: An automatically updated list of assets with this asset as their parent. - is_list: true + max_count: .inf name: Children neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/children value_type: EnterpriseNeatAsset @@ -3096,7 +3096,7 @@ solution: view_property: children - connection: reverse(property=asset) description: An automatically updated list of equipment related to the asset. - is_list: true + max_count: .inf name: Equipment neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/equipment value_type: EnterpriseNeatEquipment @@ -3104,7 +3104,7 @@ solution: view_property: equipment - connection: reverse(property=assets) description: An automatically updated list of files related to the asset. - is_list: true + max_count: .inf name: Files neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/files value_type: EnterpriseNeatFile @@ -3113,9 +3113,9 @@ solution: - container: sp_enterprise:NeatAsset container_property: neatAssetGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatAsset/neatAssetGUID - nullable: true value_type: text view: EnterpriseNeatAsset view_property: neatAssetGUID @@ -3124,10 +3124,10 @@ solution: container_property: assetHierarchy_parent description: The parent of the asset. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Parent neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/parent - nullable: true value_type: EnterpriseNeatAsset view: EnterpriseNeatAsset view_property: parent @@ -3138,10 +3138,10 @@ solution: starting with the root asset. Enables subtree filtering to find all assets under a parent. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Path neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/path - nullable: true value_type: EnterpriseNeatAsset view: EnterpriseNeatAsset view_property: path @@ -3151,16 +3151,16 @@ solution: description: An automatically updated reference to the top-level asset of the hierarchy. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Root neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/root - nullable: true value_type: EnterpriseNeatAsset view: EnterpriseNeatAsset view_property: root - connection: reverse(property=assets) description: An automatically updated list of time series related to the asset. - is_list: true + max_count: .inf name: Time series neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/timeSeries value_type: EnterpriseNeatTimeSeries @@ -3171,19 +3171,19 @@ solution: container_property: type description: Specifies the type of the asset. It's a direct relation to CogniteAssetType. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Asset type neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAsset/type - nullable: true value_type: EnterpriseNeatAssetType view: EnterpriseNeatAsset view_property: type - container: sp_enterprise:NeatAssetClass container_property: neatAssetClassGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatAssetClass/neatAssetClassGUID - nullable: true value_type: text view: EnterpriseNeatAssetClass view_property: neatAssetClassGUID @@ -3193,34 +3193,34 @@ solution: description: Specifies the class the type belongs to. It's a direct relation to CogniteAssetClass. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Asset class neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteAssetType/assetClass - nullable: true value_type: EnterpriseNeatAssetClass view: EnterpriseNeatAssetType view_property: assetClass - container: sp_enterprise:NeatAssetType container_property: neatAssetTypeGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatAssetType/neatAssetTypeGUID - nullable: true value_type: text view: EnterpriseNeatAssetType view_property: neatAssetTypeGUID - container: sp_enterprise:NeatCADModel container_property: neatCADModelGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatCADModel/neatCADModelGUID - nullable: true value_type: text view: EnterpriseNeatCADModel view_property: neatCADModelGUID - connection: reverse(property=model3D) description: List of revisions for this CAD model - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCADModel/revisions value_type: EnterpriseNeatCADRevision view: EnterpriseNeatCADModel @@ -3230,18 +3230,18 @@ solution: container_property: model3D description: Direct relation to Cognite3DModel immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCADNode/model3D - nullable: true value_type: EnterpriseNeatCADModel view: EnterpriseNeatCADNode view_property: model3D - container: sp_enterprise:NeatCADNode container_property: neatCADNodeGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatCADNode/neatCADNodeGUID - nullable: true value_type: text view: EnterpriseNeatCADNode view_property: neatCADNodeGUID @@ -3250,9 +3250,9 @@ solution: container_property: object3D description: Direct relation to object3D grouping for this node immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCADNode/object3D - nullable: true value_type: EnterpriseNeat3DObject view: EnterpriseNeatCADNode view_property: object3D @@ -3262,9 +3262,9 @@ solution: description: List of direct relations to instances of Cognite3DRevision which this CogniteCADNode exists in. immutable: false - is_list: true + max_count: 100 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCADNode/revisions - nullable: true value_type: EnterpriseNeatCADRevision view: EnterpriseNeatCADNode view_property: revisions @@ -3273,18 +3273,18 @@ solution: container_property: model3D description: . immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCADRevision/model3D - nullable: true value_type: EnterpriseNeatCADModel view: EnterpriseNeatCADRevision view_property: model3D - container: sp_enterprise:NeatCADRevision container_property: neatCADRevisionGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatCADRevision/neatCADRevisionGUID - nullable: true value_type: text view: EnterpriseNeatCADRevision view_property: neatCADRevisionGUID @@ -3294,9 +3294,9 @@ solution: description: Direct relation to a file holding the back projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/back - nullable: true value_type: EnterpriseNeatFile view: EnterpriseNeatCubeMap view_property: back @@ -3306,9 +3306,9 @@ solution: description: Direct relation to a file holding the bottom projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/bottom - nullable: true value_type: EnterpriseNeatFile view: EnterpriseNeatCubeMap view_property: bottom @@ -3318,9 +3318,9 @@ solution: description: Direct relation to a file holding the front projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/front - nullable: true value_type: EnterpriseNeatFile view: EnterpriseNeatCubeMap view_property: front @@ -3330,18 +3330,18 @@ solution: description: Direct relation to a file holding the left projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/left - nullable: true value_type: EnterpriseNeatFile view: EnterpriseNeatCubeMap view_property: left - container: sp_enterprise:NeatCubeMap container_property: neatCubeMapGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatCubeMap/neatCubeMapGUID - nullable: true value_type: text view: EnterpriseNeatCubeMap view_property: neatCubeMapGUID @@ -3351,9 +3351,9 @@ solution: description: Direct relation to a file holding the right projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/right - nullable: true value_type: EnterpriseNeatFile view: EnterpriseNeatCubeMap view_property: right @@ -3363,33 +3363,33 @@ solution: description: Direct relation to a file holding the top projection of the cube map immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteCubeMap/top - nullable: true value_type: EnterpriseNeatFile view: EnterpriseNeatCubeMap view_property: top - container: sp_enterprise:NeatDescribable container_property: neatDescribableGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatDescribable/neatDescribableGUID - nullable: true value_type: text view: EnterpriseNeatDescribable view_property: neatDescribableGUID - container: sp_enterprise:NeatDiagramAnnotation container_property: neatDiagramAnnotationGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatDiagramAnnotation/neatDiagramAnnotationGUID - nullable: true value_type: text view: EnterpriseNeatDiagramAnnotation view_property: neatDiagramAnnotationGUID - connection: reverse(property=equipment) description: An automatically updated list of activities related to the equipment. - is_list: true + max_count: .inf name: Activities neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteEquipment/activities value_type: EnterpriseNeatActivity @@ -3400,10 +3400,10 @@ solution: container_property: asset description: The asset the equipment is related to. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Asset neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteEquipment/asset - nullable: true value_type: EnterpriseNeatAsset view: EnterpriseNeatEquipment view_property: asset @@ -3412,10 +3412,10 @@ solution: container_property: equipmentType description: Specifies the type of the equipment. It's a direct relation to CogniteEquipmentType. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Equipment type neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteEquipment/equipmentType - nullable: true value_type: EnterpriseNeatEquipmentType view: EnterpriseNeatEquipment view_property: equipmentType @@ -3424,25 +3424,25 @@ solution: container_property: files description: A list of files the equipment relates to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Files neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteEquipment/files - nullable: true value_type: EnterpriseNeatFile view: EnterpriseNeatEquipment view_property: files - container: sp_enterprise:NeatEquipment container_property: neatEquipmentGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatEquipment/neatEquipmentGUID - nullable: true value_type: text view: EnterpriseNeatEquipment view_property: neatEquipmentGUID - connection: reverse(property=equipment) description: An automatically updated list of time series related to the equipment. - is_list: true + max_count: .inf name: Time series neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteEquipment/timeSeries value_type: EnterpriseNeatTimeSeries @@ -3451,9 +3451,9 @@ solution: - container: sp_enterprise:NeatEquipmentType container_property: neatEquipmentTypeGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatEquipmentType/neatEquipmentTypeGUID - nullable: true value_type: text view: EnterpriseNeatEquipmentType view_property: neatEquipmentTypeGUID @@ -3462,10 +3462,10 @@ solution: container_property: assets description: A list of assets this file is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Assets neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteFile/assets - nullable: true value_type: EnterpriseNeatAsset view: EnterpriseNeatFile view_property: assets @@ -3475,16 +3475,16 @@ solution: description: Specifies the detected category the file belongs to. It's a direct relation to an instance of CogniteFileCategory. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Category neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteFile/category - nullable: true value_type: EnterpriseNeatFileCategory view: EnterpriseNeatFile view_property: category - connection: reverse(property=files) description: An automatically updated list of equipment this file is related to. - is_list: true + max_count: .inf name: Equipment neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteFile/equipment value_type: EnterpriseNeatEquipment @@ -3493,33 +3493,33 @@ solution: - container: sp_enterprise:NeatFile container_property: neatFileGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatFile/neatFileGUID - nullable: true value_type: text view: EnterpriseNeatFile view_property: neatFileGUID - container: sp_enterprise:NeatFileCategory container_property: neatFileCategoryGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatFileCategory/neatFileCategoryGUID - nullable: true value_type: text view: EnterpriseNeatFileCategory view_property: neatFileCategoryGUID - container: sp_enterprise:NeatPointCloudModel container_property: neatPointCloudModelGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatPointCloudModel/neatPointCloudModelGUID - nullable: true value_type: text view: EnterpriseNeatPointCloudModel view_property: neatPointCloudModelGUID - connection: reverse(property=model3D) description: List of revisions for this PointCloud model - is_list: true + max_count: .inf neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CognitePointCloudModel/revisions value_type: EnterpriseNeatPointCloudRevision view: EnterpriseNeatPointCloudModel @@ -3529,18 +3529,18 @@ solution: container_property: model3D description: . immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CognitePointCloudRevision/model3D - nullable: true value_type: EnterpriseNeatPointCloudModel view: EnterpriseNeatPointCloudRevision view_property: model3D - container: sp_enterprise:NeatPointCloudRevision container_property: neatPointCloudRevisionGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatPointCloudRevision/neatPointCloudRevisionGUID - nullable: true value_type: text view: EnterpriseNeatPointCloudRevision view_property: neatPointCloudRevisionGUID @@ -3549,18 +3549,18 @@ solution: container_property: model3D description: Direct relation to Cognite3DModel instance immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CognitePointCloudVolume/model3D - nullable: true value_type: EnterpriseNeatCADModel view: EnterpriseNeatPointCloudVolume view_property: model3D - container: sp_enterprise:NeatPointCloudVolume container_property: neatPointCloudVolumeGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatPointCloudVolume/neatPointCloudVolumeGUID - nullable: true value_type: text view: EnterpriseNeatPointCloudVolume view_property: neatPointCloudVolumeGUID @@ -3569,9 +3569,9 @@ solution: container_property: object3D description: Direct relation to object3D grouping for this node immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CognitePointCloudVolume/object3D - nullable: true value_type: EnterpriseNeat3DObject view: EnterpriseNeatPointCloudVolume view_property: object3D @@ -3580,36 +3580,36 @@ solution: container_property: revisions description: List of direct relations to revision information immutable: false - is_list: true + max_count: 100 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CognitePointCloudVolume/revisions - nullable: true value_type: EnterpriseNeatCADRevision view: EnterpriseNeatPointCloudVolume view_property: revisions - container: sp_enterprise:NeatSchedulable container_property: neatSchedulableGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatSchedulable/neatSchedulableGUID - nullable: true value_type: text view: EnterpriseNeatSchedulable view_property: neatSchedulableGUID - container: sp_enterprise:NeatSourceSystem container_property: neatSourceSystemGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatSourceSystem/neatSourceSystemGUID - nullable: true value_type: text view: EnterpriseNeatSourceSystem view_property: neatSourceSystemGUID - container: sp_enterprise:NeatSourceable container_property: neatSourceableGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatSourceable/neatSourceableGUID - nullable: true value_type: text view: EnterpriseNeatSourceable view_property: neatSourceableGUID @@ -3619,16 +3619,16 @@ solution: description: Direct relation to a source system immutable: false index: source - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteSourceable/source - nullable: true value_type: EnterpriseNeatSourceSystem view: EnterpriseNeatSourceable view_property: source - connection: reverse(property=timeSeries) description: An automatically updated list of activities the time series is related to. - is_list: true + max_count: .inf name: Activities neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteTimeSeries/activities value_type: EnterpriseNeatActivity @@ -3639,10 +3639,10 @@ solution: container_property: assets description: A list of assets the time series is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Assets neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteTimeSeries/assets - nullable: true value_type: EnterpriseNeatAsset view: EnterpriseNeatTimeSeries view_property: assets @@ -3651,19 +3651,19 @@ solution: container_property: equipment description: A list of equipment the time series is related to. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Equipment neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteTimeSeries/equipment - nullable: true value_type: EnterpriseNeatEquipment view: EnterpriseNeatTimeSeries view_property: equipment - container: sp_enterprise:NeatTimeSeries container_property: neatTimeSeriesGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatTimeSeries/neatTimeSeriesGUID - nullable: true value_type: text view: EnterpriseNeatTimeSeries view_property: neatTimeSeriesGUID @@ -3672,28 +3672,28 @@ solution: container_property: unit description: The unit of the time series. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Unit neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteTimeSeries/unit - nullable: true value_type: EnterpriseNeatUnit view: EnterpriseNeatTimeSeries view_property: unit - container: sp_enterprise:NeatUnit container_property: neatUnitGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatUnit/neatUnitGUID - nullable: true value_type: text view: EnterpriseNeatUnit view_property: neatUnitGUID - container: sp_enterprise:NeatVisualizable container_property: neatVisualizableGUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/EnterpriseNeatVisualizable/neatVisualizableGUID - nullable: true value_type: text view: EnterpriseNeatVisualizable view_property: neatVisualizableGUID @@ -3703,306 +3703,306 @@ solution: container_property: object3D description: Direct relation to an Object3D instance representing the 3D resource immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/cdf_cdm/CogniteCore/v1/CogniteVisualizable/object3D - nullable: true value_type: EnterpriseNeat3DObject view: EnterpriseNeatVisualizable view_property: object3D - container: Neat360Image container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat360Image/enterprise - nullable: true value_type: EnterpriseNeat360Image view: Neat360Image view_property: enterprise - container: Neat360ImageAnnotation container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat360ImageAnnotation/enterprise - nullable: true value_type: EnterpriseNeat360ImageAnnotation view: Neat360ImageAnnotation view_property: enterprise - container: Neat360ImageCollection container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat360ImageCollection/enterprise - nullable: true value_type: EnterpriseNeat360ImageCollection view: Neat360ImageCollection view_property: enterprise - container: Neat360ImageModel container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat360ImageModel/enterprise - nullable: true value_type: EnterpriseNeat360ImageModel view: Neat360ImageModel view_property: enterprise - container: Neat360ImageStation container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat360ImageStation/enterprise - nullable: true value_type: EnterpriseNeat360ImageStation view: Neat360ImageStation view_property: enterprise - container: Neat3DModel container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat3DModel/enterprise - nullable: true value_type: EnterpriseNeat3DModel view: Neat3DModel view_property: enterprise - container: Neat3DObject container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat3DObject/enterprise - nullable: true value_type: EnterpriseNeat3DObject view: Neat3DObject view_property: enterprise - container: Neat3DRevision container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat3DRevision/enterprise - nullable: true value_type: EnterpriseNeat3DRevision view: Neat3DRevision view_property: enterprise - container: Neat3DTransformation container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/Neat3DTransformation/enterprise - nullable: true value_type: EnterpriseNeat3DTransformation view: Neat3DTransformation view_property: enterprise - container: NeatActivity container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatActivity/enterprise - nullable: true value_type: EnterpriseNeatActivity view: NeatActivity view_property: enterprise - container: NeatAnnotation container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatAnnotation/enterprise - nullable: true value_type: EnterpriseNeatAnnotation view: NeatAnnotation view_property: enterprise - container: NeatAsset container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatAsset/enterprise - nullable: true value_type: EnterpriseNeatAsset view: NeatAsset view_property: enterprise - container: NeatAssetClass container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatAssetClass/enterprise - nullable: true value_type: EnterpriseNeatAssetClass view: NeatAssetClass view_property: enterprise - container: NeatAssetType container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatAssetType/enterprise - nullable: true value_type: EnterpriseNeatAssetType view: NeatAssetType view_property: enterprise - container: NeatCADModel container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatCADModel/enterprise - nullable: true value_type: EnterpriseNeatCADModel view: NeatCADModel view_property: enterprise - container: NeatCADNode container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatCADNode/enterprise - nullable: true value_type: EnterpriseNeatCADNode view: NeatCADNode view_property: enterprise - container: NeatCADRevision container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatCADRevision/enterprise - nullable: true value_type: EnterpriseNeatCADRevision view: NeatCADRevision view_property: enterprise - container: NeatCubeMap container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatCubeMap/enterprise - nullable: true value_type: EnterpriseNeatCubeMap view: NeatCubeMap view_property: enterprise - container: NeatDescribable container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatDescribable/enterprise - nullable: true value_type: EnterpriseNeatDescribable view: NeatDescribable view_property: enterprise - container: NeatDiagramAnnotation container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatDiagramAnnotation/enterprise - nullable: true value_type: EnterpriseNeatDiagramAnnotation view: NeatDiagramAnnotation view_property: enterprise - container: NeatEquipment container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatEquipment/enterprise - nullable: true value_type: EnterpriseNeatEquipment view: NeatEquipment view_property: enterprise - container: NeatEquipmentType container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatEquipmentType/enterprise - nullable: true value_type: EnterpriseNeatEquipmentType view: NeatEquipmentType view_property: enterprise - container: NeatFile container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatFile/enterprise - nullable: true value_type: EnterpriseNeatFile view: NeatFile view_property: enterprise - container: NeatFileCategory container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatFileCategory/enterprise - nullable: true value_type: EnterpriseNeatFileCategory view: NeatFileCategory view_property: enterprise - container: NeatPointCloudModel container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatPointCloudModel/enterprise - nullable: true value_type: EnterpriseNeatPointCloudModel view: NeatPointCloudModel view_property: enterprise - container: NeatPointCloudRevision container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatPointCloudRevision/enterprise - nullable: true value_type: EnterpriseNeatPointCloudRevision view: NeatPointCloudRevision view_property: enterprise - container: NeatPointCloudVolume container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatPointCloudVolume/enterprise - nullable: true value_type: EnterpriseNeatPointCloudVolume view: NeatPointCloudVolume view_property: enterprise - container: NeatSchedulable container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatSchedulable/enterprise - nullable: true value_type: EnterpriseNeatSchedulable view: NeatSchedulable view_property: enterprise - container: NeatSourceSystem container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatSourceSystem/enterprise - nullable: true value_type: EnterpriseNeatSourceSystem view: NeatSourceSystem view_property: enterprise - container: NeatSourceable container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatSourceable/enterprise - nullable: true value_type: EnterpriseNeatSourceable view: NeatSourceable view_property: enterprise - container: NeatTimeSeries container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatTimeSeries/enterprise - nullable: true value_type: EnterpriseNeatTimeSeries view: NeatTimeSeries view_property: enterprise - container: NeatUnit container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatUnit/enterprise - nullable: true value_type: EnterpriseNeatUnit view: NeatUnit view_property: enterprise - container: NeatVisualizable container_property: enterprise immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_solution/Solution/v1/NeatVisualizable/enterprise - nullable: true value_type: EnterpriseNeatVisualizable view: NeatVisualizable view_property: enterprise diff --git a/tests/tests_integration/test_session/test_data_model_prepare_fix.py b/tests/tests_integration/test_session/test_data_model_prepare_fix.py index 97662c0fc..df549dfda 100644 --- a/tests/tests_integration/test_session/test_data_model_prepare_fix.py +++ b/tests/tests_integration/test_session/test_data_model_prepare_fix.py @@ -27,11 +27,7 @@ def test_prefix_dms_rules_entities( rules_str = neat.to.yaml(format="neat") rules_dict = yaml.safe_load(rules_str) - data_regression.check( - { - "rules": rules_dict, - } - ) + data_regression.check({"rules": rules_dict}) def test_prefix_info_rules_entities( self, cognite_client: CogniteClient, data_regression: DataRegressionFixture diff --git a/tests/tests_integration/test_session/test_data_model_prepare_fix/test_prefix_dms_rules_entities.yml b/tests/tests_integration/test_session/test_data_model_prepare_fix/test_prefix_dms_rules_entities.yml index 9e4b91941..bd2df207d 100644 --- a/tests/tests_integration/test_session/test_data_model_prepare_fix/test_prefix_dms_rules_entities.yml +++ b/tests/tests_integration/test_session/test_data_model_prepare_fix/test_prefix_dms_rules_entities.yml @@ -24,19 +24,19 @@ rules: container_property: doi description: digital object identifier immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/NeatHelloWorld/v1/Documentation/doi - nullable: true value_type: text view: NeatINCDocumentation view_property: doi - container: cdf_cdm:CogniteDescribable container_property: name immutable: false - is_list: false + max_count: 1 + min_count: 0 name: name neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/NeatHelloWorld/v1/Documentation/name - nullable: true value_type: text view: NeatINCDocumentation view_property: name @@ -44,10 +44,10 @@ rules: container: cdf_cdm:CogniteFile container_property: assets immutable: false - is_list: true + max_count: 100 + min_count: 0 name: relatedPumps neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/NeatHelloWorld/v1/Documentation/relatedPumps - nullable: true value_type: NeatINCPump view: NeatINCDocumentation view_property: relatedPumps @@ -55,24 +55,24 @@ rules: container_property: UUID description: unique identifier immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/NeatHelloWorld/v1/Facility/UUID - nullable: true value_type: text view: NeatINCFacility view_property: UUID - container: cdf_cdm:CogniteDescribable container_property: description immutable: false - is_list: false + max_count: 1 + min_count: 0 name: desc neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/NeatHelloWorld/v1/Facility/desc - nullable: true value_type: text view: NeatINCFacility view_property: desc - connection: reverse(property=livesIn) - is_list: true + max_count: .inf name: hasPumps neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/NeatHelloWorld/v1/Facility/hasPumps value_type: NeatINCPump @@ -81,15 +81,15 @@ rules: - container: cdf_cdm:CogniteDescribable container_property: name immutable: false - is_list: false + max_count: 1 + min_count: 0 name: name neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/NeatHelloWorld/v1/Facility/name - nullable: true value_type: text view: NeatINCFacility view_property: name - connection: reverse(property=relatedPumps) - is_list: true + max_count: .inf name: documentation neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/NeatHelloWorld/v1/Pump/documentation value_type: NeatINCDocumentation @@ -99,20 +99,20 @@ rules: container: cdf_cdm:CogniteAsset container_property: assetHierarchy_parent immutable: false - is_list: false + max_count: 1 + min_count: 0 name: livesIn neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/NeatHelloWorld/v1/Pump/livesIn - nullable: true value_type: NeatINCFacility view: NeatINCPump view_property: livesIn - container: cdf_cdm:CogniteDescribable container_property: name immutable: false - is_list: false + max_count: 1 + min_count: 0 name: name neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/NeatHelloWorld/v1/Pump/name - nullable: true value_type: text view: NeatINCPump view_property: name @@ -120,10 +120,10 @@ rules: container: NeatINCPump container_property: pressure immutable: false - is_list: false + max_count: 1 + min_count: 0 name: pressure neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/NeatHelloWorld/v1/Pump/pressure - nullable: true value_type: cdf_cdm:CogniteTimeSeries(version=v1) view: NeatINCPump view_property: pressure @@ -131,10 +131,10 @@ rules: container: NeatINCPump container_property: temperature immutable: false - is_list: false + max_count: 1 + min_count: 0 name: temperature neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/NeatHelloWorld/v1/Pump/temperature - nullable: true value_type: cdf_cdm:CogniteTimeSeries(version=v1) view: NeatINCPump view_property: temperature @@ -142,20 +142,20 @@ rules: container_property: weight description: this is a description of the field weight immutable: false - is_list: false + max_count: 1 + min_count: 0 name: weight neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/NeatHelloWorld/v1/Pump/weight - nullable: true value_type: float64(unit=mass:kilogm) view: NeatINCPump view_property: weight - container: NeatINCPump container_property: year immutable: false - is_list: false + max_count: 1 + min_count: 0 name: year neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/NeatHelloWorld/v1/Pump/year - nullable: true value_type: int32 view: NeatINCPump view_property: year diff --git a/tests/tests_integration/test_session/test_data_model_prepare_fix/test_standardize_space_and_version.yml b/tests/tests_integration/test_session/test_data_model_prepare_fix/test_standardize_space_and_version.yml index 05d1434d8..f57a9c3b3 100644 --- a/tests/tests_integration/test_session/test_data_model_prepare_fix/test_standardize_space_and_version.yml +++ b/tests/tests_integration/test_session/test_data_model_prepare_fix/test_standardize_space_and_version.yml @@ -23,25 +23,25 @@ rules: - container: Documentation container_property: file immutable: false - is_list: false + max_count: 1 + min_count: 0 name: file neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/TestMixedUpVersions/v1/Documentation/file - nullable: true value_type: file view: Documentation view_property: file - container: Documentation container_property: name immutable: false - is_list: false + max_count: 1 + min_count: 0 name: name neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/TestMixedUpVersions/v1/Documentation/name - nullable: true value_type: text view: Documentation view_property: name - connection: edge(direction=inwards,type=Pump.documentation) - is_list: true + max_count: .inf name: relatedPumps neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/TestMixedUpVersions/v1/Documentation/relatedPumps value_type: Pump @@ -50,15 +50,15 @@ rules: - container: Facility container_property: desc immutable: false - is_list: false + max_count: 1 + min_count: 1 name: desc neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/TestMixedUpVersions/v1/Facility/desc - nullable: false value_type: text view: Facility view_property: desc - connection: reverse(property=livesIn) - is_list: true + max_count: .inf name: hasPumps neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/TestMixedUpVersions/v1/Facility/hasPumps value_type: Pump @@ -67,15 +67,15 @@ rules: - container: Facility container_property: name immutable: false - is_list: false + max_count: 1 + min_count: 1 name: name neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/TestMixedUpVersions/v1/Facility/name - nullable: false value_type: text view: Facility view_property: name - connection: edge - is_list: true + max_count: .inf name: documentation neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/TestMixedUpVersions/v1/Pump/documentation value_type: Documentation @@ -85,40 +85,40 @@ rules: container: Pump container_property: livesIn immutable: false - is_list: false + max_count: 1 + min_count: 0 name: livesIn neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/TestMixedUpVersions/v1/Pump/livesIn - nullable: true value_type: Facility view: Pump view_property: livesIn - container: Pump container_property: name immutable: false - is_list: false + max_count: 1 + min_count: 1 name: name neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/TestMixedUpVersions/v1/Pump/name - nullable: false value_type: text view: Pump view_property: name - container: Pump container_property: pressure immutable: false - is_list: false + max_count: 1 + min_count: 0 name: pressure neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/TestMixedUpVersions/v1/Pump/pressure - nullable: true value_type: timeseries view: Pump view_property: pressure - container: Pump container_property: temperature immutable: false - is_list: false + max_count: 1 + min_count: 0 name: temperature neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/TestMixedUpVersions/v1/Pump/temperature - nullable: true value_type: timeseries view: Pump view_property: temperature @@ -126,30 +126,30 @@ rules: container_property: weight description: this is a description of the field weight immutable: false - is_list: false + max_count: 1 + min_count: 0 name: weight neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/TestMixedUpVersions/v1/Pump/weight - nullable: true value_type: float64 view: Pump view_property: weight - container: Pump container_property: weightUnit immutable: false - is_list: false + max_count: 1 + min_count: 0 name: weightUnit neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/TestMixedUpVersions/v1/Pump/weightUnit - nullable: true value_type: text view: Pump view_property: weightUnit - container: Pump container_property: year immutable: false - is_list: false + max_count: 1 + min_count: 0 name: year neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_playground/TestMixedUpVersions/v1/Pump/year - nullable: true value_type: int32 view: Pump view_property: year diff --git a/tests/tests_integration/test_session/test_data_model_to/test_raw_filter.yml b/tests/tests_integration/test_session/test_data_model_to/test_raw_filter.yml index 6a013b65b..6754fe03e 100644 --- a/tests/tests_integration/test_session/test_data_model_to/test_raw_filter.yml +++ b/tests/tests_integration/test_session/test_data_model_to/test_raw_filter.yml @@ -17,36 +17,36 @@ rules: - container: MyConcept container_property: altName immutable: true - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/nikola_space/nikola_external_id/v1/MyConcept/altName - nullable: true value_type: text view: MyConcept view_property: altName - container: MyConcept container_property: name immutable: true - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/nikola_space/nikola_external_id/v1/MyConcept/name - nullable: true value_type: text view: MyConcept view_property: name - container: MyConcept container_property: oneMoreName immutable: true - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/nikola_space/nikola_external_id/v1/MyConcept/oneMoreName - nullable: true value_type: text view: MyConcept view_property: oneMoreName - container: MyConcept container_property: yetAnotherName immutable: true - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/nikola_space/nikola_external_id/v1/MyConcept/yetAnotherName - nullable: true value_type: text view: MyConcept view_property: yetAnotherName diff --git a/tests/tests_integration/test_session/test_graph_flow/test_aml_to_dms.yml b/tests/tests_integration/test_session/test_graph_flow/test_aml_to_dms.yml index cad586b16..f46691e38 100644 --- a/tests/tests_integration/test_session/test_graph_flow/test_aml_to_dms.yml +++ b/tests/tests_integration/test_session/test_graph_flow/test_aml_to_dms.yml @@ -21,402 +21,405 @@ rules: properties: - container: ExternalInterface container_property: Description - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ExternalInterface/Description + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ExternalInterface/Description - nullable: true value_type: text view: ExternalInterface view_property: Description - container: ExternalInterface container_property: Name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ExternalInterface/Name + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ExternalInterface/Name - nullable: true value_type: text view: ExternalInterface view_property: Name - container: ExternalInterface container_property: RefBaseClassPath - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ExternalInterface/RefBaseClassPath + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ExternalInterface/RefBaseClassPath - nullable: true value_type: text view: ExternalInterface view_property: RefBaseClassPath - container: ExternalInterface container_property: active - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ExternalInterface/active + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ExternalInterface/active - nullable: true value_type: text view: ExternalInterface view_property: active - container: ExternalInterface container_property: communicationType - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ExternalInterface/communicationType + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ExternalInterface/communicationType - nullable: true value_type: text view: ExternalInterface view_property: communicationType - container: ExternalInterface container_property: direction - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ExternalInterface/direction + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ExternalInterface/direction - nullable: true value_type: text view: ExternalInterface view_property: direction - container: ExternalInterface container_property: invertSignal - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ExternalInterface/invertSignal + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ExternalInterface/invertSignal - nullable: true value_type: text view: ExternalInterface view_property: invertSignal - container: ExternalInterface container_property: signalClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ExternalInterface/signalClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ExternalInterface/signalClass - nullable: true value_type: text view: ExternalInterface view_property: signalClass - container: InternalElement container_property: Description - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/Description + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/Description - nullable: true value_type: text view: InternalElement view_property: Description - container: InternalElement container_property: Name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/Name + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/Name - nullable: true value_type: text view: InternalElement view_property: Name - container: InternalElement container_property: RefBaseSystemUnitPath - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/RefBaseSystemUnitPath + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/RefBaseSystemUnitPath - nullable: true value_type: text view: InternalElement view_property: RefBaseSystemUnitPath - container: InternalElement container_property: RoleRequirements - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/RoleRequirements + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/RoleRequirements - nullable: true value_type: text view: InternalElement view_property: RoleRequirements - container: InternalElement container_property: SISNotation - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/SISNotation + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/SISNotation - nullable: true value_type: text view: InternalElement view_property: SISNotation - container: InternalElement container_property: Version - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/Version + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/Version - nullable: true value_type: text view: InternalElement view_property: Version - container: InternalElement container_property: additionalText - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/additionalText + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/additionalText - nullable: true value_type: text view: InternalElement view_property: additionalText - container: InternalElement container_property: approvedBy - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/approvedBy + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/approvedBy - nullable: true value_type: text view: InternalElement view_property: approvedBy - container: InternalElement container_property: area - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/area + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/area - nullable: true value_type: text view: InternalElement view_property: area - container: InternalElement container_property: checkedBy - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/checkedBy + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/checkedBy - nullable: true value_type: text view: InternalElement view_property: checkedBy - container: InternalElement container_property: controlFunctionIntegration - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/controlFunctionIntegration + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/controlFunctionIntegration - nullable: true value_type: text view: InternalElement view_property: controlFunctionIntegration - container: InternalElement container_property: controlMode - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/controlMode + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/controlMode - nullable: true value_type: text view: InternalElement view_property: controlMode - container: InternalElement container_property: controlNode - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/controlNode + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/controlNode - nullable: true value_type: text view: InternalElement view_property: controlNode - container: InternalElement container_property: controlNodeIN - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/controlNodeIN + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/controlNodeIN - nullable: true value_type: text view: InternalElement view_property: controlNodeIN - container: InternalElement container_property: controlNodeOUT - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/controlNodeOUT + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/controlNodeOUT - nullable: true value_type: text view: InternalElement view_property: controlNodeOUT - container: InternalElement container_property: coordinateSystem - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/coordinateSystem + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/coordinateSystem - nullable: true value_type: text view: InternalElement view_property: coordinateSystem - container: InternalElement container_property: createdBy - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/createdBy + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/createdBy - nullable: true value_type: text view: InternalElement view_property: createdBy - container: InternalElement container_property: drawingOrigin - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/drawingOrigin + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/drawingOrigin - nullable: true value_type: text view: InternalElement view_property: drawingOrigin - container: InternalElement container_property: drawingReference - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/drawingReference + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/drawingReference - nullable: true value_type: text view: InternalElement view_property: drawingReference - container: InternalElement container_property: drawingSize - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/drawingSize + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/drawingSize - nullable: true value_type: text view: InternalElement view_property: drawingSize - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/externalInterface + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/externalInterface value_type: ExternalInterface view: InternalElement view_property: externalInterface - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/internalElement + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/internalElement value_type: InternalElement view: InternalElement view_property: internalElement - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/internalLink + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/internalLink value_type: InternalLink view: InternalElement view_property: internalLink - container: InternalElement container_property: layer - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/layer + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/layer - nullable: true value_type: text view: InternalElement view_property: layer - container: InternalElement container_property: notation - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/notation + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/notation - nullable: true value_type: text view: InternalElement view_property: notation - container: InternalElement container_property: noteRef - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/noteRef + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/noteRef - nullable: true value_type: text view: InternalElement view_property: noteRef - container: InternalElement container_property: orientation - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/orientation + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/orientation - nullable: true value_type: text view: InternalElement view_property: orientation - container: InternalElement container_property: reference - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/reference + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/reference - nullable: true value_type: text view: InternalElement view_property: reference - container: InternalElement container_property: revisionDate - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/revisionDate + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/revisionDate - nullable: true value_type: text view: InternalElement view_property: revisionDate - container: InternalElement container_property: scale - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/scale + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/scale - nullable: true value_type: text view: InternalElement view_property: scale - container: InternalElement container_property: symbolType - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/symbolType + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/symbolType - nullable: true value_type: text view: InternalElement view_property: symbolType - container: InternalElement container_property: typical - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/typical + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/typical - nullable: true value_type: text view: InternalElement view_property: typical - container: InternalElement container_property: x - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/x + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/x - nullable: true value_type: text view: InternalElement view_property: x - container: InternalElement container_property: y - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalElement/y + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalElement/y - nullable: true value_type: text view: InternalElement view_property: y - container: InternalLink container_property: Name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalLink/Name + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalLink/Name - nullable: true value_type: text view: InternalLink view_property: Name - connection: direct container: InternalLink container_property: RefPartnerSideA - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalLink/RefPartnerSideA + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalLink/RefPartnerSideA - nullable: true value_type: ExternalInterface view: InternalLink view_property: RefPartnerSideA - connection: direct container: InternalLink container_property: RefPartnerSideB - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InternalLink/RefPartnerSideB + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InternalLink/RefPartnerSideB - nullable: true value_type: ExternalInterface view: InternalLink view_property: RefPartnerSideB diff --git a/tests/tests_integration/test_session/test_graph_flow/test_dexpi_to_dms.yml b/tests/tests_integration/test_session/test_graph_flow/test_dexpi_to_dms.yml index 47fb64209..1369e345a 100644 --- a/tests/tests_integration/test_session/test_graph_flow/test_dexpi_to_dms.yml +++ b/tests/tests_integration/test_session/test_graph_flow/test_dexpi_to_dms.yml @@ -97,1212 +97,1214 @@ rules: properties: - container: ActuatingElectricalFunction container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ActuatingElectricalFunction/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ActuatingElectricalFunction/ComponentClassURI - nullable: true value_type: text view: ActuatingElectricalFunction view_property: ComponentClassURI - container: ActuatingElectricalFunction container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ActuatingElectricalFunction/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ActuatingElectricalFunction/tag - nullable: true value_type: text view: ActuatingElectricalFunction view_property: tag - container: ActuatingFunction container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ActuatingFunction/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ActuatingFunction/ComponentClassURI - nullable: true value_type: text view: ActuatingFunction view_property: ComponentClassURI - connection: direct container: ActuatingFunction container_property: isFulfilledBy - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ActuatingFunction/isFulfilledBy + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ActuatingFunction/isFulfilledBy - nullable: true value_type: ActuatingSystem view: ActuatingFunction view_property: isFulfilledBy - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ActuatingFunction/isLogicalEndOf + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ActuatingFunction/isLogicalEndOf value_type: SignalConveyingFunction view: ActuatingFunction view_property: isLogicalEndOf - container: ActuatingFunction container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ActuatingFunction/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ActuatingFunction/tag - nullable: true value_type: text view: ActuatingFunction view_property: tag - container: ActuatingSystem container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ActuatingSystem/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ActuatingSystem/ComponentClassURI - nullable: true value_type: text view: ActuatingSystem view_property: ComponentClassURI - connection: direct container: ActuatingSystem container_property: fulfills - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ActuatingSystem/fulfills + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ActuatingSystem/fulfills - nullable: true value_type: ActuatingFunction view: ActuatingSystem view_property: fulfills - container: ActuatingSystem container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ActuatingSystem/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ActuatingSystem/tag - nullable: true value_type: text view: ActuatingSystem view_property: tag - container: BallValve container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/BallValve/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/BallValve/ComponentClassURI - nullable: true value_type: text view: BallValve view_property: ComponentClassURI - container: BallValve container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/BallValve/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/BallValve/ComponentName - nullable: true value_type: text view: BallValve view_property: ComponentName - container: BallValve container_property: itemTagAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/BallValve/itemTagAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/BallValve/itemTagAssignmentClass - nullable: true value_type: text view: BallValve view_property: itemTagAssignmentClass - container: BallValve container_property: nominalDiameterAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/BallValve/nominalDiameterAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/BallValve/nominalDiameterAssignmentClass - nullable: true value_type: text view: BallValve view_property: nominalDiameterAssignmentClass - container: BallValve container_property: objectDisplayNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/BallValve/objectDisplayNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/BallValve/objectDisplayNameAssignmentClass - nullable: true value_type: text view: BallValve view_property: objectDisplayNameAssignmentClass - container: BallValve container_property: sequenceAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/BallValve/sequenceAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/BallValve/sequenceAssignmentClass - nullable: true value_type: text view: BallValve view_property: sequenceAssignmentClass - container: BallValve container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/BallValve/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/BallValve/tag - nullable: true value_type: text view: BallValve view_property: tag - container: BallValve container_property: tagTypeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/BallValve/tagTypeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/BallValve/tagTypeAssignmentClass - nullable: true value_type: text view: BallValve view_property: tagTypeAssignmentClass - container: BallValve container_property: valvePositionAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/BallValve/valvePositionAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/BallValve/valvePositionAssignmentClass - nullable: true value_type: text view: BallValve view_property: valvePositionAssignmentClass - container: BlindFlange container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/BlindFlange/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/BlindFlange/ComponentClassURI - nullable: true value_type: text view: BlindFlange view_property: ComponentClassURI - container: BlindFlange container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/BlindFlange/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/BlindFlange/ComponentName - nullable: true value_type: text view: BlindFlange view_property: ComponentName - container: BlindFlange container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/BlindFlange/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/BlindFlange/tag - nullable: true value_type: text view: BlindFlange view_property: tag - container: ButterflyValve container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ButterflyValve/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ButterflyValve/ComponentClassURI - nullable: true value_type: text view: ButterflyValve view_property: ComponentClassURI - container: ButterflyValve container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ButterflyValve/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ButterflyValve/ComponentName - nullable: true value_type: text view: ButterflyValve view_property: ComponentName - container: ButterflyValve container_property: itemTagAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ButterflyValve/itemTagAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ButterflyValve/itemTagAssignmentClass - nullable: true value_type: text view: ButterflyValve view_property: itemTagAssignmentClass - container: ButterflyValve container_property: nominalDiameterAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ButterflyValve/nominalDiameterAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ButterflyValve/nominalDiameterAssignmentClass - nullable: true value_type: text view: ButterflyValve view_property: nominalDiameterAssignmentClass - container: ButterflyValve container_property: objectDisplayNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ButterflyValve/objectDisplayNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ButterflyValve/objectDisplayNameAssignmentClass - nullable: true value_type: text view: ButterflyValve view_property: objectDisplayNameAssignmentClass - container: ButterflyValve container_property: sequenceAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ButterflyValve/sequenceAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ButterflyValve/sequenceAssignmentClass - nullable: true value_type: text view: ButterflyValve view_property: sequenceAssignmentClass - container: ButterflyValve container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ButterflyValve/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ButterflyValve/tag - nullable: true value_type: text view: ButterflyValve view_property: tag - container: ButterflyValve container_property: tagTypeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ButterflyValve/tagTypeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ButterflyValve/tagTypeAssignmentClass - nullable: true value_type: text view: ButterflyValve view_property: tagTypeAssignmentClass - container: ButterflyValve container_property: valvePositionAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ButterflyValve/valvePositionAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ButterflyValve/valvePositionAssignmentClass - nullable: true value_type: text view: ButterflyValve view_property: valvePositionAssignmentClass - container: CentrifugalPump container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/ComponentClassURI - nullable: true value_type: text view: CentrifugalPump view_property: ComponentClassURI - container: CentrifugalPump container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/ComponentName - nullable: true value_type: text view: CentrifugalPump view_property: ComponentName - connection: direct container: CentrifugalPump container_property: isAPartOf - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/isAPartOf + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/isAPartOf - nullable: true value_type: ProcessPlant view: CentrifugalPump view_property: isAPartOf - connection: direct container: CentrifugalPump container_property: isLocatedIn - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/isLocatedIn + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/isLocatedIn - nullable: true value_type: PlantSystem view: CentrifugalPump view_property: isLocatedIn - container: CentrifugalPump container_property: objectDisplayNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/objectDisplayNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/objectDisplayNameAssignmentClass - nullable: true value_type: text view: CentrifugalPump view_property: objectDisplayNameAssignmentClass - container: CentrifugalPump container_property: sequenceAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/sequenceAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/sequenceAssignmentClass - nullable: true value_type: text view: CentrifugalPump view_property: sequenceAssignmentClass - container: CentrifugalPump container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/tag - nullable: true value_type: text view: CentrifugalPump view_property: tag - container: CentrifugalPump container_property: tagNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/tagNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/tagNameAssignmentClass - nullable: true value_type: text view: CentrifugalPump view_property: tagNameAssignmentClass - container: CentrifugalPump container_property: tagTypeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/tagTypeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CentrifugalPump/tagTypeAssignmentClass - nullable: true value_type: text view: CentrifugalPump view_property: tagTypeAssignmentClass - container: CheckValve container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CheckValve/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CheckValve/ComponentClassURI - nullable: true value_type: text view: CheckValve view_property: ComponentClassURI - container: CheckValve container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CheckValve/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CheckValve/ComponentName - nullable: true value_type: text view: CheckValve view_property: ComponentName - container: CheckValve container_property: itemTagAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CheckValve/itemTagAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CheckValve/itemTagAssignmentClass - nullable: true value_type: text view: CheckValve view_property: itemTagAssignmentClass - container: CheckValve container_property: nominalDiameterAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CheckValve/nominalDiameterAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CheckValve/nominalDiameterAssignmentClass - nullable: true value_type: text view: CheckValve view_property: nominalDiameterAssignmentClass - container: CheckValve container_property: objectDisplayNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CheckValve/objectDisplayNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CheckValve/objectDisplayNameAssignmentClass - nullable: true value_type: text view: CheckValve view_property: objectDisplayNameAssignmentClass - container: CheckValve container_property: sequenceAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CheckValve/sequenceAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CheckValve/sequenceAssignmentClass - nullable: true value_type: text view: CheckValve view_property: sequenceAssignmentClass - container: CheckValve container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CheckValve/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CheckValve/tag - nullable: true value_type: text view: CheckValve view_property: tag - container: CheckValve container_property: tagTypeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CheckValve/tagTypeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CheckValve/tagTypeAssignmentClass - nullable: true value_type: text view: CheckValve view_property: tagTypeAssignmentClass - container: ControlledActuator container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ControlledActuator/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ControlledActuator/ComponentClassURI - nullable: true value_type: text view: ControlledActuator view_property: ComponentClassURI - container: ControlledActuator container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ControlledActuator/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ControlledActuator/ComponentName - nullable: true value_type: text view: ControlledActuator view_property: ComponentName - container: ControlledActuator container_property: failActionSpecialization - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ControlledActuator/failActionSpecialization + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ControlledActuator/failActionSpecialization - nullable: true value_type: text view: ControlledActuator view_property: failActionSpecialization - container: ControlledActuator container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ControlledActuator/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ControlledActuator/tag - nullable: true value_type: text view: ControlledActuator view_property: tag - container: ControlledActuator container_property: typeCodeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ControlledActuator/typeCodeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ControlledActuator/typeCodeAssignmentClass - nullable: true value_type: text view: ControlledActuator view_property: typeCodeAssignmentClass - container: CustomHeatExchanger container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/ComponentClassURI - nullable: true value_type: text view: CustomHeatExchanger view_property: ComponentClassURI - container: CustomHeatExchanger container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/ComponentName - nullable: true value_type: text view: CustomHeatExchanger view_property: ComponentName - connection: direct container: CustomHeatExchanger container_property: isAPartOf - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/isAPartOf + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/isAPartOf - nullable: true value_type: ProcessPlant view: CustomHeatExchanger view_property: isAPartOf - connection: direct container: CustomHeatExchanger container_property: isLocatedIn - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/isLocatedIn + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/isLocatedIn - nullable: true value_type: PlantSystem view: CustomHeatExchanger view_property: isLocatedIn - container: CustomHeatExchanger container_property: objectDisplayNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/objectDisplayNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/objectDisplayNameAssignmentClass - nullable: true value_type: text view: CustomHeatExchanger view_property: objectDisplayNameAssignmentClass - container: CustomHeatExchanger container_property: sequenceAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/sequenceAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/sequenceAssignmentClass - nullable: true value_type: text view: CustomHeatExchanger view_property: sequenceAssignmentClass - container: CustomHeatExchanger container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/tag - nullable: true value_type: text view: CustomHeatExchanger view_property: tag - container: CustomHeatExchanger container_property: tagNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/tagNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/tagNameAssignmentClass - nullable: true value_type: text view: CustomHeatExchanger view_property: tagNameAssignmentClass - container: CustomHeatExchanger container_property: tagTypeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/tagTypeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/tagTypeAssignmentClass - nullable: true value_type: text view: CustomHeatExchanger view_property: tagTypeAssignmentClass - container: CustomHeatExchanger container_property: typeNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/typeNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/typeNameAssignmentClass - nullable: true value_type: text view: CustomHeatExchanger view_property: typeNameAssignmentClass - container: CustomHeatExchanger container_property: typeURIAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/typeURIAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomHeatExchanger/typeURIAssignmentClass - nullable: true value_type: text view: CustomHeatExchanger view_property: typeURIAssignmentClass - container: CustomInlinePrimaryElement container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/ComponentClassURI - nullable: true value_type: text view: CustomInlinePrimaryElement view_property: ComponentClassURI - container: CustomInlinePrimaryElement container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/ComponentName - nullable: true value_type: text view: CustomInlinePrimaryElement view_property: ComponentName - connection: direct container: CustomInlinePrimaryElement container_property: connection - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/connection + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/connection - nullable: true value_type: ProcessInstrumentationFunction view: CustomInlinePrimaryElement view_property: connection - connection: direct container: CustomInlinePrimaryElement container_property: isTheLocationOf - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/isTheLocationOf + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/isTheLocationOf - nullable: true value_type: ProcessSignalGeneratingFunction view: CustomInlinePrimaryElement view_property: isTheLocationOf - container: CustomInlinePrimaryElement container_property: itemTagAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/itemTagAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/itemTagAssignmentClass - nullable: true value_type: text view: CustomInlinePrimaryElement view_property: itemTagAssignmentClass - container: CustomInlinePrimaryElement container_property: sequenceAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/sequenceAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/sequenceAssignmentClass - nullable: true value_type: text view: CustomInlinePrimaryElement view_property: sequenceAssignmentClass - container: CustomInlinePrimaryElement container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/tag - nullable: true value_type: text view: CustomInlinePrimaryElement view_property: tag - container: CustomInlinePrimaryElement container_property: tagTypeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/tagTypeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/tagTypeAssignmentClass - nullable: true value_type: text view: CustomInlinePrimaryElement view_property: tagTypeAssignmentClass - container: CustomInlinePrimaryElement container_property: typeNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/typeNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/typeNameAssignmentClass - nullable: true value_type: text view: CustomInlinePrimaryElement view_property: typeNameAssignmentClass - container: CustomInlinePrimaryElement container_property: typeURIAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/typeURIAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomInlinePrimaryElement/typeURIAssignmentClass - nullable: true value_type: text view: CustomInlinePrimaryElement view_property: typeURIAssignmentClass - container: CustomOperatedValve container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/ComponentClassURI - nullable: true value_type: text view: CustomOperatedValve view_property: ComponentClassURI - container: CustomOperatedValve container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/ComponentName - nullable: true value_type: text view: CustomOperatedValve view_property: ComponentName - connection: direct container: CustomOperatedValve container_property: isReferencedBy - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/isReferencedBy + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/isReferencedBy - nullable: true value_type: OperatedValveReference view: CustomOperatedValve view_property: isReferencedBy - container: CustomOperatedValve container_property: itemTagAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/itemTagAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/itemTagAssignmentClass - nullable: true value_type: text view: CustomOperatedValve view_property: itemTagAssignmentClass - container: CustomOperatedValve container_property: sequenceAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/sequenceAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/sequenceAssignmentClass - nullable: true value_type: text view: CustomOperatedValve view_property: sequenceAssignmentClass - container: CustomOperatedValve container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/tag - nullable: true value_type: text view: CustomOperatedValve view_property: tag - container: CustomOperatedValve container_property: tagTypeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/tagTypeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/tagTypeAssignmentClass - nullable: true value_type: text view: CustomOperatedValve view_property: tagTypeAssignmentClass - container: CustomOperatedValve container_property: typeNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/typeNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/typeNameAssignmentClass - nullable: true value_type: text view: CustomOperatedValve view_property: typeNameAssignmentClass - container: CustomOperatedValve container_property: typeURIAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/typeURIAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/typeURIAssignmentClass - nullable: true value_type: text view: CustomOperatedValve view_property: typeURIAssignmentClass - container: CustomOperatedValve container_property: typicalReferenceAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/typicalReferenceAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomOperatedValve/typicalReferenceAssignmentClass - nullable: true value_type: text view: CustomOperatedValve view_property: typicalReferenceAssignmentClass - container: CustomPipingComponent container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomPipingComponent/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomPipingComponent/ComponentClassURI - nullable: true value_type: text view: CustomPipingComponent view_property: ComponentClassURI - container: CustomPipingComponent container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomPipingComponent/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomPipingComponent/ComponentName - nullable: true value_type: text view: CustomPipingComponent view_property: ComponentName - container: CustomPipingComponent container_property: itemTagAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomPipingComponent/itemTagAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomPipingComponent/itemTagAssignmentClass - nullable: true value_type: text view: CustomPipingComponent view_property: itemTagAssignmentClass - container: CustomPipingComponent container_property: objectDisplayNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomPipingComponent/objectDisplayNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomPipingComponent/objectDisplayNameAssignmentClass - nullable: true value_type: text view: CustomPipingComponent view_property: objectDisplayNameAssignmentClass - container: CustomPipingComponent container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomPipingComponent/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomPipingComponent/tag - nullable: true value_type: text view: CustomPipingComponent view_property: tag - container: CustomPipingComponent container_property: typeNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomPipingComponent/typeNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomPipingComponent/typeNameAssignmentClass - nullable: true value_type: text view: CustomPipingComponent view_property: typeNameAssignmentClass - container: CustomPipingComponent container_property: typeURIAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/CustomPipingComponent/typeURIAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/CustomPipingComponent/typeURIAssignmentClass - nullable: true value_type: text view: CustomPipingComponent view_property: typeURIAssignmentClass - container: ElectricHeater container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ElectricHeater/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ElectricHeater/ComponentClassURI - nullable: true value_type: text view: ElectricHeater view_property: ComponentClassURI - container: ElectricHeater container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ElectricHeater/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ElectricHeater/ComponentName - nullable: true value_type: text view: ElectricHeater view_property: ComponentName - connection: direct container: ElectricHeater container_property: connection - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ElectricHeater/connection + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ElectricHeater/connection - nullable: true value_type: ProcessInstrumentationFunction view: ElectricHeater view_property: connection - connection: direct container: ElectricHeater container_property: isAPartOf - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ElectricHeater/isAPartOf + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ElectricHeater/isAPartOf - nullable: true value_type: ProcessPlant view: ElectricHeater view_property: isAPartOf - connection: direct container: ElectricHeater container_property: isLocatedIn - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ElectricHeater/isLocatedIn + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ElectricHeater/isLocatedIn - nullable: true value_type: PlantSystem view: ElectricHeater view_property: isLocatedIn - container: ElectricHeater container_property: objectDisplayNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ElectricHeater/objectDisplayNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ElectricHeater/objectDisplayNameAssignmentClass - nullable: true value_type: text view: ElectricHeater view_property: objectDisplayNameAssignmentClass - container: ElectricHeater container_property: sequenceAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ElectricHeater/sequenceAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ElectricHeater/sequenceAssignmentClass - nullable: true value_type: text view: ElectricHeater view_property: sequenceAssignmentClass - container: ElectricHeater container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ElectricHeater/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ElectricHeater/tag - nullable: true value_type: text view: ElectricHeater view_property: tag - container: ElectricHeater container_property: tagNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ElectricHeater/tagNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ElectricHeater/tagNameAssignmentClass - nullable: true value_type: text view: ElectricHeater view_property: tagNameAssignmentClass - container: ElectricHeater container_property: tagTypeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ElectricHeater/tagTypeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ElectricHeater/tagTypeAssignmentClass - nullable: true value_type: text view: ElectricHeater view_property: tagTypeAssignmentClass - container: Flange container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Flange/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Flange/ComponentClassURI - nullable: true value_type: text view: Flange view_property: ComponentClassURI - container: Flange container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Flange/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Flange/ComponentName - nullable: true value_type: text view: Flange view_property: ComponentName - connection: direct container: Flange container_property: connection - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Flange/connection + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Flange/connection - nullable: true value_type: ProcessInstrumentationFunction view: Flange view_property: connection - connection: direct container: Flange container_property: isTheLocationOf - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Flange/isTheLocationOf + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Flange/isTheLocationOf - nullable: true value_type: ProcessSignalGeneratingFunction view: Flange view_property: isTheLocationOf - container: Flange container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Flange/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Flange/tag - nullable: true value_type: text view: Flange view_property: tag - container: FlowInPipeOffPageConnector container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/FlowInPipeOffPageConnector/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/FlowInPipeOffPageConnector/ComponentClassURI - nullable: true value_type: text view: FlowInPipeOffPageConnector view_property: ComponentClassURI - container: FlowInPipeOffPageConnector container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/FlowInPipeOffPageConnector/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/FlowInPipeOffPageConnector/ComponentName - nullable: true value_type: text view: FlowInPipeOffPageConnector view_property: ComponentName - connection: direct container: FlowInPipeOffPageConnector container_property: connection - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/FlowInPipeOffPageConnector/connection + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/FlowInPipeOffPageConnector/connection - nullable: true value_type: Nozzle view: FlowInPipeOffPageConnector view_property: connection - container: FlowInPipeOffPageConnector container_property: pipeConnectorNumberAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/FlowInPipeOffPageConnector/pipeConnectorNumberAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/FlowInPipeOffPageConnector/pipeConnectorNumberAssignmentClass - nullable: true value_type: text view: FlowInPipeOffPageConnector view_property: pipeConnectorNumberAssignmentClass - container: FlowInPipeOffPageConnector container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/FlowInPipeOffPageConnector/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/FlowInPipeOffPageConnector/tag - nullable: true value_type: text view: FlowInPipeOffPageConnector view_property: tag - container: FlowOutPipeOffPageConnector container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/FlowOutPipeOffPageConnector/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/FlowOutPipeOffPageConnector/ComponentClassURI - nullable: true value_type: text view: FlowOutPipeOffPageConnector view_property: ComponentClassURI - container: FlowOutPipeOffPageConnector container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/FlowOutPipeOffPageConnector/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/FlowOutPipeOffPageConnector/ComponentName - nullable: true value_type: text view: FlowOutPipeOffPageConnector view_property: ComponentName - container: FlowOutPipeOffPageConnector container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/FlowOutPipeOffPageConnector/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/FlowOutPipeOffPageConnector/tag - nullable: true value_type: text view: FlowOutPipeOffPageConnector view_property: tag - container: FlowOutSignalOffPageConnector container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/FlowOutSignalOffPageConnector/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/FlowOutSignalOffPageConnector/ComponentClassURI - nullable: true value_type: text view: FlowOutSignalOffPageConnector view_property: ComponentClassURI - container: FlowOutSignalOffPageConnector container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/FlowOutSignalOffPageConnector/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/FlowOutSignalOffPageConnector/ComponentName - nullable: true value_type: text view: FlowOutSignalOffPageConnector view_property: ComponentName - connection: direct container: FlowOutSignalOffPageConnector container_property: isLogicalEndOf - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/FlowOutSignalOffPageConnector/isLogicalEndOf + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/FlowOutSignalOffPageConnector/isLogicalEndOf - nullable: true value_type: SignalConveyingFunction view: FlowOutSignalOffPageConnector view_property: isLogicalEndOf - container: FlowOutSignalOffPageConnector container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/FlowOutSignalOffPageConnector/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/FlowOutSignalOffPageConnector/tag - nullable: true value_type: text view: FlowOutSignalOffPageConnector view_property: tag - container: GateValve container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/GateValve/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/GateValve/ComponentClassURI - nullable: true value_type: text view: GateValve view_property: ComponentClassURI - container: GateValve container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/GateValve/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/GateValve/ComponentName - nullable: true value_type: text view: GateValve view_property: ComponentName - connection: direct container: GateValve container_property: connection - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/GateValve/connection + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/GateValve/connection - nullable: true value_type: ProcessInstrumentationFunction view: GateValve view_property: connection - connection: direct container: GateValve container_property: isReferencedBy - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/GateValve/isReferencedBy + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/GateValve/isReferencedBy - nullable: true value_type: OperatedValveReference view: GateValve view_property: isReferencedBy - connection: direct container: GateValve container_property: isTheLocationOf - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/GateValve/isTheLocationOf + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/GateValve/isTheLocationOf - nullable: true value_type: ProcessSignalGeneratingFunction view: GateValve view_property: isTheLocationOf - container: GateValve container_property: itemTagAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/GateValve/itemTagAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/GateValve/itemTagAssignmentClass - nullable: true value_type: text view: GateValve view_property: itemTagAssignmentClass - container: GateValve container_property: nominalDiameterAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/GateValve/nominalDiameterAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/GateValve/nominalDiameterAssignmentClass - nullable: true value_type: text view: GateValve view_property: nominalDiameterAssignmentClass - container: GateValve container_property: objectDisplayNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/GateValve/objectDisplayNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/GateValve/objectDisplayNameAssignmentClass - nullable: true value_type: text view: GateValve view_property: objectDisplayNameAssignmentClass - container: GateValve container_property: sequenceAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/GateValve/sequenceAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/GateValve/sequenceAssignmentClass - nullable: true value_type: text view: GateValve view_property: sequenceAssignmentClass - container: GateValve container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/GateValve/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/GateValve/tag - nullable: true value_type: text view: GateValve view_property: tag - container: GateValve container_property: tagTypeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/GateValve/tagTypeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/GateValve/tagTypeAssignmentClass - nullable: true value_type: text view: GateValve view_property: tagTypeAssignmentClass - container: GateValve container_property: typicalReferenceAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/GateValve/typicalReferenceAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/GateValve/typicalReferenceAssignmentClass - nullable: true value_type: text view: GateValve view_property: typicalReferenceAssignmentClass - container: GateValve container_property: valvePositionAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/GateValve/valvePositionAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/GateValve/valvePositionAssignmentClass - nullable: true value_type: text view: GateValve view_property: valvePositionAssignmentClass - container: InstrumentationLoopFunction container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InstrumentationLoopFunction/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InstrumentationLoopFunction/ComponentClassURI - nullable: true value_type: text view: InstrumentationLoopFunction view_property: ComponentClassURI - container: InstrumentationLoopFunction container_property: instrumentationLoopFunctionNumberAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InstrumentationLoopFunction/instrumentationLoopFunctionNumberAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InstrumentationLoopFunction/instrumentationLoopFunctionNumberAssignmentClass - nullable: true value_type: text view: InstrumentationLoopFunction view_property: instrumentationLoopFunctionNumberAssignmentClass - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InstrumentationLoopFunction/isACollectionIncluding + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InstrumentationLoopFunction/isACollectionIncluding value_type: ProcessInstrumentationFunction view: InstrumentationLoopFunction @@ -1310,1377 +1312,1378 @@ rules: - connection: direct container: InstrumentationLoopFunction container_property: isAPartOf - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InstrumentationLoopFunction/isAPartOf + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InstrumentationLoopFunction/isAPartOf - nullable: true value_type: ProcessPlant view: InstrumentationLoopFunction view_property: isAPartOf - connection: direct container: InstrumentationLoopFunction container_property: isLocatedIn - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InstrumentationLoopFunction/isLocatedIn + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InstrumentationLoopFunction/isLocatedIn - nullable: true value_type: PlantSystem view: InstrumentationLoopFunction view_property: isLocatedIn - container: InstrumentationLoopFunction container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/InstrumentationLoopFunction/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/InstrumentationLoopFunction/tag - nullable: true value_type: text view: InstrumentationLoopFunction view_property: tag - container: MeasuringLineFunction container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/MeasuringLineFunction/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/MeasuringLineFunction/ComponentClassURI - nullable: true value_type: text view: MeasuringLineFunction view_property: ComponentClassURI - connection: direct container: MeasuringLineFunction container_property: hasLogicalEnd - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/MeasuringLineFunction/hasLogicalEnd + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/MeasuringLineFunction/hasLogicalEnd - nullable: true value_type: ProcessInstrumentationFunction view: MeasuringLineFunction view_property: hasLogicalEnd - connection: direct container: MeasuringLineFunction container_property: hasLogicalStart - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/MeasuringLineFunction/hasLogicalStart + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/MeasuringLineFunction/hasLogicalStart - nullable: true value_type: ProcessSignalGeneratingFunction view: MeasuringLineFunction view_property: hasLogicalStart - container: MeasuringLineFunction container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/MeasuringLineFunction/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/MeasuringLineFunction/tag - nullable: true value_type: text view: MeasuringLineFunction view_property: tag - container: MetaData container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/MetaData/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/MetaData/ComponentClassURI - nullable: true value_type: text view: MetaData view_property: ComponentClassURI - container: MetaData container_property: areaIsa95NameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/MetaData/areaIsa95NameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/MetaData/areaIsa95NameAssignmentClass - nullable: true value_type: text view: MetaData view_property: areaIsa95NameAssignmentClass - container: MetaData container_property: creatorNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/MetaData/creatorNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/MetaData/creatorNameAssignmentClass - nullable: true value_type: text view: MetaData view_property: creatorNameAssignmentClass - container: MetaData container_property: drawingNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/MetaData/drawingNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/MetaData/drawingNameAssignmentClass - nullable: true value_type: text view: MetaData view_property: drawingNameAssignmentClass - container: MetaData container_property: drawingNumberAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/MetaData/drawingNumberAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/MetaData/drawingNumberAssignmentClass - nullable: true value_type: text view: MetaData view_property: drawingNumberAssignmentClass - container: MetaData container_property: drawingSubTitleAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/MetaData/drawingSubTitleAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/MetaData/drawingSubTitleAssignmentClass - nullable: true value_type: text view: MetaData view_property: drawingSubTitleAssignmentClass - container: MetaData container_property: plantSystemIdentificationCodeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/MetaData/plantSystemIdentificationCodeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/MetaData/plantSystemIdentificationCodeAssignmentClass - nullable: true value_type: text view: MetaData view_property: plantSystemIdentificationCodeAssignmentClass - container: MetaData container_property: processPlantNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/MetaData/processPlantNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/MetaData/processPlantNameAssignmentClass - nullable: true value_type: text view: MetaData view_property: processPlantNameAssignmentClass - container: MetaData container_property: revisionNumberAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/MetaData/revisionNumberAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/MetaData/revisionNumberAssignmentClass - nullable: true value_type: text view: MetaData view_property: revisionNumberAssignmentClass - container: MetaData container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/MetaData/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/MetaData/tag - nullable: true value_type: text view: MetaData view_property: tag - container: Note container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Note/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Note/ComponentClassURI - nullable: true value_type: text view: Note view_property: ComponentClassURI - container: Note container_property: Label - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Note/Label + max_count: 2 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Note/Label - nullable: true value_type: text view: Note view_property: Label - connection: direct container: Note container_property: isACommentReferringTo - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Note/isACommentReferringTo + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Note/isACommentReferringTo - nullable: true value_type: PressureVessel view: Note view_property: isACommentReferringTo - container: Note container_property: localNoteIdentifierAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Note/localNoteIdentifierAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Note/localNoteIdentifierAssignmentClass - nullable: true value_type: text view: Note view_property: localNoteIdentifierAssignmentClass - container: Note container_property: noteTextAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Note/noteTextAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Note/noteTextAssignmentClass - nullable: true value_type: text view: Note view_property: noteTextAssignmentClass - container: Note container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Note/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Note/tag - nullable: true value_type: text view: Note view_property: tag - container: Nozzle container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Nozzle/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Nozzle/ComponentClassURI - nullable: true value_type: text view: Nozzle view_property: ComponentClassURI - container: Nozzle container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Nozzle/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Nozzle/ComponentName - nullable: true value_type: text view: Nozzle view_property: ComponentName - connection: direct container: Nozzle container_property: connection - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Nozzle/connection + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Nozzle/connection - nullable: true value_type: '#N/A' view: Nozzle view_property: connection - connection: direct container: Nozzle container_property: isTheLocationOf - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Nozzle/isTheLocationOf + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Nozzle/isTheLocationOf - nullable: true value_type: ActuatingElectricalFunction view: Nozzle view_property: isTheLocationOf - container: Nozzle container_property: isVirtualAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Nozzle/isVirtualAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Nozzle/isVirtualAssignmentClass - nullable: true value_type: text view: Nozzle view_property: isVirtualAssignmentClass - container: Nozzle container_property: isVirtualMountAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Nozzle/isVirtualMountAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Nozzle/isVirtualMountAssignmentClass - nullable: true value_type: text view: Nozzle view_property: isVirtualMountAssignmentClass - container: Nozzle container_property: itemTagAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Nozzle/itemTagAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Nozzle/itemTagAssignmentClass - nullable: true value_type: text view: Nozzle view_property: itemTagAssignmentClass - container: Nozzle container_property: objectDisplayNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Nozzle/objectDisplayNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Nozzle/objectDisplayNameAssignmentClass - nullable: true value_type: text view: Nozzle view_property: objectDisplayNameAssignmentClass - container: Nozzle container_property: sequenceAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Nozzle/sequenceAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Nozzle/sequenceAssignmentClass - nullable: true value_type: text view: Nozzle view_property: sequenceAssignmentClass - container: Nozzle container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Nozzle/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Nozzle/tag - nullable: true value_type: text view: Nozzle view_property: tag - container: Nozzle container_property: tagTypeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/Nozzle/tagTypeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/Nozzle/tagTypeAssignmentClass - nullable: true value_type: text view: Nozzle view_property: tagTypeAssignmentClass - container: OperatedValveReference container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/OperatedValveReference/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/OperatedValveReference/ComponentClassURI - nullable: true value_type: text view: OperatedValveReference view_property: ComponentClassURI - connection: direct container: OperatedValveReference container_property: refersTo - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/OperatedValveReference/refersTo + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/OperatedValveReference/refersTo - nullable: true value_type: '#N/A' view: OperatedValveReference view_property: refersTo - container: OperatedValveReference container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/OperatedValveReference/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/OperatedValveReference/tag - nullable: true value_type: text view: OperatedValveReference view_property: tag - container: PipeOffPageConnectorReferenceByNumber container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipeOffPageConnectorReferenceByNumber/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipeOffPageConnectorReferenceByNumber/ComponentClassURI - nullable: true value_type: text view: PipeOffPageConnectorReferenceByNumber view_property: ComponentClassURI - container: PipeOffPageConnectorReferenceByNumber container_property: referencedConnectorNumberAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipeOffPageConnectorReferenceByNumber/referencedConnectorNumberAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipeOffPageConnectorReferenceByNumber/referencedConnectorNumberAssignmentClass - nullable: true value_type: text view: PipeOffPageConnectorReferenceByNumber view_property: referencedConnectorNumberAssignmentClass - container: PipeOffPageConnectorReferenceByNumber container_property: referencedDrawingDescriptorAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipeOffPageConnectorReferenceByNumber/referencedDrawingDescriptorAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipeOffPageConnectorReferenceByNumber/referencedDrawingDescriptorAssignmentClass - nullable: true value_type: text view: PipeOffPageConnectorReferenceByNumber view_property: referencedDrawingDescriptorAssignmentClass - container: PipeOffPageConnectorReferenceByNumber container_property: referencedDrawingNumberAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipeOffPageConnectorReferenceByNumber/referencedDrawingNumberAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipeOffPageConnectorReferenceByNumber/referencedDrawingNumberAssignmentClass - nullable: true value_type: text view: PipeOffPageConnectorReferenceByNumber view_property: referencedDrawingNumberAssignmentClass - container: PipeOffPageConnectorReferenceByNumber container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipeOffPageConnectorReferenceByNumber/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipeOffPageConnectorReferenceByNumber/tag - nullable: true value_type: text view: PipeOffPageConnectorReferenceByNumber view_property: tag - container: PipeReducer container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipeReducer/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipeReducer/ComponentClassURI - nullable: true value_type: text view: PipeReducer view_property: ComponentClassURI - container: PipeReducer container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipeReducer/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipeReducer/ComponentName - nullable: true value_type: text view: PipeReducer view_property: ComponentName - container: PipeReducer container_property: nominalDiameterInAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipeReducer/nominalDiameterInAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipeReducer/nominalDiameterInAssignmentClass - nullable: true value_type: text view: PipeReducer view_property: nominalDiameterInAssignmentClass - container: PipeReducer container_property: nominalDiameterOutAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipeReducer/nominalDiameterOutAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipeReducer/nominalDiameterOutAssignmentClass - nullable: true value_type: text view: PipeReducer view_property: nominalDiameterOutAssignmentClass - container: PipeReducer container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipeReducer/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipeReducer/tag - nullable: true value_type: text view: PipeReducer view_property: tag - container: PipeTee container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipeTee/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipeTee/ComponentClassURI - nullable: true value_type: text view: PipeTee view_property: ComponentClassURI - connection: direct container: PipeTee container_property: connection - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipeTee/connection + max_count: 2 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipeTee/connection - nullable: true value_type: '#N/A' view: PipeTee view_property: connection - container: PipeTee container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipeTee/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipeTee/tag - nullable: true value_type: text view: PipeTee view_property: tag - container: PipingNetworkSegment container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSegment/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSegment/ComponentClassURI - nullable: true value_type: text view: PipingNetworkSegment view_property: ComponentClassURI - container: PipingNetworkSegment container_property: heatTracingTypeSpecialization - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSegment/heatTracingTypeSpecialization + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSegment/heatTracingTypeSpecialization - nullable: true value_type: text view: PipingNetworkSegment view_property: heatTracingTypeSpecialization - container: PipingNetworkSegment container_property: nominalDiameterNumericalValueRepresentationAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSegment/nominalDiameterNumericalValueRepresentationAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSegment/nominalDiameterNumericalValueRepresentationAssignmentClass - nullable: true value_type: text view: PipingNetworkSegment view_property: nominalDiameterNumericalValueRepresentationAssignmentClass - container: PipingNetworkSegment container_property: segmentLineTypeRepresentationAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSegment/segmentLineTypeRepresentationAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSegment/segmentLineTypeRepresentationAssignmentClass - nullable: true value_type: text view: PipingNetworkSegment view_property: segmentLineTypeRepresentationAssignmentClass - container: PipingNetworkSegment container_property: slopeSpecialization - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSegment/slopeSpecialization + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSegment/slopeSpecialization - nullable: true value_type: text view: PipingNetworkSegment view_property: slopeSpecialization - container: PipingNetworkSegment container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSegment/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSegment/tag - nullable: true value_type: text view: PipingNetworkSegment view_property: tag - container: PipingNetworkSystem container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/ComponentClassURI - nullable: true value_type: text view: PipingNetworkSystem view_property: ComponentClassURI - container: PipingNetworkSystem container_property: heatTraceRequiredAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/heatTraceRequiredAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/heatTraceRequiredAssignmentClass - nullable: true value_type: text view: PipingNetworkSystem view_property: heatTraceRequiredAssignmentClass - connection: direct container: PipingNetworkSystem container_property: isAPartOf - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/isAPartOf + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/isAPartOf - nullable: true value_type: ProcessPlant view: PipingNetworkSystem view_property: isAPartOf - connection: direct container: PipingNetworkSystem container_property: isLocatedIn - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/isLocatedIn + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/isLocatedIn - nullable: true value_type: PlantSystem view: PipingNetworkSystem view_property: isLocatedIn - container: PipingNetworkSystem container_property: itemTagAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/itemTagAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/itemTagAssignmentClass - nullable: true value_type: text view: PipingNetworkSystem view_property: itemTagAssignmentClass - container: PipingNetworkSystem container_property: lineDescriptionAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/lineDescriptionAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/lineDescriptionAssignmentClass - nullable: true value_type: text view: PipingNetworkSystem view_property: lineDescriptionAssignmentClass - container: PipingNetworkSystem container_property: lineSuffixAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/lineSuffixAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/lineSuffixAssignmentClass - nullable: true value_type: text view: PipingNetworkSystem view_property: lineSuffixAssignmentClass - container: PipingNetworkSystem container_property: objectDisplayNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/objectDisplayNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/objectDisplayNameAssignmentClass - nullable: true value_type: text view: PipingNetworkSystem view_property: objectDisplayNameAssignmentClass - container: PipingNetworkSystem container_property: pipingClassCodeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/pipingClassCodeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/pipingClassCodeAssignmentClass - nullable: true value_type: text view: PipingNetworkSystem view_property: pipingClassCodeAssignmentClass - container: PipingNetworkSystem container_property: productCodeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/productCodeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/productCodeAssignmentClass - nullable: true value_type: text view: PipingNetworkSystem view_property: productCodeAssignmentClass - container: PipingNetworkSystem container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/tag - nullable: true value_type: text view: PipingNetworkSystem view_property: tag - container: PipingNetworkSystem container_property: tagTypeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/tagTypeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PipingNetworkSystem/tagTypeAssignmentClass - nullable: true value_type: text view: PipingNetworkSystem view_property: tagTypeAssignmentClass - container: PlantSystem container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PlantSystem/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PlantSystem/ComponentClassURI - nullable: true value_type: text view: PlantSystem view_property: ComponentClassURI - connection: direct container: PlantSystem container_property: isTheLocationOf - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PlantSystem/isTheLocationOf + max_count: 42 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PlantSystem/isTheLocationOf - nullable: true value_type: '#N/A' view: PlantSystem view_property: isTheLocationOf - container: PlantSystem container_property: plantSystemIdentificationCodeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PlantSystem/plantSystemIdentificationCodeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PlantSystem/plantSystemIdentificationCodeAssignmentClass - nullable: true value_type: text view: PlantSystem view_property: plantSystemIdentificationCodeAssignmentClass - container: PlantSystem container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PlantSystem/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PlantSystem/tag - nullable: true value_type: text view: PlantSystem view_property: tag - container: PlateHeatExchanger container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/ComponentClassURI - nullable: true value_type: text view: PlateHeatExchanger view_property: ComponentClassURI - container: PlateHeatExchanger container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/ComponentName - nullable: true value_type: text view: PlateHeatExchanger view_property: ComponentName - connection: direct container: PlateHeatExchanger container_property: isAPartOf - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/isAPartOf + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/isAPartOf - nullable: true value_type: ProcessPlant view: PlateHeatExchanger view_property: isAPartOf - connection: direct container: PlateHeatExchanger container_property: isLocatedIn - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/isLocatedIn + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/isLocatedIn - nullable: true value_type: PlantSystem view: PlateHeatExchanger view_property: isLocatedIn - container: PlateHeatExchanger container_property: objectDisplayNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/objectDisplayNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/objectDisplayNameAssignmentClass - nullable: true value_type: text view: PlateHeatExchanger view_property: objectDisplayNameAssignmentClass - container: PlateHeatExchanger container_property: sequenceAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/sequenceAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/sequenceAssignmentClass - nullable: true value_type: text view: PlateHeatExchanger view_property: sequenceAssignmentClass - container: PlateHeatExchanger container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/tag - nullable: true value_type: text view: PlateHeatExchanger view_property: tag - container: PlateHeatExchanger container_property: tagNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/tagNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/tagNameAssignmentClass - nullable: true value_type: text view: PlateHeatExchanger view_property: tagNameAssignmentClass - container: PlateHeatExchanger container_property: tagTypeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/tagTypeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PlateHeatExchanger/tagTypeAssignmentClass - nullable: true value_type: text view: PlateHeatExchanger view_property: tagTypeAssignmentClass - container: PressureVessel container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PressureVessel/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PressureVessel/ComponentClassURI - nullable: true value_type: text view: PressureVessel view_property: ComponentClassURI - container: PressureVessel container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PressureVessel/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PressureVessel/ComponentName - nullable: true value_type: text view: PressureVessel view_property: ComponentName - container: PressureVessel container_property: Label - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PressureVessel/Label + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PressureVessel/Label - nullable: true value_type: text view: PressureVessel view_property: Label - container: PressureVessel container_property: elevationAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PressureVessel/elevationAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PressureVessel/elevationAssignmentClass - nullable: true value_type: text view: PressureVessel view_property: elevationAssignmentClass - connection: direct container: PressureVessel container_property: isAPartOf - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PressureVessel/isAPartOf + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PressureVessel/isAPartOf - nullable: true value_type: ProcessPlant view: PressureVessel view_property: isAPartOf - connection: direct container: PressureVessel container_property: isLocatedIn - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PressureVessel/isLocatedIn + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PressureVessel/isLocatedIn - nullable: true value_type: PlantSystem view: PressureVessel view_property: isLocatedIn - connection: direct container: PressureVessel container_property: isReferencedInComment - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PressureVessel/isReferencedInComment + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PressureVessel/isReferencedInComment - nullable: true value_type: Note view: PressureVessel view_property: isReferencedInComment - container: PressureVessel container_property: objectDisplayNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PressureVessel/objectDisplayNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PressureVessel/objectDisplayNameAssignmentClass - nullable: true value_type: text view: PressureVessel view_property: objectDisplayNameAssignmentClass - container: PressureVessel container_property: sequenceAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PressureVessel/sequenceAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PressureVessel/sequenceAssignmentClass - nullable: true value_type: text view: PressureVessel view_property: sequenceAssignmentClass - container: PressureVessel container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PressureVessel/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PressureVessel/tag - nullable: true value_type: text view: PressureVessel view_property: tag - container: PressureVessel container_property: tagNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PressureVessel/tagNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PressureVessel/tagNameAssignmentClass - nullable: true value_type: text view: PressureVessel view_property: tagNameAssignmentClass - container: PressureVessel container_property: tagTypeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PressureVessel/tagTypeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PressureVessel/tagTypeAssignmentClass - nullable: true value_type: text view: PressureVessel view_property: tagTypeAssignmentClass - container: ProcessInstrumentationFunction container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/ComponentClassURI - nullable: true value_type: text view: ProcessInstrumentationFunction view_property: ComponentClassURI - container: ProcessInstrumentationFunction container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/ComponentName - nullable: true value_type: text view: ProcessInstrumentationFunction view_property: ComponentName - connection: direct container: ProcessInstrumentationFunction container_property: connection - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/connection + max_count: 2 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/connection - nullable: true value_type: '#N/A' view: ProcessInstrumentationFunction view_property: connection - connection: direct container: ProcessInstrumentationFunction container_property: isAPartOf - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/isAPartOf + max_count: 2 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/isAPartOf - nullable: true value_type: '#N/A' view: ProcessInstrumentationFunction view_property: isAPartOf - connection: direct container: ProcessInstrumentationFunction container_property: isLocatedIn - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/isLocatedIn + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/isLocatedIn - nullable: true value_type: PlantSystem view: ProcessInstrumentationFunction view_property: isLocatedIn - connection: direct container: ProcessInstrumentationFunction container_property: isLogicalEndOf - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/isLogicalEndOf + max_count: 2 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/isLogicalEndOf - nullable: true value_type: '#N/A' view: ProcessInstrumentationFunction view_property: isLogicalEndOf - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/isLogicalStartOf + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/isLogicalStartOf value_type: SignalConveyingFunction view: ProcessInstrumentationFunction view_property: isLogicalStartOf - container: ProcessInstrumentationFunction container_property: itemTagAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/itemTagAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/itemTagAssignmentClass - nullable: true value_type: text view: ProcessInstrumentationFunction view_property: itemTagAssignmentClass - container: ProcessInstrumentationFunction container_property: objectDisplayNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/objectDisplayNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/objectDisplayNameAssignmentClass - nullable: true value_type: text view: ProcessInstrumentationFunction view_property: objectDisplayNameAssignmentClass - container: ProcessInstrumentationFunction container_property: processInstrumentationFunctionCategoryAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/processInstrumentationFunctionCategoryAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/processInstrumentationFunctionCategoryAssignmentClass - nullable: true value_type: text view: ProcessInstrumentationFunction view_property: processInstrumentationFunctionCategoryAssignmentClass - container: ProcessInstrumentationFunction container_property: processInstrumentationFunctionLocationAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/processInstrumentationFunctionLocationAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/processInstrumentationFunctionLocationAssignmentClass - nullable: true value_type: text view: ProcessInstrumentationFunction view_property: processInstrumentationFunctionLocationAssignmentClass - container: ProcessInstrumentationFunction container_property: processInstrumentationFunctionNumberAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/processInstrumentationFunctionNumberAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/processInstrumentationFunctionNumberAssignmentClass - nullable: true value_type: text view: ProcessInstrumentationFunction view_property: processInstrumentationFunctionNumberAssignmentClass - container: ProcessInstrumentationFunction container_property: processInstrumentationFunctionTypeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/processInstrumentationFunctionTypeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/processInstrumentationFunctionTypeAssignmentClass - nullable: true value_type: text view: ProcessInstrumentationFunction view_property: processInstrumentationFunctionTypeAssignmentClass - container: ProcessInstrumentationFunction container_property: processInstrumentationFunctionsAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/processInstrumentationFunctionsAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/processInstrumentationFunctionsAssignmentClass - nullable: true value_type: text view: ProcessInstrumentationFunction view_property: processInstrumentationFunctionsAssignmentClass - container: ProcessInstrumentationFunction container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/tag - nullable: true value_type: text view: ProcessInstrumentationFunction view_property: tag - container: ProcessInstrumentationFunction container_property: tagTypeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/tagTypeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/tagTypeAssignmentClass - nullable: true value_type: text view: ProcessInstrumentationFunction view_property: tagTypeAssignmentClass - container: ProcessInstrumentationFunction container_property: typeCodeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/typeCodeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessInstrumentationFunction/typeCodeAssignmentClass - nullable: true value_type: text view: ProcessInstrumentationFunction view_property: typeCodeAssignmentClass - container: ProcessPlant container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessPlant/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessPlant/ComponentClassURI - nullable: true value_type: text view: ProcessPlant view_property: ComponentClassURI - connection: direct container: ProcessPlant container_property: isACollectionIncluding - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessPlant/isACollectionIncluding + max_count: 47 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessPlant/isACollectionIncluding - nullable: true value_type: '#N/A' view: ProcessPlant view_property: isACollectionIncluding - container: ProcessPlant container_property: processPlantIdentificationCodeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessPlant/processPlantIdentificationCodeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessPlant/processPlantIdentificationCodeAssignmentClass - nullable: true value_type: text view: ProcessPlant view_property: processPlantIdentificationCodeAssignmentClass - container: ProcessPlant container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessPlant/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessPlant/tag - nullable: true value_type: text view: ProcessPlant view_property: tag - container: ProcessSignalGeneratingFunction container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessSignalGeneratingFunction/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessSignalGeneratingFunction/ComponentClassURI - nullable: true value_type: text view: ProcessSignalGeneratingFunction view_property: ComponentClassURI - connection: direct container: ProcessSignalGeneratingFunction container_property: isLocatedIn - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessSignalGeneratingFunction/isLocatedIn + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessSignalGeneratingFunction/isLocatedIn - nullable: true value_type: '#N/A' view: ProcessSignalGeneratingFunction view_property: isLocatedIn - connection: direct container: ProcessSignalGeneratingFunction container_property: isLogicalStartOf - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessSignalGeneratingFunction/isLogicalStartOf + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessSignalGeneratingFunction/isLogicalStartOf - nullable: true value_type: MeasuringLineFunction view: ProcessSignalGeneratingFunction view_property: isLogicalStartOf - container: ProcessSignalGeneratingFunction container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/ProcessSignalGeneratingFunction/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/ProcessSignalGeneratingFunction/tag - nullable: true value_type: text view: ProcessSignalGeneratingFunction view_property: tag - container: PropertyBreak container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PropertyBreak/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PropertyBreak/ComponentClassURI - nullable: true value_type: text view: PropertyBreak view_property: ComponentClassURI - container: PropertyBreak container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PropertyBreak/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PropertyBreak/ComponentName - nullable: true value_type: text view: PropertyBreak view_property: ComponentName - container: PropertyBreak container_property: breakValue1AssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PropertyBreak/breakValue1AssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PropertyBreak/breakValue1AssignmentClass - nullable: true value_type: text view: PropertyBreak view_property: breakValue1AssignmentClass - container: PropertyBreak container_property: breakValue2AssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PropertyBreak/breakValue2AssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PropertyBreak/breakValue2AssignmentClass - nullable: true value_type: text view: PropertyBreak view_property: breakValue2AssignmentClass - connection: direct container: PropertyBreak container_property: connection - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PropertyBreak/connection + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PropertyBreak/connection - nullable: true value_type: Nozzle view: PropertyBreak view_property: connection - container: PropertyBreak container_property: lineIdBreakAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PropertyBreak/lineIdBreakAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PropertyBreak/lineIdBreakAssignmentClass - nullable: true value_type: text view: PropertyBreak view_property: lineIdBreakAssignmentClass - container: PropertyBreak container_property: pipingClassBreakSpecialization - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PropertyBreak/pipingClassBreakSpecialization + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PropertyBreak/pipingClassBreakSpecialization - nullable: true value_type: text view: PropertyBreak view_property: pipingClassBreakSpecialization - container: PropertyBreak container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/PropertyBreak/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/PropertyBreak/tag - nullable: true value_type: text view: PropertyBreak view_property: tag - container: RotaryPump container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/RotaryPump/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/RotaryPump/ComponentClassURI - nullable: true value_type: text view: RotaryPump view_property: ComponentClassURI - container: RotaryPump container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/RotaryPump/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/RotaryPump/ComponentName - nullable: true value_type: text view: RotaryPump view_property: ComponentName - connection: direct container: RotaryPump container_property: isAPartOf - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/RotaryPump/isAPartOf + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/RotaryPump/isAPartOf - nullable: true value_type: ProcessPlant view: RotaryPump view_property: isAPartOf - connection: direct container: RotaryPump container_property: isLocatedIn - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/RotaryPump/isLocatedIn + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/RotaryPump/isLocatedIn - nullable: true value_type: PlantSystem view: RotaryPump view_property: isLocatedIn - container: RotaryPump container_property: objectDisplayNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/RotaryPump/objectDisplayNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/RotaryPump/objectDisplayNameAssignmentClass - nullable: true value_type: text view: RotaryPump view_property: objectDisplayNameAssignmentClass - container: RotaryPump container_property: sequenceAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/RotaryPump/sequenceAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/RotaryPump/sequenceAssignmentClass - nullable: true value_type: text view: RotaryPump view_property: sequenceAssignmentClass - container: RotaryPump container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/RotaryPump/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/RotaryPump/tag - nullable: true value_type: text view: RotaryPump view_property: tag - container: RotaryPump container_property: tagNameAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/RotaryPump/tagNameAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/RotaryPump/tagNameAssignmentClass - nullable: true value_type: text view: RotaryPump view_property: tagNameAssignmentClass - container: RotaryPump container_property: tagTypeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/RotaryPump/tagTypeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/RotaryPump/tagTypeAssignmentClass - nullable: true value_type: text view: RotaryPump view_property: tagTypeAssignmentClass - container: SafetyValveOrFitting container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/SafetyValveOrFitting/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/SafetyValveOrFitting/ComponentClassURI - nullable: true value_type: text view: SafetyValveOrFitting view_property: ComponentClassURI - container: SafetyValveOrFitting container_property: ComponentName - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/SafetyValveOrFitting/ComponentName + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/SafetyValveOrFitting/ComponentName - nullable: true value_type: text view: SafetyValveOrFitting view_property: ComponentName - container: SafetyValveOrFitting container_property: itemTagAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/SafetyValveOrFitting/itemTagAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/SafetyValveOrFitting/itemTagAssignmentClass - nullable: true value_type: text view: SafetyValveOrFitting view_property: itemTagAssignmentClass - container: SafetyValveOrFitting container_property: sequenceAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/SafetyValveOrFitting/sequenceAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/SafetyValveOrFitting/sequenceAssignmentClass - nullable: true value_type: text view: SafetyValveOrFitting view_property: sequenceAssignmentClass - container: SafetyValveOrFitting container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/SafetyValveOrFitting/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/SafetyValveOrFitting/tag - nullable: true value_type: text view: SafetyValveOrFitting view_property: tag - container: SafetyValveOrFitting container_property: tagTypeAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/SafetyValveOrFitting/tagTypeAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/SafetyValveOrFitting/tagTypeAssignmentClass - nullable: true value_type: text view: SafetyValveOrFitting view_property: tagTypeAssignmentClass - container: SignalConveyingFunction container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/SignalConveyingFunction/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/SignalConveyingFunction/ComponentClassURI - nullable: true value_type: text view: SignalConveyingFunction view_property: ComponentClassURI - connection: direct container: SignalConveyingFunction container_property: hasLogicalEnd - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/SignalConveyingFunction/hasLogicalEnd + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/SignalConveyingFunction/hasLogicalEnd - nullable: true value_type: '#N/A' view: SignalConveyingFunction view_property: hasLogicalEnd - connection: direct container: SignalConveyingFunction container_property: hasLogicalStart - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/SignalConveyingFunction/hasLogicalStart + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/SignalConveyingFunction/hasLogicalStart - nullable: true value_type: ProcessInstrumentationFunction view: SignalConveyingFunction view_property: hasLogicalStart - container: SignalConveyingFunction container_property: portStatusSpecialization - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/SignalConveyingFunction/portStatusSpecialization + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/SignalConveyingFunction/portStatusSpecialization - nullable: true value_type: text view: SignalConveyingFunction view_property: portStatusSpecialization - container: SignalConveyingFunction container_property: signalConveyingFunctionTypeRepresentationAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/SignalConveyingFunction/signalConveyingFunctionTypeRepresentationAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/SignalConveyingFunction/signalConveyingFunctionTypeRepresentationAssignmentClass - nullable: true value_type: text view: SignalConveyingFunction view_property: signalConveyingFunctionTypeRepresentationAssignmentClass - container: SignalConveyingFunction container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/SignalConveyingFunction/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/SignalConveyingFunction/tag - nullable: true value_type: text view: SignalConveyingFunction view_property: tag - container: SignalOffPageConnectorReferenceByNumber container_property: ComponentClassURI - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/SignalOffPageConnectorReferenceByNumber/ComponentClassURI + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/SignalOffPageConnectorReferenceByNumber/ComponentClassURI - nullable: true value_type: text view: SignalOffPageConnectorReferenceByNumber view_property: ComponentClassURI - container: SignalOffPageConnectorReferenceByNumber container_property: referencedDrawingNumberAssignmentClass - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/SignalOffPageConnectorReferenceByNumber/referencedDrawingNumberAssignmentClass + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/SignalOffPageConnectorReferenceByNumber/referencedDrawingNumberAssignmentClass - nullable: true value_type: text view: SignalOffPageConnectorReferenceByNumber view_property: referencedDrawingNumberAssignmentClass - container: SignalOffPageConnectorReferenceByNumber container_property: tag - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/NeatInferredDataModel/v1/SignalOffPageConnectorReferenceByNumber/tag + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/NeatInferredDataModel/v1/SignalOffPageConnectorReferenceByNumber/tag - nullable: true value_type: text view: SignalOffPageConnectorReferenceByNumber view_property: tag diff --git a/tests/tests_integration/test_session/test_graph_flow/test_snapshot_workflow_to_python.yml b/tests/tests_integration/test_session/test_graph_flow/test_snapshot_workflow_to_python.yml index 859bd8fcd..cdf4762e0 100644 --- a/tests/tests_integration/test_session/test_graph_flow/test_snapshot_workflow_to_python.yml +++ b/tests/tests_integration/test_session/test_graph_flow/test_snapshot_workflow_to_python.yml @@ -3,12 +3,10 @@ data_product: - collection: timeseriesType description: Time series with double floating point data points. name: numeric - neatId: http://purl.org/cognite/neat/neatId_a7441186_75bb_4d36_a6bc_59b4da0e0262 value: numeric - collection: timeseriesType description: Time series with string data points. name: string - neatId: http://purl.org/cognite/neat/neatId_df06ec7f_5412_4e48_872f_84e5234d5857 value: string metadata: created: '2025-01-08T06:40:43.340000' @@ -24,9 +22,10 @@ data_product: properties: - connection: reverse(property=assets) description: An automatically updated list of activities related to the asset. - is_list: true + max_count: .inf + min_count: 0 name: Activities - neatId: http://purl.org/cognite/neat/neatId_4487a4a9_6e1e_4fde_871c_de37ea8134eb + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/activities value_type: ClassicEvent view: ClassicAsset view_property: activities @@ -34,81 +33,84 @@ data_product: container_property: aliases description: Alternative names for the node immutable: false - is_list: true + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/aliases - nullable: true value_type: text view: ClassicAsset view_property: aliases - connection: reverse(property=parent) description: An automatically updated list of assets with this asset as their parent. - is_list: true + max_count: .inf + min_count: 0 name: Children - neatId: http://purl.org/cognite/neat/neatId_04c63f13_3088_4d24_9494_7f6948feb498 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/children value_type: ClassicAsset view: ClassicAsset view_property: children - container: sp_windfarm:ClassicAsset container_property: classicExternalId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/externalId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/classicExternalId - nullable: true value_type: text view: ClassicAsset view_property: classicExternalId - connection: direct container: sp_windfarm:ClassicAsset container_property: dataSetId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/dataSetId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/dataSetId - nullable: true value_type: ClassicDataSet view: ClassicAsset view_property: dataSetId - container: cdf_cdm:CogniteDescribable container_property: description immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/description + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/description - nullable: true value_type: text view: ClassicAsset view_property: description - connection: reverse(property=asset) description: An automatically updated list of equipment related to the asset. - is_list: true + max_count: .inf + min_count: 0 name: Equipment - neatId: http://purl.org/cognite/neat/neatId_46d2b553_9e62_4cb8_bdd7_7bcea1f5d989 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/equipment value_type: ClassicEquipment view: ClassicAsset view_property: equipment - connection: reverse(property=assets) description: An automatically updated list of files related to the asset. - is_list: true + max_count: .inf + min_count: 0 name: Files - neatId: http://purl.org/cognite/neat/neatId_e515ea88_f19d_4069_b88d_b3244fd87cf4 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/files value_type: ClassicFile view: ClassicAsset view_property: files - container: sp_windfarm:ClassicAsset container_property: geoLocation - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/geoLocation + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/geoLocation - nullable: true value_type: json view: ClassicAsset view_property: geoLocation - container: sp_windfarm:ClassicAsset container_property: metadata - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/metadata + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/metadata - nullable: true value_type: json view: ClassicAsset view_property: metadata @@ -116,10 +118,10 @@ data_product: container_property: name immutable: false index: name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/name + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/name - nullable: true value_type: text view: ClassicAsset view_property: name @@ -127,10 +129,10 @@ data_product: container: cdf_cdm:CogniteAsset container_property: assetHierarchy_parent immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/parentId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/parentId - nullable: true value_type: ClassicAsset view: ClassicAsset view_property: parent @@ -141,10 +143,10 @@ data_product: starting with the root asset. Enables subtree filtering to find all assets under a parent. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Path - neatId: http://purl.org/cognite/neat/neatId_11622da5_9e91_4699_b69c_174b054a1a93 - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/path value_type: ClassicAsset view: ClassicAsset view_property: path @@ -152,10 +154,10 @@ data_product: container_property: assetHierarchy_path_last_updated_time description: The last time the path was updated for this asset. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Path last updated time neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteAsset/pathLastUpdatedTime - nullable: true value_type: timestamp view: ClassicAsset view_property: pathLastUpdatedTime @@ -165,10 +167,10 @@ data_product: description: An automatically updated reference to the top-level asset of the hierarchy. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Root - neatId: http://purl.org/cognite/neat/neatId_11138a07_144c_4998_a51d_4fbced64ce3d - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/root value_type: ClassicAsset view: ClassicAsset view_property: root @@ -177,10 +179,10 @@ data_product: container_property: source immutable: false index: source - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/source + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/source - nullable: true value_type: ClassicSourceSystem view: ClassicAsset view_property: source @@ -189,9 +191,9 @@ data_product: description: Context of the source id. For systems where the sourceId is globally unique, the sourceContext is expected to not be set. immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceContext - nullable: true value_type: text view: ClassicAsset view_property: sourceContext @@ -200,9 +202,9 @@ data_product: description: When the instance was created in source system (if available) immutable: false index: sourceCreatedTime - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceCreatedTime - nullable: true value_type: timestamp view: ClassicAsset view_property: sourceCreatedTime @@ -211,9 +213,9 @@ data_product: description: User identifier from the source system on who created the source data. This identifier is not guaranteed to match the user identifiers in CDF immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceCreatedUser - nullable: true value_type: text view: ClassicAsset view_property: sourceCreatedUser @@ -222,9 +224,9 @@ data_product: description: Identifier from the source system immutable: false index: sourceId - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceId - nullable: true value_type: text view: ClassicAsset view_property: sourceId @@ -233,9 +235,9 @@ data_product: description: When the instance was last updated in the source system (if available) immutable: false index: sourceUpdatedTime - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceUpdatedTime - nullable: true value_type: timestamp view: ClassicAsset view_property: sourceUpdatedTime @@ -244,80 +246,82 @@ data_product: description: User identifier from the source system on who last updated the source data. This identifier is not guaranteed to match the user identifiers in CDF immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceUpdatedUser - nullable: true value_type: text view: ClassicAsset view_property: sourceUpdatedUser - container: cdf_cdm:CogniteDescribable container_property: tags immutable: false - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/labels + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/labels - nullable: true value_type: text view: ClassicAsset view_property: tags - connection: reverse(property=assets) description: An automatically updated list of time series related to the asset. - is_list: true + max_count: .inf + min_count: 0 name: Time series - neatId: http://purl.org/cognite/neat/neatId_53bf067f_d9de_4ef0_945c_8024e9ed8981 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/timeSeries value_type: ClassicTimeSeries view: ClassicAsset view_property: timeSeries - container: sp_windfarm:ClassicDataSet container_property: classicExternalId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicDataSet/externalId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicDataSet/classicExternalId - nullable: true value_type: text view: ClassicDataSet view_property: classicExternalId - container: sp_windfarm:ClassicDataSet container_property: description - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicDataSet/description + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicDataSet/description - nullable: true value_type: text view: ClassicDataSet view_property: description - container: sp_windfarm:ClassicDataSet container_property: metadata - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicDataSet/metadata + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicDataSet/metadata - nullable: true value_type: json view: ClassicDataSet view_property: metadata - container: sp_windfarm:ClassicDataSet container_property: name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicDataSet/name + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicDataSet/name - nullable: true value_type: text view: ClassicDataSet view_property: name - container: sp_windfarm:ClassicDataSet container_property: writeProtected - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicDataSet/writeProtected + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicDataSet/writeProtected - nullable: true value_type: boolean view: ClassicDataSet view_property: writeProtected - connection: reverse(property=equipment) description: An automatically updated list of activities related to the equipment. - is_list: true + max_count: .inf + min_count: 0 name: Activities - neatId: http://purl.org/cognite/neat/neatId_c25997c1_a8c4_4c29_9517_3188cfe433b4 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/activities value_type: ClassicEvent view: ClassicEquipment view_property: activities @@ -325,9 +329,9 @@ data_product: container_property: aliases description: Alternative names for the node immutable: false - is_list: true + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/aliases - nullable: true value_type: text view: ClassicEquipment view_property: aliases @@ -336,19 +340,19 @@ data_product: container_property: asset description: The asset the equipment is related to. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Asset - neatId: http://purl.org/cognite/neat/neatId_5e08021f_2315_4b48_a769_b824abc215a0 - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/asset value_type: ClassicAsset view: ClassicEquipment view_property: asset - container: sp_windfarm:ClassicEquipment container_property: classicEquipmentGUID immutable: false - is_list: false - neatId: http://purl.org/cognite/neat/neatId_d22d3e64_b57e_4fef_921f_6aa05cbc563b - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/classicEquipmentGUID value_type: text view: ClassicEquipment view_property: classicEquipmentGUID @@ -356,9 +360,9 @@ data_product: container_property: description description: Description of the instance immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/description - nullable: true value_type: text view: ClassicEquipment view_property: description @@ -367,10 +371,10 @@ data_product: container_property: files description: A list of files the equipment relates to. immutable: false - is_list: true + max_count: 1000 + min_count: 0 name: Files - neatId: http://purl.org/cognite/neat/neatId_3bd8dc76_ccec_4790_afc1_ad4c5dbdcadb - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/files value_type: ClassicFile view: ClassicEquipment view_property: files @@ -379,10 +383,10 @@ data_product: description: The manufacturer of the equipment. immutable: false index: manufacturer - is_list: false + max_count: 1 + min_count: 0 name: Manufacturer neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteEquipment/manufacturer - nullable: true value_type: text view: ClassicEquipment view_property: manufacturer @@ -391,9 +395,9 @@ data_product: description: Name of the instance immutable: false index: name - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/name - nullable: true value_type: text view: ClassicEquipment view_property: name @@ -402,10 +406,10 @@ data_product: description: The serial number of the equipment. immutable: false index: serialNumber - is_list: false + max_count: 1 + min_count: 0 name: Serial number neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteEquipment/serialNumber - nullable: true value_type: text view: ClassicEquipment view_property: serialNumber @@ -415,9 +419,9 @@ data_product: description: Direct relation to a source system immutable: false index: source - is_list: false - neatId: http://purl.org/cognite/neat/neatId_4f64197b_ac89_4963_bdd5_527e7b1f6d4b - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/source value_type: ClassicSourceSystem view: ClassicEquipment view_property: source @@ -426,9 +430,9 @@ data_product: description: Context of the source id. For systems where the sourceId is globally unique, the sourceContext is expected to not be set. immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceContext - nullable: true value_type: text view: ClassicEquipment view_property: sourceContext @@ -437,9 +441,9 @@ data_product: description: When the instance was created in source system (if available) immutable: false index: sourceCreatedTime - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceCreatedTime - nullable: true value_type: timestamp view: ClassicEquipment view_property: sourceCreatedTime @@ -448,9 +452,9 @@ data_product: description: User identifier from the source system on who created the source data. This identifier is not guaranteed to match the user identifiers in CDF immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceCreatedUser - nullable: true value_type: text view: ClassicEquipment view_property: sourceCreatedUser @@ -459,9 +463,9 @@ data_product: description: Identifier from the source system immutable: false index: sourceId - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceId - nullable: true value_type: text view: ClassicEquipment view_property: sourceId @@ -470,9 +474,9 @@ data_product: description: When the instance was last updated in the source system (if available) immutable: false index: sourceUpdatedTime - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceUpdatedTime - nullable: true value_type: timestamp view: ClassicEquipment view_property: sourceUpdatedTime @@ -481,9 +485,9 @@ data_product: description: User identifier from the source system on who last updated the source data. This identifier is not guaranteed to match the user identifiers in CDF immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceUpdatedUser - nullable: true value_type: text view: ClassicEquipment view_property: sourceUpdatedUser @@ -491,17 +495,18 @@ data_product: container_property: tags description: Text based labels for generic use, limited to 1000 immutable: false - is_list: true + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/tags - nullable: true value_type: text view: ClassicEquipment view_property: tags - connection: reverse(property=equipment) description: An automatically updated list of time series related to the equipment. - is_list: true + max_count: .inf + min_count: 0 name: Time series - neatId: http://purl.org/cognite/neat/neatId_e8c0570d_3a83_4b4d_8a7c_93e73a066e0c + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/timeSeries value_type: ClassicTimeSeries view: ClassicEquipment view_property: timeSeries @@ -509,9 +514,9 @@ data_product: container_property: aliases description: Alternative names for the node immutable: false - is_list: true + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/aliases - nullable: true value_type: text view: ClassicEvent view_property: aliases @@ -519,39 +524,39 @@ data_product: container: cdf_cdm:CogniteActivity container_property: assets immutable: false - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/assetIds + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/assetIds - nullable: true value_type: ClassicAsset view: ClassicEvent view_property: assets - container: sp_windfarm:ClassicEvent container_property: classicExternalId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/externalId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/classicExternalId - nullable: true value_type: text view: ClassicEvent view_property: classicExternalId - connection: direct container: sp_windfarm:ClassicEvent container_property: dataSetId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/dataSetId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/dataSetId - nullable: true value_type: ClassicDataSet view: ClassicEvent view_property: dataSetId - container: cdf_cdm:CogniteDescribable container_property: description immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/description + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/description - nullable: true value_type: text view: ClassicEvent view_property: description @@ -559,10 +564,10 @@ data_product: container_property: endTime immutable: false index: endTime - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/endTime + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/endTime - nullable: true value_type: timestamp view: ClassicEvent view_property: endTime @@ -571,19 +576,19 @@ data_product: container_property: equipment description: A list of equipment the activity is related to. immutable: false - is_list: true + max_count: 1000 + min_count: 0 name: Equipment - neatId: http://purl.org/cognite/neat/neatId_02efaf0e_d311_4b1f_9cbd_fa43c6141606 - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEvent/equipment value_type: ClassicEquipment view: ClassicEvent view_property: equipment - container: sp_windfarm:ClassicEvent container_property: metadata - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/metadata + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/metadata - nullable: true value_type: json view: ClassicEvent view_property: metadata @@ -592,9 +597,9 @@ data_product: description: Name of the instance immutable: false index: name - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/name - nullable: true value_type: text view: ClassicEvent view_property: name @@ -603,9 +608,9 @@ data_product: description: The planned end time of an activity (or similar that extends this) immutable: false index: scheduledEndTime - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSchedulable/scheduledEndTime - nullable: true value_type: timestamp view: ClassicEvent view_property: scheduledEndTime @@ -614,9 +619,9 @@ data_product: description: The planned start time of an activity (or similar that extends this) immutable: false index: scheduledStartTime - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSchedulable/scheduledStartTime - nullable: true value_type: timestamp view: ClassicEvent view_property: scheduledStartTime @@ -625,10 +630,10 @@ data_product: container_property: source immutable: false index: source - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/source + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/source - nullable: true value_type: ClassicSourceSystem view: ClassicEvent view_property: source @@ -637,9 +642,9 @@ data_product: description: Context of the source id. For systems where the sourceId is globally unique, the sourceContext is expected to not be set. immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceContext - nullable: true value_type: text view: ClassicEvent view_property: sourceContext @@ -648,9 +653,9 @@ data_product: description: When the instance was created in source system (if available) immutable: false index: sourceCreatedTime - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceCreatedTime - nullable: true value_type: timestamp view: ClassicEvent view_property: sourceCreatedTime @@ -659,9 +664,9 @@ data_product: description: User identifier from the source system on who created the source data. This identifier is not guaranteed to match the user identifiers in CDF immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceCreatedUser - nullable: true value_type: text view: ClassicEvent view_property: sourceCreatedUser @@ -670,9 +675,9 @@ data_product: description: Identifier from the source system immutable: false index: sourceId - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceId - nullable: true value_type: text view: ClassicEvent view_property: sourceId @@ -681,9 +686,9 @@ data_product: description: When the instance was last updated in the source system (if available) immutable: false index: sourceUpdatedTime - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceUpdatedTime - nullable: true value_type: timestamp view: ClassicEvent view_property: sourceUpdatedTime @@ -692,9 +697,9 @@ data_product: description: User identifier from the source system on who last updated the source data. This identifier is not guaranteed to match the user identifiers in CDF immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceUpdatedUser - nullable: true value_type: text view: ClassicEvent view_property: sourceUpdatedUser @@ -702,19 +707,19 @@ data_product: container_property: startTime immutable: false index: startTime - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/startTime + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/startTime - nullable: true value_type: timestamp view: ClassicEvent view_property: startTime - container: sp_windfarm:ClassicEvent container_property: subtype - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/subtype + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/subtype - nullable: true value_type: text view: ClassicEvent view_property: subtype @@ -722,9 +727,9 @@ data_product: container_property: tags description: Text based labels for generic use, limited to 1000 immutable: false - is_list: true + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/tags - nullable: true value_type: text view: ClassicEvent view_property: tags @@ -733,19 +738,19 @@ data_product: container_property: timeSeries description: A list of time series the activity is related to. immutable: false - is_list: true + max_count: 1000 + min_count: 0 name: Time series - neatId: http://purl.org/cognite/neat/neatId_a0c5e084_cdf1_49cf_9d39_0997c06d2f3b - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEvent/timeSeries value_type: ClassicTimeSeries view: ClassicEvent view_property: timeSeries - container: sp_windfarm:ClassicEvent container_property: type - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/type + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/type - nullable: true value_type: text view: ClassicEvent view_property: type @@ -753,9 +758,9 @@ data_product: container_property: aliases description: Alternative names for the node immutable: false - is_list: true + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/aliases - nullable: true value_type: text view: ClassicFile view_property: aliases @@ -763,29 +768,29 @@ data_product: container: cdf_cdm:CogniteFile container_property: assets immutable: false - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/assetIds + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/assetIds - nullable: true value_type: ClassicAsset view: ClassicFile view_property: assets - container: sp_windfarm:ClassicFile container_property: classicExternalId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/externalId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/classicExternalId - nullable: true value_type: text view: ClassicFile view_property: classicExternalId - connection: direct container: sp_windfarm:ClassicFile container_property: dataSetId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/dataSetId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/dataSetId - nullable: true value_type: ClassicDataSet view: ClassicFile view_property: dataSetId @@ -793,36 +798,37 @@ data_product: container_property: description description: Description of the instance immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/description - nullable: true value_type: text view: ClassicFile view_property: description - container: cdf_cdm:CogniteFile container_property: directory immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/directory + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/directory - nullable: true value_type: text view: ClassicFile view_property: directory - connection: reverse(property=files) description: An automatically updated list of equipment this file is related to. - is_list: true + max_count: .inf + min_count: 0 name: Equipment - neatId: http://purl.org/cognite/neat/neatId_527cc7c9_d504_41a7_b25d_f64ba2906a99 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicFile/equipment value_type: ClassicEquipment view: ClassicFile view_property: equipment - container: sp_windfarm:ClassicFile container_property: geoLocation - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/geoLocation + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/geoLocation - nullable: true value_type: json view: ClassicFile view_property: geoLocation @@ -832,29 +838,29 @@ data_product: description: Specifies if the file content has been uploaded to Cognite Data Fusion or not. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Is uploaded neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteFile/isUploaded - nullable: true value_type: boolean view: ClassicFile view_property: isUploaded - container: sp_windfarm:ClassicFile container_property: metadata - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/metadata + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/metadata - nullable: true value_type: json view: ClassicFile view_property: metadata - container: cdf_cdm:CogniteFile container_property: mimeType immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/mimeType + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/mimeType - nullable: true value_type: text view: ClassicFile view_property: mimeType @@ -862,19 +868,19 @@ data_product: container_property: name immutable: false index: name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/name + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/name - nullable: true value_type: text view: ClassicFile view_property: name - container: sp_windfarm:ClassicFile container_property: securityCategories - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/securityCategories + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/securityCategories - nullable: true value_type: int64 view: ClassicFile view_property: securityCategories @@ -883,10 +889,10 @@ data_product: container_property: source immutable: false index: source - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/source + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/source - nullable: true value_type: ClassicSourceSystem view: ClassicFile view_property: source @@ -895,9 +901,9 @@ data_product: description: Context of the source id. For systems where the sourceId is globally unique, the sourceContext is expected to not be set. immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceContext - nullable: true value_type: text view: ClassicFile view_property: sourceContext @@ -905,10 +911,10 @@ data_product: container_property: sourceCreatedTime immutable: false index: sourceCreatedTime - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/sourceCreatedTime + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/sourceCreatedTime - nullable: true value_type: timestamp view: ClassicFile view_property: sourceCreatedTime @@ -917,9 +923,9 @@ data_product: description: User identifier from the source system on who created the source data. This identifier is not guaranteed to match the user identifiers in CDF immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceCreatedUser - nullable: true value_type: text view: ClassicFile view_property: sourceCreatedUser @@ -928,9 +934,9 @@ data_product: description: Identifier from the source system immutable: false index: sourceId - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceId - nullable: true value_type: text view: ClassicFile view_property: sourceId @@ -938,10 +944,10 @@ data_product: container_property: sourceUpdatedTime immutable: false index: sourceUpdatedTime - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/sourceModifiedTime + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/sourceModifiedTime - nullable: true value_type: timestamp view: ClassicFile view_property: sourceUpdatedTime @@ -950,19 +956,19 @@ data_product: description: User identifier from the source system on who last updated the source data. This identifier is not guaranteed to match the user identifiers in CDF immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceUpdatedUser - nullable: true value_type: text view: ClassicFile view_property: sourceUpdatedUser - container: cdf_cdm:CogniteDescribable container_property: tags immutable: false - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/labels + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/labels - nullable: true value_type: text view: ClassicFile view_property: tags @@ -970,192 +976,193 @@ data_product: container_property: uploadedTime description: The time the file upload completed. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Uploaded time neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteFile/uploadedTime - nullable: true value_type: timestamp view: ClassicFile view_property: uploadedTime - container: sp_windfarm:ClassicLabel container_property: classicExternalId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicLabel/externalId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicLabel/classicExternalId - nullable: true value_type: text view: ClassicLabel view_property: classicExternalId - connection: direct container: sp_windfarm:ClassicLabel container_property: dataSetId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicLabel/dataSetId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicLabel/dataSetId - nullable: true value_type: ClassicDataSet view: ClassicLabel view_property: dataSetId - container: sp_windfarm:ClassicLabel container_property: description - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicLabel/description + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicLabel/description - nullable: true value_type: text view: ClassicLabel view_property: description - container: sp_windfarm:ClassicLabel container_property: name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicLabel/name + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicLabel/name - nullable: true value_type: text view: ClassicLabel view_property: name - container: sp_windfarm:ClassicRelationship container_property: classicExternalId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicRelationship/externalId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicRelationship/classicExternalId - nullable: true value_type: text view: ClassicRelationship view_property: classicExternalId - container: sp_windfarm:ClassicRelationship container_property: confidence - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicRelationship/confidence + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicRelationship/confidence - nullable: true value_type: float64 view: ClassicRelationship view_property: confidence - connection: direct container: sp_windfarm:ClassicRelationship container_property: dataSetId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicRelationship/dataSetId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicRelationship/dataSetId - nullable: true value_type: ClassicDataSet view: ClassicRelationship view_property: dataSetId - container: sp_windfarm:ClassicRelationship container_property: endTime - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicRelationship/endTime + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicRelationship/endTime - nullable: true value_type: timestamp view: ClassicRelationship view_property: endTime - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicRelationship/labels + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicRelationship/labels value_type: ClassicLabel view: ClassicRelationship view_property: labels - container: sp_windfarm:ClassicRelationship container_property: sourceType - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicRelationship/sourceType + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicRelationship/sourceType - nullable: true value_type: text view: ClassicRelationship view_property: sourceType - container: sp_windfarm:ClassicRelationship container_property: startTime - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicRelationship/startTime + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicRelationship/startTime - nullable: true value_type: timestamp view: ClassicRelationship view_property: startTime - container: sp_windfarm:ClassicRelationship container_property: targetType - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicRelationship/targetType + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicRelationship/targetType - nullable: true value_type: text view: ClassicRelationship view_property: targetType - connection: direct container: sp_windfarm:ClassicSequence container_property: assetId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSequence/assetId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSequence/assetId - nullable: true value_type: ClassicAsset view: ClassicSequence view_property: assetId - container: sp_windfarm:ClassicSequence container_property: classicExternalId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSequence/externalId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSequence/classicExternalId - nullable: true value_type: text view: ClassicSequence view_property: classicExternalId - container: sp_windfarm:ClassicSequence container_property: columns - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSequence/columns + max_count: 400 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSequence/columns - nullable: true value_type: json view: ClassicSequence view_property: columns - connection: direct container: sp_windfarm:ClassicSequence container_property: dataSetId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSequence/dataSetId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSequence/dataSetId - nullable: true value_type: ClassicDataSet view: ClassicSequence view_property: dataSetId - container: sp_windfarm:ClassicSequence container_property: description - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSequence/description + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSequence/description - nullable: true value_type: text view: ClassicSequence view_property: description - container: sp_windfarm:ClassicSequence container_property: metadata - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSequence/metadata + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSequence/metadata - nullable: true value_type: json view: ClassicSequence view_property: metadata - container: sp_windfarm:ClassicSequence container_property: name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSequence/name + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSequence/name - nullable: true value_type: text view: ClassicSequence view_property: name - container: sp_windfarm:ClassicSequence container_property: rows - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSequence/rows + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSequence/rows - nullable: true value_type: json view: ClassicSequence view_property: rows @@ -1163,18 +1170,18 @@ data_product: container_property: aliases description: Alternative names for the node immutable: false - is_list: true + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/aliases - nullable: true value_type: text view: ClassicSourceSystem view_property: aliases - container: sp_windfarm:ClassicSourceSystem container_property: classicSourceSystemGUID immutable: false - is_list: false - neatId: http://purl.org/cognite/neat/neatId_baba86c4_fed1_4faf_8e48_b5f1e8179a50 - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicSourceSystem/classicSourceSystemGUID value_type: text view: ClassicSourceSystem view_property: classicSourceSystemGUID @@ -1182,9 +1189,9 @@ data_product: container_property: description description: Description of the instance immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/description - nullable: true value_type: text view: ClassicSourceSystem view_property: description @@ -1192,19 +1199,19 @@ data_product: container_property: manufacturer description: Manufacturer of the source system immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceSystem/manufacturer - nullable: true value_type: text view: ClassicSourceSystem view_property: manufacturer - container: cdf_cdm:CogniteDescribable container_property: name immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSourceSystem/name + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSourceSystem/name - nullable: true value_type: text view: ClassicSourceSystem view_property: name @@ -1212,9 +1219,9 @@ data_product: container_property: tags description: Text based labels for generic use, limited to 1000 immutable: false - is_list: true + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/tags - nullable: true value_type: text view: ClassicSourceSystem view_property: tags @@ -1222,18 +1229,19 @@ data_product: container_property: version description: Version identifier for the source system immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceSystem/version - nullable: true value_type: text view: ClassicSourceSystem view_property: version - connection: reverse(property=timeSeries) description: An automatically updated list of activities the time series is related to. - is_list: true + max_count: .inf + min_count: 0 name: Activities - neatId: http://purl.org/cognite/neat/neatId_eb1527e5_e163_4d50_bcee_dd2546b7691f + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/activities value_type: ClassicEvent view: ClassicTimeSeries view_property: activities @@ -1241,9 +1249,9 @@ data_product: container_property: aliases description: Alternative names for the node immutable: false - is_list: true + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/aliases - nullable: true value_type: text view: ClassicTimeSeries view_property: aliases @@ -1251,39 +1259,39 @@ data_product: container: cdf_cdm:CogniteTimeSeries container_property: assets immutable: false - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/assetId + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/assetId - nullable: true value_type: ClassicAsset view: ClassicTimeSeries view_property: assets - container: sp_windfarm:ClassicTimeSeries container_property: classicExternalId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/externalId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/classicExternalId - nullable: true value_type: text view: ClassicTimeSeries view_property: classicExternalId - connection: direct container: sp_windfarm:ClassicTimeSeries container_property: dataSetId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/dataSetId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/dataSetId - nullable: true value_type: ClassicDataSet view: ClassicTimeSeries view_property: dataSetId - container: cdf_cdm:CogniteDescribable container_property: description immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/description + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/description - nullable: true value_type: text view: ClassicTimeSeries view_property: description @@ -1292,30 +1300,30 @@ data_product: container_property: equipment description: A list of equipment the time series is related to. immutable: false - is_list: true + max_count: 1000 + min_count: 0 name: Equipment - neatId: http://purl.org/cognite/neat/neatId_1fc3b262_51f2_444b_b105_2e5bf1feb3df - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/equipment value_type: ClassicEquipment view: ClassicTimeSeries view_property: equipment - container: cdf_cdm:CogniteTimeSeries container_property: isStep - default: 0 + default: false immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/isStep + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/isStep - nullable: false value_type: boolean view: ClassicTimeSeries view_property: isStep - container: sp_windfarm:ClassicTimeSeries container_property: metadata - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/metadata + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/metadata - nullable: true value_type: json view: ClassicTimeSeries view_property: metadata @@ -1323,10 +1331,10 @@ data_product: container_property: name immutable: false index: name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/name + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/name - nullable: true value_type: text view: ClassicTimeSeries view_property: name @@ -1336,9 +1344,9 @@ data_product: description: Direct relation to a source system immutable: false index: source - is_list: false - neatId: http://purl.org/cognite/neat/neatId_b5d6ecd8_d48b_439d_892c_3d6e1bc7ffca - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/source value_type: ClassicSourceSystem view: ClassicTimeSeries view_property: source @@ -1347,9 +1355,9 @@ data_product: description: Context of the source id. For systems where the sourceId is globally unique, the sourceContext is expected to not be set. immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceContext - nullable: true value_type: text view: ClassicTimeSeries view_property: sourceContext @@ -1358,9 +1366,9 @@ data_product: description: When the instance was created in source system (if available) immutable: false index: sourceCreatedTime - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceCreatedTime - nullable: true value_type: timestamp view: ClassicTimeSeries view_property: sourceCreatedTime @@ -1369,9 +1377,9 @@ data_product: description: User identifier from the source system on who created the source data. This identifier is not guaranteed to match the user identifiers in CDF immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceCreatedUser - nullable: true value_type: text view: ClassicTimeSeries view_property: sourceCreatedUser @@ -1380,19 +1388,19 @@ data_product: description: Identifier from the source system immutable: false index: sourceId - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceId - nullable: true value_type: text view: ClassicTimeSeries view_property: sourceId - container: cdf_cdm:CogniteTimeSeries container_property: sourceUnit immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/unit + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/unit - nullable: true value_type: text view: ClassicTimeSeries view_property: sourceUnit @@ -1401,9 +1409,9 @@ data_product: description: When the instance was last updated in the source system (if available) immutable: false index: sourceUpdatedTime - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceUpdatedTime - nullable: true value_type: timestamp view: ClassicTimeSeries view_property: sourceUpdatedTime @@ -1412,29 +1420,29 @@ data_product: description: User identifier from the source system on who last updated the source data. This identifier is not guaranteed to match the user identifiers in CDF immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteSourceable/sourceUpdatedUser - nullable: true value_type: text view: ClassicTimeSeries view_property: sourceUpdatedUser - container: cdf_cdm:CogniteDescribable container_property: tags immutable: false - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/securityCategories + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/securityCategories - nullable: true value_type: text view: ClassicTimeSeries view_property: tags - container: cdf_cdm:CogniteTimeSeries container_property: type immutable: true - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/isString + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/isString - nullable: false value_type: enum(collection=timeseriesType) view: ClassicTimeSeries view_property: type @@ -1453,7 +1461,7 @@ data_product: filter_: hasData(cdf_cdm:CogniteDescribable,cdf_cdm:CogniteEquipment,cdf_cdm:CogniteSourceable,sp_windfarm:ClassicEquipment) in_model: true name: Equipment - neatId: http://purl.org/cognite/neat/neatId_ca8401a4_c0c3_404b_96a2_d3ba5285448c + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment view: ClassicEquipment - filter_: hasData(cdf_cdm:CogniteActivity,cdf_cdm:CogniteDescribable,cdf_cdm:CogniteSchedulable,cdf_cdm:CogniteSourceable,sp_windfarm:ClassicEvent) in_model: true @@ -2190,12 +2198,10 @@ rules: - collection: timeseriesType description: Time series with double floating point data points. name: numeric - neatId: http://purl.org/cognite/neat/neatId_a7441186_75bb_4d36_a6bc_59b4da0e0262 value: numeric - collection: timeseriesType description: Time series with string data points. name: string - neatId: http://purl.org/cognite/neat/neatId_df06ec7f_5412_4e48_872f_84e5234d5857 value: string metadata: created: '2025-01-08T06:40:43.340000' @@ -2211,81 +2217,85 @@ rules: properties: - connection: reverse(property=assets) description: An automatically updated list of activities related to the asset. - is_list: true + max_count: .inf + min_count: 0 name: Activities - neatId: http://purl.org/cognite/neat/neatId_4487a4a9_6e1e_4fde_871c_de37ea8134eb + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/activities value_type: ClassicEvent view: ClassicAsset view_property: activities - connection: reverse(property=parent) description: An automatically updated list of assets with this asset as their parent. - is_list: true + max_count: .inf + min_count: 0 name: Children - neatId: http://purl.org/cognite/neat/neatId_04c63f13_3088_4d24_9494_7f6948feb498 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/children value_type: ClassicAsset view: ClassicAsset view_property: children - container: ClassicAsset container_property: classicExternalId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/externalId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/classicExternalId - nullable: true value_type: text view: ClassicAsset view_property: classicExternalId - connection: direct container: ClassicAsset container_property: dataSetId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/dataSetId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/dataSetId - nullable: true value_type: ClassicDataSet view: ClassicAsset view_property: dataSetId - container: cdf_cdm:CogniteDescribable container_property: description immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/description + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/description - nullable: true value_type: text view: ClassicAsset view_property: description - connection: reverse(property=asset) description: An automatically updated list of equipment related to the asset. - is_list: true + max_count: .inf + min_count: 0 name: Equipment - neatId: http://purl.org/cognite/neat/neatId_46d2b553_9e62_4cb8_bdd7_7bcea1f5d989 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/equipment value_type: ClassicEquipment view: ClassicAsset view_property: equipment - connection: reverse(property=assets) description: An automatically updated list of files related to the asset. - is_list: true + max_count: .inf + min_count: 0 name: Files - neatId: http://purl.org/cognite/neat/neatId_e515ea88_f19d_4069_b88d_b3244fd87cf4 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/files value_type: ClassicFile view: ClassicAsset view_property: files - container: ClassicAsset container_property: geoLocation - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/geoLocation + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/geoLocation - nullable: true value_type: json view: ClassicAsset view_property: geoLocation - container: ClassicAsset container_property: metadata - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/metadata + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/metadata - nullable: true value_type: json view: ClassicAsset view_property: metadata @@ -2293,10 +2303,10 @@ rules: container_property: name immutable: false index: name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/name + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/name - nullable: true value_type: text view: ClassicAsset view_property: name @@ -2304,10 +2314,10 @@ rules: container: cdf_cdm:CogniteAsset container_property: assetHierarchy_parent immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/parentId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/parentId - nullable: true value_type: ClassicAsset view: ClassicAsset view_property: parent @@ -2318,10 +2328,10 @@ rules: starting with the root asset. Enables subtree filtering to find all assets under a parent. immutable: false - is_list: true + max_count: 100 + min_count: 0 name: Path - neatId: http://purl.org/cognite/neat/neatId_11622da5_9e91_4699_b69c_174b054a1a93 - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/path value_type: ClassicAsset view: ClassicAsset view_property: path @@ -2331,10 +2341,10 @@ rules: description: An automatically updated reference to the top-level asset of the hierarchy. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Root - neatId: http://purl.org/cognite/neat/neatId_11138a07_144c_4998_a51d_4fbced64ce3d - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/root value_type: ClassicAsset view: ClassicAsset view_property: root @@ -2343,81 +2353,83 @@ rules: container_property: source immutable: false index: source - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/source + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/source - nullable: true value_type: ClassicSourceSystem view: ClassicAsset view_property: source - container: cdf_cdm:CogniteDescribable container_property: tags immutable: false - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicAsset/labels + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicAsset/labels - nullable: true value_type: text view: ClassicAsset view_property: tags - connection: reverse(property=assets) description: An automatically updated list of time series related to the asset. - is_list: true + max_count: .inf + min_count: 0 name: Time series - neatId: http://purl.org/cognite/neat/neatId_53bf067f_d9de_4ef0_945c_8024e9ed8981 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicAsset/timeSeries value_type: ClassicTimeSeries view: ClassicAsset view_property: timeSeries - container: ClassicDataSet container_property: classicExternalId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicDataSet/externalId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicDataSet/classicExternalId - nullable: true value_type: text view: ClassicDataSet view_property: classicExternalId - container: ClassicDataSet container_property: description - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicDataSet/description + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicDataSet/description - nullable: true value_type: text view: ClassicDataSet view_property: description - container: ClassicDataSet container_property: metadata - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicDataSet/metadata + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicDataSet/metadata - nullable: true value_type: json view: ClassicDataSet view_property: metadata - container: ClassicDataSet container_property: name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicDataSet/name + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicDataSet/name - nullable: true value_type: text view: ClassicDataSet view_property: name - container: ClassicDataSet container_property: writeProtected - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicDataSet/writeProtected + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicDataSet/writeProtected - nullable: true value_type: boolean view: ClassicDataSet view_property: writeProtected - connection: reverse(property=equipment) description: An automatically updated list of activities related to the equipment. - is_list: true + max_count: .inf + min_count: 0 name: Activities - neatId: http://purl.org/cognite/neat/neatId_c25997c1_a8c4_4c29_9517_3188cfe433b4 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/activities value_type: ClassicEvent view: ClassicEquipment view_property: activities @@ -2426,19 +2438,19 @@ rules: container_property: asset description: The asset the equipment is related to. immutable: false - is_list: false + max_count: 1 + min_count: 0 name: Asset - neatId: http://purl.org/cognite/neat/neatId_5e08021f_2315_4b48_a769_b824abc215a0 - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/asset value_type: ClassicAsset view: ClassicEquipment view_property: asset - container: ClassicEquipment container_property: classicEquipmentGUID immutable: false - is_list: false - neatId: http://purl.org/cognite/neat/neatId_d22d3e64_b57e_4fef_921f_6aa05cbc563b - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/classicEquipmentGUID value_type: text view: ClassicEquipment view_property: classicEquipmentGUID @@ -2447,10 +2459,10 @@ rules: container_property: files description: A list of files the equipment relates to. immutable: false - is_list: true + max_count: 1000 + min_count: 0 name: Files - neatId: http://purl.org/cognite/neat/neatId_3bd8dc76_ccec_4790_afc1_ad4c5dbdcadb - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/files value_type: ClassicFile view: ClassicEquipment view_property: files @@ -2460,17 +2472,18 @@ rules: description: Direct relation to a source system immutable: false index: source - is_list: false - neatId: http://purl.org/cognite/neat/neatId_4f64197b_ac89_4963_bdd5_527e7b1f6d4b - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/source value_type: ClassicSourceSystem view: ClassicEquipment view_property: source - connection: reverse(property=equipment) description: An automatically updated list of time series related to the equipment. - is_list: true + max_count: .inf + min_count: 0 name: Time series - neatId: http://purl.org/cognite/neat/neatId_e8c0570d_3a83_4b4d_8a7c_93e73a066e0c + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment/timeSeries value_type: ClassicTimeSeries view: ClassicEquipment view_property: timeSeries @@ -2478,39 +2491,39 @@ rules: container: cdf_cdm:CogniteActivity container_property: assets immutable: false - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/assetIds + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/assetIds - nullable: true value_type: ClassicAsset view: ClassicEvent view_property: assets - container: ClassicEvent container_property: classicExternalId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/externalId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/classicExternalId - nullable: true value_type: text view: ClassicEvent view_property: classicExternalId - connection: direct container: ClassicEvent container_property: dataSetId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/dataSetId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/dataSetId - nullable: true value_type: ClassicDataSet view: ClassicEvent view_property: dataSetId - container: cdf_cdm:CogniteDescribable container_property: description immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/description + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/description - nullable: true value_type: text view: ClassicEvent view_property: description @@ -2518,10 +2531,10 @@ rules: container_property: endTime immutable: false index: endTime - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/endTime + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/endTime - nullable: true value_type: timestamp view: ClassicEvent view_property: endTime @@ -2530,19 +2543,19 @@ rules: container_property: equipment description: A list of equipment the activity is related to. immutable: false - is_list: true + max_count: 1000 + min_count: 0 name: Equipment - neatId: http://purl.org/cognite/neat/neatId_02efaf0e_d311_4b1f_9cbd_fa43c6141606 - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEvent/equipment value_type: ClassicEquipment view: ClassicEvent view_property: equipment - container: ClassicEvent container_property: metadata - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/metadata + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/metadata - nullable: true value_type: json view: ClassicEvent view_property: metadata @@ -2551,10 +2564,10 @@ rules: container_property: source immutable: false index: source - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/source + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/source - nullable: true value_type: ClassicSourceSystem view: ClassicEvent view_property: source @@ -2562,19 +2575,19 @@ rules: container_property: startTime immutable: false index: startTime - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/startTime + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/startTime - nullable: true value_type: timestamp view: ClassicEvent view_property: startTime - container: ClassicEvent container_property: subtype - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/subtype + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/subtype - nullable: true value_type: text view: ClassicEvent view_property: subtype @@ -2583,19 +2596,19 @@ rules: container_property: timeSeries description: A list of time series the activity is related to. immutable: false - is_list: true + max_count: 1000 + min_count: 0 name: Time series - neatId: http://purl.org/cognite/neat/neatId_a0c5e084_cdf1_49cf_9d39_0997c06d2f3b - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEvent/timeSeries value_type: ClassicTimeSeries view: ClassicEvent view_property: timeSeries - container: ClassicEvent container_property: type - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicEvent/type + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicEvent/type - nullable: true value_type: text view: ClassicEvent view_property: type @@ -2603,75 +2616,76 @@ rules: container: cdf_cdm:CogniteFile container_property: assets immutable: false - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/assetIds + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/assetIds - nullable: true value_type: ClassicAsset view: ClassicFile view_property: assets - container: ClassicFile container_property: classicExternalId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/externalId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/classicExternalId - nullable: true value_type: text view: ClassicFile view_property: classicExternalId - connection: direct container: ClassicFile container_property: dataSetId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/dataSetId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/dataSetId - nullable: true value_type: ClassicDataSet view: ClassicFile view_property: dataSetId - container: cdf_cdm:CogniteFile container_property: directory immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/directory + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/directory - nullable: true value_type: text view: ClassicFile view_property: directory - connection: reverse(property=files) description: An automatically updated list of equipment this file is related to. - is_list: true + max_count: .inf + min_count: 0 name: Equipment - neatId: http://purl.org/cognite/neat/neatId_527cc7c9_d504_41a7_b25d_f64ba2906a99 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicFile/equipment value_type: ClassicEquipment view: ClassicFile view_property: equipment - container: ClassicFile container_property: geoLocation - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/geoLocation + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/geoLocation - nullable: true value_type: json view: ClassicFile view_property: geoLocation - container: ClassicFile container_property: metadata - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/metadata + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/metadata - nullable: true value_type: json view: ClassicFile view_property: metadata - container: cdf_cdm:CogniteFile container_property: mimeType immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/mimeType + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/mimeType - nullable: true value_type: text view: ClassicFile view_property: mimeType @@ -2679,19 +2693,19 @@ rules: container_property: name immutable: false index: name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/name + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/name - nullable: true value_type: text view: ClassicFile view_property: name - container: ClassicFile container_property: securityCategories - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/securityCategories + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/securityCategories - nullable: true value_type: int64 view: ClassicFile view_property: securityCategories @@ -2700,10 +2714,10 @@ rules: container_property: source immutable: false index: source - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/source + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/source - nullable: true value_type: ClassicSourceSystem view: ClassicFile view_property: source @@ -2711,10 +2725,10 @@ rules: container_property: sourceCreatedTime immutable: false index: sourceCreatedTime - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/sourceCreatedTime + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/sourceCreatedTime - nullable: true value_type: timestamp view: ClassicFile view_property: sourceCreatedTime @@ -2722,230 +2736,232 @@ rules: container_property: sourceUpdatedTime immutable: false index: sourceUpdatedTime - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/sourceModifiedTime + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/sourceModifiedTime - nullable: true value_type: timestamp view: ClassicFile view_property: sourceUpdatedTime - container: cdf_cdm:CogniteDescribable container_property: tags immutable: false - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicFile/labels + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicFile/labels - nullable: true value_type: text view: ClassicFile view_property: tags - container: ClassicLabel container_property: classicExternalId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicLabel/externalId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicLabel/classicExternalId - nullable: true value_type: text view: ClassicLabel view_property: classicExternalId - connection: direct container: ClassicLabel container_property: dataSetId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicLabel/dataSetId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicLabel/dataSetId - nullable: true value_type: ClassicDataSet view: ClassicLabel view_property: dataSetId - container: ClassicLabel container_property: description - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicLabel/description + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicLabel/description - nullable: true value_type: text view: ClassicLabel view_property: description - container: ClassicLabel container_property: name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicLabel/name + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicLabel/name - nullable: true value_type: text view: ClassicLabel view_property: name - container: ClassicRelationship container_property: classicExternalId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicRelationship/externalId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicRelationship/classicExternalId - nullable: true value_type: text view: ClassicRelationship view_property: classicExternalId - container: ClassicRelationship container_property: confidence - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicRelationship/confidence + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicRelationship/confidence - nullable: true value_type: float64 view: ClassicRelationship view_property: confidence - connection: direct container: ClassicRelationship container_property: dataSetId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicRelationship/dataSetId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicRelationship/dataSetId - nullable: true value_type: ClassicDataSet view: ClassicRelationship view_property: dataSetId - container: ClassicRelationship container_property: endTime - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicRelationship/endTime + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicRelationship/endTime - nullable: true value_type: timestamp view: ClassicRelationship view_property: endTime - connection: edge - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicRelationship/labels + max_count: .inf + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicRelationship/labels value_type: ClassicLabel view: ClassicRelationship view_property: labels - container: ClassicRelationship container_property: sourceType - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicRelationship/sourceType + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicRelationship/sourceType - nullable: true value_type: text view: ClassicRelationship view_property: sourceType - container: ClassicRelationship container_property: startTime - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicRelationship/startTime + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicRelationship/startTime - nullable: true value_type: timestamp view: ClassicRelationship view_property: startTime - container: ClassicRelationship container_property: targetType - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicRelationship/targetType + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicRelationship/targetType - nullable: true value_type: text view: ClassicRelationship view_property: targetType - connection: direct container: ClassicSequence container_property: assetId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSequence/assetId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSequence/assetId - nullable: true value_type: ClassicAsset view: ClassicSequence view_property: assetId - container: ClassicSequence container_property: classicExternalId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSequence/externalId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSequence/classicExternalId - nullable: true value_type: text view: ClassicSequence view_property: classicExternalId - container: ClassicSequence container_property: columns - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSequence/columns + max_count: 400 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSequence/columns - nullable: true value_type: json view: ClassicSequence view_property: columns - connection: direct container: ClassicSequence container_property: dataSetId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSequence/dataSetId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSequence/dataSetId - nullable: true value_type: ClassicDataSet view: ClassicSequence view_property: dataSetId - container: ClassicSequence container_property: description - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSequence/description + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSequence/description - nullable: true value_type: text view: ClassicSequence view_property: description - container: ClassicSequence container_property: metadata - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSequence/metadata + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSequence/metadata - nullable: true value_type: json view: ClassicSequence view_property: metadata - container: ClassicSequence container_property: name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSequence/name + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSequence/name - nullable: true value_type: text view: ClassicSequence view_property: name - container: ClassicSequence container_property: rows - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSequence/rows + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSequence/rows - nullable: true value_type: json view: ClassicSequence view_property: rows - container: ClassicSourceSystem container_property: classicSourceSystemGUID immutable: false - is_list: false - neatId: http://purl.org/cognite/neat/neatId_baba86c4_fed1_4faf_8e48_b5f1e8179a50 - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicSourceSystem/classicSourceSystemGUID value_type: text view: ClassicSourceSystem view_property: classicSourceSystemGUID - container: cdf_cdm:CogniteDescribable container_property: name immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicSourceSystem/name + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicSourceSystem/name - nullable: true value_type: text view: ClassicSourceSystem view_property: name - connection: reverse(property=timeSeries) description: An automatically updated list of activities the time series is related to. - is_list: true + max_count: .inf + min_count: 0 name: Activities - neatId: http://purl.org/cognite/neat/neatId_eb1527e5_e163_4d50_bcee_dd2546b7691f + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/activities value_type: ClassicEvent view: ClassicTimeSeries view_property: activities @@ -2953,39 +2969,39 @@ rules: container: cdf_cdm:CogniteTimeSeries container_property: assets immutable: false - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/assetId + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/assetId - nullable: true value_type: ClassicAsset view: ClassicTimeSeries view_property: assets - container: ClassicTimeSeries container_property: classicExternalId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/externalId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/classicExternalId - nullable: true value_type: text view: ClassicTimeSeries view_property: classicExternalId - connection: direct container: ClassicTimeSeries container_property: dataSetId - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/dataSetId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/dataSetId - nullable: true value_type: ClassicDataSet view: ClassicTimeSeries view_property: dataSetId - container: cdf_cdm:CogniteDescribable container_property: description immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/description + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/description - nullable: true value_type: text view: ClassicTimeSeries view_property: description @@ -2994,30 +3010,30 @@ rules: container_property: equipment description: A list of equipment the time series is related to. immutable: false - is_list: true + max_count: 1000 + min_count: 0 name: Equipment - neatId: http://purl.org/cognite/neat/neatId_1fc3b262_51f2_444b_b105_2e5bf1feb3df - nullable: true + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/equipment value_type: ClassicEquipment view: ClassicTimeSeries view_property: equipment - container: cdf_cdm:CogniteTimeSeries container_property: isStep - default: 0 + default: false immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/isStep + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/isStep - nullable: false value_type: boolean view: ClassicTimeSeries view_property: isStep - container: ClassicTimeSeries container_property: metadata - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/metadata + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/metadata - nullable: true value_type: json view: ClassicTimeSeries view_property: metadata @@ -3025,10 +3041,10 @@ rules: container_property: name immutable: false index: name - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/name + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/name - nullable: true value_type: text view: ClassicTimeSeries view_property: name @@ -3038,39 +3054,39 @@ rules: description: Direct relation to a source system immutable: false index: source - is_list: false - neatId: http://purl.org/cognite/neat/neatId_b5d6ecd8_d48b_439d_892c_3d6e1bc7ffca - nullable: true + max_count: 1 + min_count: 0 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicTimeSeries/source value_type: ClassicSourceSystem view: ClassicTimeSeries view_property: source - container: cdf_cdm:CogniteTimeSeries container_property: sourceUnit immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/unit + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/unit - nullable: true value_type: text view: ClassicTimeSeries view_property: sourceUnit - container: cdf_cdm:CogniteDescribable container_property: tags immutable: false - is_list: true logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/securityCategories + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/securityCategories - nullable: true value_type: text view: ClassicTimeSeries view_property: tags - container: cdf_cdm:CogniteTimeSeries container_property: type immutable: true - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/isString + max_count: 1 + min_count: 1 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/isString - nullable: false value_type: enum(collection=timeseriesType) view: ClassicTimeSeries view_property: type @@ -3078,10 +3094,10 @@ rules: container: cdf_cdm:CogniteTimeSeries container_property: unit immutable: false - is_list: false logical: http://purl.org/cognite/neat/data-model/verified/logical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/unitExternalId + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/neat_space/ClassicDataModel/v1/ClassicTimeSeries/unitExternalId - nullable: true value_type: cdf_cdm:CogniteUnit(version=v1) view: ClassicTimeSeries view_property: unit @@ -3264,7 +3280,7 @@ rules: - description: Represents a single unit of measurement implements: cdf_cdm:CogniteDescribable(version=v1) in_model: true - neatId: http://purl.org/cognite/neat/neatId_9c0f10f7_a746_4752_886a_fef5ae5ca498 + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/CogniteUnit view: cdf_cdm:CogniteUnit(version=v1) - description: CogniteVisualizable defines the standard way to reference a related 3D resource @@ -3284,7 +3300,7 @@ rules: implements: cdf_cdm:CogniteEquipment(version=v1) in_model: true name: Equipment - neatId: http://purl.org/cognite/neat/neatId_ca8401a4_c0c3_404b_96a2_d3ba5285448c + neatId: http://purl.org/cognite/neat/data-model/verified/physical/mapping/ClassicCoreMapping/v1.0/ClassicEquipment view: ClassicEquipment - implements: cdf_cdm:CogniteActivity(version=v1) in_model: true diff --git a/tests/tests_integration/test_session/test_read/test_read_model_referencing_core.yml b/tests/tests_integration/test_session/test_read/test_read_model_referencing_core.yml index d2b9e9ce5..1f116cc74 100644 --- a/tests/tests_integration/test_session/test_read/test_read_model_referencing_core.yml +++ b/tests/tests_integration/test_session/test_read/test_read_model_referencing_core.yml @@ -13,9 +13,9 @@ properties: - container: sp_referencing_core:MyDescribable container_property: UUID immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/sp_referencing_core/ReferencingCore/v1/MyDescribable/UUID - nullable: true value_type: text view: MyDescribable view_property: UUID @@ -23,9 +23,9 @@ properties: container_property: aliases description: Alternative names for the node immutable: false - is_list: true + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/aliases - nullable: true value_type: text view: MyDescribable view_property: aliases @@ -33,9 +33,9 @@ properties: container_property: description description: Description of the instance immutable: false - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/description - nullable: true value_type: text view: MyDescribable view_property: description @@ -44,9 +44,9 @@ properties: description: Name of the instance immutable: false index: name - is_list: false + max_count: 1 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/name - nullable: true value_type: text view: MyDescribable view_property: name @@ -54,9 +54,9 @@ properties: container_property: tags description: Text based labels for generic use, limited to 1000 immutable: false - is_list: true + max_count: 1000 + min_count: 0 neatId: http://purl.org/cognite/neat/data-model/verified/physical/NEAT_LOOKUP/NEAT_LOOKUP/NEAT_LOOKUP/CogniteDescribable/tags - nullable: true value_type: text view: MyDescribable view_property: tags diff --git a/tests/tests_unit/graph/test_loaders/test_dms_loader.py b/tests/tests_unit/graph/test_loaders/test_dms_loader.py index 5fcd76b0a..52431d8ad 100644 --- a/tests/tests_unit/graph/test_loaders/test_dms_loader.py +++ b/tests/tests_unit/graph/test_loaders/test_dms_loader.py @@ -4,7 +4,7 @@ from cognite.neat import NeatSession from cognite.neat._client.testing import monkeypatch_neat_client -from cognite.neat._constants import CLASSIC_CDF_NAMESPACE, DMS_DIRECT_RELATION_LIST_LIMIT +from cognite.neat._constants import CLASSIC_CDF_NAMESPACE, DMS_DIRECT_RELATION_LIST_DEFAULT_LIMIT from cognite.neat._graph.extractors import AssetsExtractor, FilesExtractor, RdfFileExtractor from cognite.neat._graph.loaders import DMSLoader from cognite.neat._issues import IssueList @@ -112,4 +112,4 @@ def test_extract_above_direct_relation_limit() -> None: assert client.data_modeling.instances.apply.call_count == 3 file_node = client.data_modeling.instances.apply.call_args_list[2].args[0][0] assert file_node.sources[0].source.external_id == "ClassicFile" - assert len(file_node.sources[0].properties["assetIds"]) == DMS_DIRECT_RELATION_LIST_LIMIT + assert len(file_node.sources[0].properties["assetIds"]) == DMS_DIRECT_RELATION_LIST_DEFAULT_LIMIT diff --git a/tests/tests_unit/rules/test_importers/excel_importer_data/inconsistent_container_dms_rules.xlsx b/tests/tests_unit/rules/test_importers/excel_importer_data/inconsistent_container_dms_rules.xlsx index 792ef51cd21352de60019bfe11eabe0090681b04..070a8675cb35a574f2fed311b6ef6ad18b095e2d 100644 GIT binary patch literal 71374 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 X?~vjg2uD=e7t?KlXmekJz~uh|8>}Q- diff --git a/tests/tests_unit/rules/test_importers/excel_importer_data/invalid_metadata.xlsx b/tests/tests_unit/rules/test_importers/excel_importer_data/invalid_metadata.xlsx index f79cc16207b88d98d21a1711fae2da52d04ff80d..4cb02a7f3453209063a012692cd1065830393ec2 100644 GIT binary patch literal 71328 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 literal 71335 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 UUxj}s&}nzHv#YpZ zwU~@fMNd~T)BY)>(-9_H~~s;<8QatYb_sSQkXIXtXBw zJx~{m&AwVkOL;3uqcycJQe7-A+pz9*jOj(|nrQf~r|PydJDGHLKUL3&&DN_s5M!!k zT^6ma(VE=%A$mg$e{6Q*A6~>|r}kAxE64E1W!D4=k4U05E?=}Ztb3)dsc~7$TCdLk z4=AX~`_k1j;<8QZOkzy6t)aIr=cEoay|QlLKk(MZurp0rIpOj}$HD6FMgh~N zqda++ogNW)rplRViVY-OMbQ$BzF?IObqtao5O><>Pk9qX2I$|1TMr~$N9`mKhA?c> z+hWcgxL8a&f^#*mI>*mkEiadI;~^vMWH<*xc*6a`?W%JJnYSp&72J5ZgO(wJeZM477< zfB-GEsApOHy*Om`bThB3R`(S_*`}F2(zl9T>p)SJ89D* zIBbO{ydHe5Iw#5Orzkgm;~^VuT?B`tu$A|Nk*agj%+-o=gc}dpX(uB%P{I@5UZkoj znIkibisYUi_MOCt2$a=dy*bk>=Q3tM=wZJslXz$0)|of7@LiKGEWaY<*Z2ExTv>dS zyrYMGCGq+T)W!+#JETLOW!B96t8a#B##bwA_NK*5e^} zB>fDncj$(2poUfmH9f$^k#fcV1Ihof1`4DNSk}u|3~})K6I44cH+P9$8qwB z3Ge^NAIHdhC%pe7e|VCTs$@iGiWSITde~Wr*CSBI6W;&J-z3Np+ZzY_gM!2~8_ePn zB*yt>_V^j)^&bvy%KdbZCeel?ocp&VZA~fJT0>@Ip{s)OBNO!}t*6@BiRCA@^qeX< z_qFJ}s=LUM@$<4#DR$A`r#=0J>aatnaCi81j-6V)rmw5VCPmR_#|#5sw|pzdB`yDA z|H+PFZXvmzXOkPc@0>MIKB8A5{Wx`0emniz{l0zei45(ktmsglytHndstNX)9i=Ywftb#WC!pkQRgVdQNNvgD+1E?mn5=tZ&oq z*z`5}<0XyM5dk$qM*q~X#-2B!lXq0xf0KK)fqbR>7Sn@3)~I(!d=xLf|8$1;4(+TO z;T$_dq29_Zk{%IzH>}q8#|rMR+eVkweCQZE_nXymri3xL znZsPFtaq-J9Tp0BP&>6sOL~a!&B#-^R)Z(kzK1Y4U7Oy`e`$D29-l5Mn zF^G;{E^@TUJE^h~4CViKNd6x%W=2|~)uPwSMtg?5%(r!_3EnhR~xvPe5-F4Sf;Vb0r zlXrNpjX8aMhXkvYm1?|}Yq_JYAP?v78L7@`>4q#p`yS`*j=bJA8z%3D&C*Jqk*Y0ojTEWrHSio-#j1bs8dJx%)W>u|X9W*mJiPAe z_i#Fb*medIlQ#b9_r&v^Gzn>6+N{iX6Byrp3A0LfcWe%e6|fEONV0qpk~v|vJJQ_w z&_sI9bDY901$P<+<=4UKU$ppo<3yN+jN9%~zPOt5?bWT#$y}xW!QV8)CRh5K8W!7fo;S3c18wQ0BNEARxJC6n-i1@+XX3z2 zR#`2!Gut9y>{y0>4(m)#izatx*bK&9*FKV@ygEPOD?Ni#)Yt2)QL$gq%%5rP>gj1_ zN5%_Ki4Gmf?5@`l`XlU3WJ^t&RDw*IF=+^oA~h7>R3mLcG?5cdRri|ZhKyq!Bm(lS zJ15O9+xN%sNBLm$8v{kAYpU@yB{U_9CF~sJTE8JPL6jbPR18nZD4Vfek6(dbi|6V< zU#!lp*&m7?KZE7($L{M`*>PPt+txR2+On;%S&x`=+v&EGvC5i0j$KYHiqVJO z$NNBUn|%EYdW=8Wrb4SD2jfUE3z#%xANy@AiKn$0V~Nw^myYkpy7svATz8$x7~9Ts z^GLIaKomN*CHFuT+P1SfaAa$Ia81jwZMg>;AJf_WHm5l5`{nVW5aM>*RflLq+*u&tS|oGlCy=LkcyADS8pnR52*yNR+4fl6<)Fqux5ftuXBnTZunUAa%mZznU)OYg(U zkQfuN6+JoZr5idJEbayGGAMb))9Nr<_xkmiGwMTg`MG)-h8bM`Z_uf}Y24e&`hYMa0bkyXW$80_v8>E$;?%FqSY_xU^_j69jqJIFl#e zj#tg7KK_XsN`r)iZmEF!0OmFweU*OYI@T)4LaQzAx9pmFI+5qG{xQ&VcwJgvtrK3* z{URc|>tWX-tfurXv=N)$N<@g}``A{oax6MRhyZqDS&p~Fq`j?zr+|-U$!3cs%IzOU zUT+Ig>EB?_Sn-of%BM3DZg}}DLGG&k6wCOK2RL-Lv%DqjPxIP>{jkq$4FH-ogMTv0 zg*Imi&oLajGYHcQ3|DJKaO?VmWuMyS9~!O%P)9av3NOkhW=g|liEjy>;3RPZBCUDh z;>VU);z4I?1}Z=e%{4Z(|K=F~A037&HiU7Ef2pU8cQ%9L+ei7T*n(IOoTmNa}58$2LB5$9YNS2 z=r+8?Xiq+}z3M3vu34pGwIxKJu}a-)YpaBsB=dHpEg}%fSZ{xvq|V?S&C8~~&70Rv zk)bfc?YoNnXq0SW#8p|lsaHyNS3?waud0tmMZ@oh+o`EYM(>4|GectBfEYJO48O+D z#QbJI^=h3xBu4kAVx9sqPa!cnKNa&Hh$)4|82nUBI1m#KiShcWm^%(ruO2x-+T8r9 zn0O#29ukxHV==jk74(g{<7mO*r|2l7Gl>UcCvQA;K9&&e75=zqfA+)p@SvWyuL+inDC<7PYh)*SZ3QRhH$+$ZUd@+02mjZu`d zmN&kD6^^I~CQgS{%UY)TrF3Iu2Y(0)uAN4$*e-Q;yHQYzLA}E&ht@kwfRzSkC0SFn zux|XZ7Ws9r%k%XKZ5#2K>RR6V_4XaeA7CbyKTR<8*08|MUe5~w)=~Qb_Fcm-3`}?o zFf#jE>~$*@7{H+@XMw>t=^DtW3{k-}ovcK*HmKUvXLoQKU}JCNVl+BNVzjqQ$(?Td&W?j!E};W0hCvu&d=KoJ6)kYbsDt1VmI zLqc+p9@^Ml5s<_m&s{w11NPFBaU?w-H}(3FsiksXl>vo228ss>POCn#*6m{blawya zPHZl;22azTBmSc(!L{3V(p12{pPn~fLj0kXvWdH3JGSG0X2&8DWyMy~Pgba{+6Y5O zyXwaaLffi4VG-@PPRoiPnea5tM@N|kwhUf^kC0LK+KKFyJLUIOX<2Q)EH74-E9YD( z{q|MaA>>0xi#^>rInD4d!Sw;q$n5iBDwh>y&N^=e?8f=RJ zm;fz&R{0Lf0WMu2EM-iw-CXDD2Yz4?VjYYIWRdY$h|=e|0ZJGk3y^MJ z0@jFjP~$RPY77WEh*xivvH<=VFgRbv2%>EJ>gbaXVi}9LEYtPwMEh~{--nWfH{ZsV zIN>$?vBZH4p>s0XKF8N5NZ@>lqXxkEPz!}zdiXhY$!GxWR7%{w0kvGkcDMDme5dbkFtSX)eE&~HfF&1S+P}bMp2#yHM#}xeu99%4Cqpi1S zK18C%{TtBAXCY-V?9g;1cM5qG4tAX6?Hu+fYzNT-hSW=+mEY{-msJ*RINH(5@8TLCTG^*RsUe$%fMKG9yL{4a|=Nvi;nYH2}AUs0jQ!ZeoApBllRMna@-1=p&CR!`*v$vmXuZ?6bs09563ujZ5VjidEj0>*fV2 z)U8&MV=WI~J)-z7NYRRxUjcJhdR_?0gu*v{5L^PP{w@!W7M$A{mg$(fmJT9+?TBfo zLTPrbm%tsVV)Wc#F_s{UvwPlkk-S*isKHB7HV#|@Vy;oe!~roIC}I+T7|3B+w!^`5 zKnr+fd1H{2dyZlaq>4qlx;sX5KX6zR?FrZ!%~c?`FtgzwVvBQucd6%>MkGNVV_&tQ z-M3p|KLU1bEl@b(BJM!2i8rq=+PSwM)QtE6TbX8N1@%%WmOetR1rE*f4c^JxLjtNg zn@cDm_C!S;gk)}GStg5S`Se?La2z52WKjd{%Ba4jb->dPhb&X8t20v~RVH|kxIssa zR{)4va@C92M1%4cc($jf1Rsk$6mCWlFc*ARPzQFz>D#ssRp}hQ;RTL5>50)CkZIU& zuI3LCeDgP;M@QCXBUTB(8n?O?Gy+*|HN@Q@xSClh&VPjJvO8_PH45NjG0xg4?;7kN zUOGDfluspqgLDm4Ad6cgzEQAnEAHmo4lbojQlfVPzyL)Mo2_?x0VRUifZszC+6Hd7NL}1SS#pQEWa~=`yZS&* z;Fv;hArntOW*;MMAP_4q#_7PYB=@%(kV#c{59@k`!kL?pToO3U8E*G6YqN^vH5u(~ z-X)FUcByITTvX~Vy0H@CK=)t{%9i^Rt8a?@^9XR(4r9=FMVD_D&ymyfY7^|)1y1Vd zz$m0BGFik`>G|;cW^wH&2A-B&Kq%72)lIR$0*8D>Z*jF1&KR5q?%zS2dVy`qRn!Z) zETAQ3cPu{xl9`&|*Y~>l(UZD|-SNuph47XGbPV2Yzjsr&Y6mHB^kMJ;H>end)Kyal zf3|`?NBb*l2Y}%0@HNTk&0=goWvE>Q3T=ZrOWzdGa5`)Vb^*u__g?l;6!~7nWsweg zNOehyS_|s<0GmqXx{pRFv@ECrpB(%-bZ)pRQ@VtBlD*?Y6GnuvOMMB%pkwV$nc{Qy z+0ZW;{bmZz!_72rc-d}A14RytRRc{Ei37w-QC~u@YhUPwjsq;s{u1_E=@S$#pvhuy zpuxXY$LHy@cW@fzCo}>Pm_YGnu)x0l3ub$#R`U_DWXht+sIJBU`Fc=`r_)z&fLIwQ z1<`kqvk&2xvkyjF-TP*!=fe9qS=h4&T?W+jq(BzzK30g7inbR8jymW9a|BockvCzN z1fbDNm7yCL92Z1D+~o}WTeEb@8Ffi0kIw9x!pXXgW$6PQRMqP#E0Q74C+wPPpV@`Z zi0)UZNP%Jp+zLe*RY#nxO*GQ0Xi|0v$Y8AR;`%e7x5OR!)duRpm8ln+Dp2G=cv5v0 zok}U5ySV~zgY*fIK|nHr0VOm-;sv4X37rwRmviI!!e>xIfq{gQ_!M+ze<;@jHK#1Y zt_}N&2k{m`lm|{i-3_Fah1de8gpK0Qity2N+i3V{6n+B@oq~ZaaF!I`90-b%_ zV}oF%CO$y96Lz31bZ+CEpE}n=$LH5XCLgebQaHr`l13m8&@{gJlp;FRQUa94z|c12 zI{Sp%0rG_pjPd*emVgSU(zE=&TP{c)=L>guONw0s7L+s!Wk~{72o=G28qWiV7O@mn z_n=12f}IwS1$6)<15%0V#sFB54Zv~1k;gUaK+_Bfn1>wpdWc|MTD<#RoZ6y6ClKj& zXwJvx1PxSxxCgP{9p|P9PMa*s4#IMAx*}g~tpwJS(9 zz|SW5^B(E|f?D&`>mQcBo5BXh~o#p$}*QRK(AP{U2xw zG?I`jFOAGU2!PzfrXSSbXd=a^(gZ1BWZl<&GKBdE)<5xs@Lz%$$osHWA`Dv0zI1XAg>o<1Bzr0`3#W;gE9Zz{8ZQ z=P1gCrpW`K@dGz8T6`8oG5%XM(LBF6M>EZI2x3R zKt})!w`6(+jRm38f?Fqe=VG2}U})Hvy34Dy5!~xY*ag>B3;7AItL7pJj36LxfhnUC zIFO5=Vkqo_U2ySz7nEM1jcM8d;g)8aeVkz3E3NebhtMSC>~|8@xMZ zzwt&eg9I^)f$4) zr3Bz+_tW4!tXQRFwf*vO&8pK@!{?wZ30VxBlG3v-iWI2h?RRNOn2_ZMEK1(_(%Al%PO3|J3EO{eLQrQzEDPqcnyo&tOu7SHSfNJYAtwh4Y+1vEL_Fd+CMr1f3N(@P71=^gU)bgE zQZYoNzaju~)4$x|2MdBhT`Fx>=a`zfTh2{Keo4enHOhEWY6Uf}p)yXRG2gvxw@i=2 zj5GJ!B!uNTEJ9uCnvA2bHRwV>z#bOk1l^0j`1h8Fd)Y)ld0J5EdCIc*T8>z9;*eI% z8!-$s)U?buH=ri-1cble;4G!B0G%4}zDfi4u~?|dc}N7U$xSd8yGm%RX-WEm*(?sW zf@FXx)_eoh5A|$?5gG5qI|fFDZTI7VE{s~;pgjUpr09h(?B4( z5;R-Ului?D2X~w|DJkkTOsPj?VXaNAM&Ck7RikvfPw zO8Ez+YkmX3|7Rxni@<2LeKP@WT_aW2lIF^BY8NK4od7B= zK-#*1?4UvAT!Yg1#=#r-*%>(5kAsu`FxiU(TmCsYS;{zqqBs@Q0*TP`6Pzp_fwyU%SKng%VS5-Au3fvVUL?(-?7KchYvkW!;L7MhTN%W&!4DG>)#JwH_5 zQ)_n$lZJq5pOS!&4_^yS3v_@6&~R%;>5!;|{u)puM!ODf;XrCS8{v-u6&y6EhFU(5 z#UQE`hG!ssa2^6xCtQWi70{Hf*1jGZxk{HjYAcj95}E9xwpY*LAqJfG&eS;qF&2T^ zJ9CCPq3mH(0r37odJ2xZ=Cpb7$PZ5a1gQJ2ft!U-4!WRU?5Ds5CUJG3M<0Tozb;x6 z4ZK(1ix--bY>86JK$Oi44<#r*Xrb2)x;Zctgxf)An%xmm zVaWw@%WIIqFg{Q%0BU4=&<+L;!Zmp^+=&dR5d)#l5&$dV4b?Fw(#b!@wdXPwSE{E& z!){BsPOJ2c1;IqA@u0i`YEm$Fhb#>8Ih$uQR6IjbI^TW4*#&w!00N!}W!V~dd_#mX zhYIZn2qKWJsXYbU*izwg!of8-6wvDalN5)i^x_~-hNj&jK+QfG9(!1TV{D@~u9WT; z3fq<}UjWC{eAvRp5R`}JO=rnP89IQ}3kUz=fdDK4i36nt3VBGK%ooK=$F!a*-1-xux)KLU<6R|%%5|C9YApeI+Zg2K{gh^ z2J>A7b%wxifZ6Fzgv&1ggcqfMlWw3A4QzSvoW6$!v8FB~{NEx@JXb5;L=@sB?a|m{NXm&`A!bK*5CteVt zFA5ZxCaFk)ii6TmE%7=)qkllM5!R81ox&!iK#9fymteL753eIL^k0EtGXa6Ba>g}) z2f=e~E@hOp$oONq=&@ojqeRAs9a%DjLZ>Ni_zoWTQQ|ch9`7$I)4<~nFdLxcHM9s+ z=5;H;PiO!qQHF@{_#V!^aQIQ0p_DF|aK=DyqB~Dpmw|fF6a!?7`M!vfdnu0sfd@M< zrobHalNo5vMkQ#t{6@@DO{IQdiLP^)!s9~_$?LXJXED+ZbAB4Q!JXP+0wV7Mvt{U! z_LKQOaFOMpU~*ubtBJvrNDP>Gf$j!wm?>$A>Y;m4Q2D;pMF-(Z10qM2ilVu^NTpEd ziRSi?hp_Ts1_ic29H(9{_l4$DU<^8jl{Ez(16UlL!3zc@pt(oBmiHHrmOVW0i7>cu zx~A|jJh< zuEm`SI12m$f_h_&=k2j9s`bI|1^SuE(x5)Fh8{pr+yqXxARn=U)EL~QQ9PstoW(Z{ zO@vC(g{OOz=eMAI%yk!lKEt-n`{rFQ@FBGyj7uQuS$b4T$3$r)z+8OpSqVIKh92sy zfyO5D1P9fK3u$c>nBD;7RA?B|sbvHY8K8z&BnNgLDD!DiVvbTbEFelDwLfa}LqHeB z?2=)BMG9q>zrfS*YzkyFc<#K&BugZ8S6zh*J)!~mLm<((DyC=e5-4fQ8eKs`42igJ z%?5oE2RzFF4_+49izDYha0HV=NcmD=@6x3Vh4T>K9}(k33?ATP$uBOb1Y~#&>g{Dj5r|?Dtsx;3H&4p z+zMJV@I*-P2O^-hB{U71I#F~M0XZ}=*!dYK%rPPsIL`k10dNskkn+1z3w$0V)!MXU za_y(FoZsVd0j4(Ji2p*Pzz6V;_ z1^2sD9)Ywy^nI6isB9W2vA_(P+PXN!L)|DW2rx6I2_AOZzpy<7eKr6t7$Hx99xqa= z9QctQ>`YDY-b+4=Ms42MKtZ`EK~V-S5tMS$73yKFEkW@u33c`J&wD7+K@CNK3KN=z z3W-wOgJ*gd!3R<(nSTs+#Xt36bF~8qJ5UBXh|GKeyYlmri2;19Hb#{&PSy*Gi%aSivzGiFNIXjI4)DMBd? zJ5ec9krIgpZ!~FEsgSuelW0IPG@(=~6_VzO2F+;HJg44<|8?Kb^A5G`bIyOQ^PTmr zbv|otsrP;F=YFpH8h*dubv^BozFntDC`Euf+@j(mREq%*z~F${#=uPu$C#HAfC_Lh zff8B?5!vn)=+Bf$+{zGJhsp$v)b{g1W|ac04x>KDLq@vQ|Ln0i<3V93KrtK&Q!NA( zV+zEphlRWy8tx+obgByY%2@3n{z%BwexK3!gB~Zz2rRdn%F_M$u*YyWyger$5+2ck6pf-7LlM5lo#|so!|lWh?qejvL_M)ICPm~feI=;hq@H+@c0v)v z#1BYYn@l5a4zi*aVDCmn4u^la-9AE4z`#q6kMKE=oEY$+3wv-(Y#WCLIAg z4x&#-bW_nt4(c6a#|NB=+Ei$z>NFB+n zHm=#c$usg{cp`x35p-vWHuyw?!H58wMu6#>!X!?Qvn_e|+Y=VzffJgVOYZ>m{7vW4 z0I8ePm-4eUwzJHRy#uj_Yu=wd{5X<6JMipy=re~x(G#yDOyT9d~mq{ zpYxT7Mi;pgbGqOztU}2Pa=fdhU`cJ8!QQi*?}?hIMes&;H4V`g_Qr^W0tID->N_zu z2?arQaw#KImZ)6!Wwra3@9dh1mS`L-?^$l$5HaK!Czbj0tYzQJbMvdqU4z(cyZg~v z9me<#2JXWyS(!l_*`wdWmGDL`CEastLmxJ9Z!1^I%Is9AmutyBx696xqS7m zQc9s!iUY=Wo{1LxXniH^1P@rIc~z`iqy4~T)}fW`YJxNy5T93882zAcRUXrH-ctmY zcoazWf{%47^D74{>nPVM%PObt4zuigvOK?vb_wxNeSK^PuJV`$xfW#wKWPW@Ftq#y z9N@D2xxDzLZ2V=Z#)FWApycmzDVZ*Zi66nXV<-Z|sT@7Nk$m~R_62oi1-yT6FX>}^ zPom&%+G2`D?^jYpV1GT!?|8%EEN_UIuzHSR6n^;}08l4!xJ3=xd7x7hin?2Lyx;_Q z!gt{{cz4>^uH?HI=0)dB9`GRJ>MGzRyzCav>Qr&1x2_<75eHC({XwFI9hMwe&E8|+ z&YF-KX0VFA=T)Gs0GyHII>+^nf{q(T*NrZH5fn>vwx;>B1H1Q?C8>$_BrSYGv!nJv z8|@9N2?OpW%pi(SGrgpdyhX48@uNhGQtS#1;BP7Qaw)mp%Lg_3sm}+?%hHZ?FxGhT zFWxLb+K@1JdI^&U=@+}6Bb~4z-v&E&N848y+96%k&4sf=(EvdKM~DrwIwZ$&;4ioB zF?wXkAs0n%E(7lYUx%nezP>dc9|VLX`kWHsEW~j{zdfs9DV6C55mlH!ssv|m8_FJf zAXFsOER;XAb|rZ5*!Xe|sZ0(#Ph~UZtW50Qw3AG1E2n*!aIoQ%jVO53H1L<`w-vm3 z{cW>^wziSC%juFn*$6FLR7f-yAM5K=W|gxs=CvVMoNTG6D#GOqw5`7Tg&Z ztWL`XOjg0haSb=vS{8$L{?_%Sa@KR(x{)YrL0ar|KnN|>$T2hxCIf^F01JL1xMVGY z9kX06_}9sGygZw-XrC8@jTw-W~g)1r2G32k59;EQ>dEw4T~A>X53| z_+0j$TXQ)aeUhkRpK++Zl|`%sZ5=RWdLHlVf+NZb=%r%qtQ(GTYNC<}S_*p74iHW3 zk^03OOvwvmJMKd7Y>T<$U6fTK%3Vn@LrMFNn|dzhjBGtr)CeD@HXA4Ty#Nxgh@7 z*DY}am$svLG`38?n|=B|a;yFV_OR8KsDN$gt7JmOQ6ADd4G~2#*4QAlnQACse3_L_veR&m+i1WaEJh z%?PgkTMvkmOIv`b$Q6Oo*iHB0dX1Mxg%+g~sJ)_!xF9BsPFd253n1TtF=wL*2{+Lj z?g!w3sk2-9eG~!p-TH73c`iVY%aw_B(o6CyaN!b%j3;4~Jc~l)R5G<1xC=WB(5yL9 z3Gq~x^yT`OXJ7oj#DDSlV&>JtD=m0qOX?^%$QpLFU;F4Ohi*``0qi~)-t>I{1(Vo6 zk(8inI|67($U;>+fj~aDI~9Dr@!L?%z-5`IDqSNKk|>X$B@-;5=QLzu;uBz)(GOLM zXz`Y8M=Okvi0e~vHV4!|T*dN}t$;E*tAg(3@u(muD|Ey>+R|uCq!lu=ixO$8-Q%^U zJ>-rwn=xB0Y<=PaB=kt~z{m&Rgd=&%s?P8L0=^$h0{LKnX^H_e{nLgYZfrs5tBS;t zgdY*L1?>QE=0OFAz>R}mQklpd0D6EY5_qsN(-E+N1x^TO$7jw4g!d}26T`Do0zhEA zarAh51g;;*^Jx&ovL3?-1Op|E{HO>Y!~xpXN{Fe3ocph5^+B6fotgX=6{t}oKY81M z6Ng&^+o9Ycj}YYQw?(CS77@a!JPGx3rcgyuB0y!o=X}pQ0_I^zi@b&oL>?fdSxz_- zk-&4osI~)yQzM@u?sH=HJltdmFlpm?&+A7-TXz56r@@@uAzkDIjnZ%?u|G&zkh)2j z0AG+b9n=@?Qt%xB!HoF^%=*W|Ulr521g&k1#p>7~l6CL)-Av40k$S7x6WPI~dBMjJ(T^Qg2 zSN3Kd)@6w?gObO#phAP(h=!R^PNHK6ya_5wV~}nq;!m**mnxl-u@lqAe%pV`A6yt^ zt345&Z-qCYB)?f{$_gZ~PXsKnM~*k!un4kY4E7p}!mS)pY{p5Bs z!$Ts0n;_Imcobq&s7~XEXP`mIt6v@fjN40X3J>(A(#-IHV2^_S-N4sB?o=68I83prg=@ZI_ zM2i~D|3;&TK&BJje%9V3LPJ3)3qpNeNIEJ<*L<1E6+VCZ;R5Ng^Ss{vF8mHCFR7zs zWzAQ?~JOYQlAvAbbY%s?!a zfSNr?HsGWuKRt3=ia;b$HCG12l+wb45KtNkdWjCp0+0s{4wE=jT{Mv(Jv*p{`$v_2 z?fW&EJiZQcB$yMY!UpjD?z3FC+hb^)hE6mjjOa8%`^nv+ zZ!%P(oIQ`P(f=d^YZt|UE&_Xj6(x+;LR?2sYA4bj8u!BdNrT!}2^rp5JvGLmH7~F_ zlvu@DLsT~ycvIpAN~B6wa~P$T$bkyU1#8glW_NO<8-a_V9Shjocwxqa9WeW79o1Ny zM)9i1&G?7-grA1;{0@O0oBTh@8pucONX~gIE;Q zb*wOA`6Z+yo0ll?*sesGaoj`_@cjFT&jb?q5{T1K>R;wApk_k~G;jx2M@S49xzHsb zwhrCN6_W|3^dJ|rjl+42E;V*nD|rE31*0Nnj5MEV#<@rJkSS^D62iHMz%kBc=w}{l z#}9}S*N4pMOl+8xX&|1_RVcTC2ty8~YXG&eIYCfS2wTb+K^{)tFhOR+A_xg|9L3&$ zrXe8A(4#5Ho*3V@%Un)EPzvA0pGgmSAQCOr+y7`K66&KehR`Iav2bd1E%60$ zI?CWYfsUB-)L_rFjYFtN=3Y!AB)})2I#Yqk5~PTD1HSI?NrF%SwM7hzOS=Opwbg7;9-_DZ#@EDFwL0uF%s|* zu)1e}^{|iwl=SQERWastIExj%!E!&TOd`0b$9D16pF*1ZEYQW7V5Lx$O(}*iG%F)u z1E>R86G2m9JI{FFJ7Zxoipl*cd~v9_UA#R(d&RX4>+i@_EU|4Sd2=OY90+(|^#)TK zVVt1!7(impAKB5)ulM>iQUL4OpeDl^RFN8T2eb?%RLC+{0~K@^?&Mj57{LTHF_(raQ-c$bmaI2wAYfG#3uQ{$lOzJOa~wL50g2)WG#3&C z`Zt|~qy5v1I95(2jF4Xv#F9uI{D^%2Vu%pqhN{gICHSH3m6H(Be;zYGad= zO5N;(Q5Bou8;Ax12C*Zk4rL!QFAn$#+|d>!q#l$qX>Bx=vLTxh>Uy(9FfHL8!KeF$ z)yIqAY7+PakRZ@O3qz2YKvq$ptHPylV}Vevv51Az5wq(+FRnaBgcj&d7<2O-2*TYb z+T}q$ISNe!%;eCykK7SwgoDa6DaY191`a zW8xrMP^wy7SJ_=Z6!C)@lL8QwAi8+Cv=IJHvPN`Q^sE{jQbW;UKSl(R<0iVFwyE&d zx6f7xDCY;PL2b=();kV)5sOIl$cMIN#nA`2SBS5|ln@c8VHD{C01lFRAnlGs5qaAz z6&K5q0Ug|`!gtzJ*@>2S+>~lWuydy})JesV7V8Npz0llKnL87X{qm@ZU<@~^N$2kgO zNhrcN5EMBMmluN4lw_2b=_t024kl<-2KthuKKmcLb}8gxzPR4nH>e$!KY)^Aq6LNO z2)#92bFM_-1DMJzyUSG&Pn?IVDt()$FjUUgZHT zVSA0?gTsf1)rOA@s}64jwE>e{l#mdEq@hd1^xcRJV8}$MZ2!`^{dZFmfGYnQ22`mC zlo8D#CK^O~K6t9!=F^0RjbkhSK1wBw%!|B*4j4%p01^O_F1I+p1T`Hu($TwWiDcMd zn}_q%kaiO8|5frIe0>_xH#;f2F;Wc1`v3qzh6nHckmUSQxXMFLOQM5{JCQ^*xrPVC zQZX+`j$!}T_Rk>Vn;^Q(S{nj6g6M$gV_I=RTn*A)>U>Fy(hldp(|eEZc!Q`9%mqZ{ zVhUuf(TLhF5=3{0nt}w~tmhh46J7=SVY#b77|yMY+D0XNP3Arep(TSZlg$e>1#>Wt z7l2`0<_Cf?Y!A9YYZ140@TZAxQb4Q^^d3uNIth`#Wr;Y0yWqwRTsH}NgFx@br>!sD z@t{*-e&sJSEs%BzzD46*{vqK(j={LEHF_h+@f+$u!8xNY5*NBB#NnVH)o9q3G=Zkvm++S<2a{6u_IeOPiRTDvw~=HjdkdBEk{>Dz?Y_- zF!!b$5r^(IOZ_L}97KI!!mo(bxEIZLAZP+Qtv*H#z#kBw#G?x19e!vkhHSe`L@>lD zK;vmbyO_aoauCPC;YAlW6F_pCXhPg|Bhdtu)g4prrz2csVGw|ToJGGr+%2k-ftCcn(*mX0X%!GfqN_m8!MKJ8#^Mp98i-t4v8T2B00*P#1U%h=;(n66ff*~2 z_Nm9Fcj(e)Uogza!(KRXpaBxd{KANCVuFQjg&{3{Jj4#7X##)-mj{M5F1 zLQzE`nFJ3)l7;gaYEQ+@rcUR>89mU;g()IuDyRn&3VC1%U`!nPbc{&^F1QuIa>Rr> ziE?bqwzv*{1+`^yk~w*^G+mgG+;IYixi=XE@+Pu2N$GDStU<0>1KOO(M+qbCY|@x$ z^exNf9W-WP+$g4$YMig-$AI+;*^d8oP8x0_vH+YgBMS{9*Mw#%sLG`zrG+LjcwUv_ zTH4SUI#CkE(KKwh89;Hwz0!D;lye#!4O2%E05fr@IZBB74E_VM7gUg`vLb;<0u1m0 zk`vMVBeMWHr#?udGztd6j1}S(G|oiW32hq%F@(30gi-Y!38FWgi~Sy_Av!t7nE;cQ zL9BAn$&YgxltelPr6R~O3e7HnEJ=4qfq0BMzaFvu1`@9Q!hCFKG$2PLO=xoulmq4< zh6$FDWrrsGfIaa@0?v7nBT=BpSbc`*X386Ax+V|u8WpHg69S1n?nuI&(0?Omw5a?g zuk~^Hz|9(FJ_#cnFevg}4kzzq!Q>6J7^cf(wG?QUw$f4(=^J#SEIf!B>bYj)kdsg> zkxU%Mt*}~&$FArH+v&SNu+GSge#skBS#Z+TrZV@C&(okRTVZjo1z) z4=aOY%wW|8$U0$A=-z;gg8R+UZ(ELn=0OyrKPa5wqId#~v?y7aNtDJEC4?^gFC8^> zq%?VHLZ_UtWXAsP)u!mRN@SB-mYAGh-+^L#BDr&A)THFlO0#KEWORP$jijg)9y_TIH{`k6tNTZi;!?*(T>Ha(C1A9!Ap$rL<15FDz*wlK z>oAr3Mv?t{Gj7k|3A$X8Ycw|3LocbnEdz1FPcqb3cVa%<3M3M(D9oUMilJtbW`UCs zMx$+LVi573PpG3r_JRniMs3R=c^J(6As+S#4JctMhi1-7V)$|09kq=_!w;~=NE9@Q zEGS=5TMCcR?T2x4z1rJSSo(+AKvPVb;6-SXNT8+@+$P5h)GE4wcJm*!iiSLi@i&teEW8pUN+L+~Io zRF(`(|C2yQ0nNr8L^5FRwYS%iJq|o`2V>4(J-~|B8HywlXQAq&8>Ua~F&U9W|CC5H zRD?&y3VGYD+YWH&DDG2R*G9CdV3ds)-( zk@IkjF952DEZ1&^2Qo(D(UUY1Mg*)SOE1VPcqSC32PPas3>@Gw#MX!M6caSO1)dL< z9%}ET9WUNEU1TA`2iHA%UkggS**KgTBwL)1n`)iDdziso5i{AuLx$LMVQ`ulSC}Ak zleU8Aa&nL+3sZfzZ1i$Bfsvx4qCe0=Oc4|CE99#SIkDNZ0yV0MvD81gCxWOT))T2g zhQVubUjsi3f$o#ML3+oy12slGXdO@(lzlzKTL&1flLE967^X=Q$9pg#gsdLomO&je*X7jK3MESi`>^j7qU z@hx;xaDxP+h38`Mrh(Z5FpNPHSZJFyzA*P83=bbLgf)VX;?qQv@cSkRN+`k8BOOLH zPn&vQMF08M2}CPTnBT4Fck_g6vjAkz5`T< z>HQSj&17vPF)l6)#G?nqd7b0%fgu+&UH2JHRAXmD1Hfb?p#fQXm=p2`1D-PHAfRw#+R%GPxpN}6 zMD&zyQRJMKrSSLxiD2nIhP2krc<2;TnG2q)BcCH8AAzG!Ecd|R6Nzu>LMNEL9F5@M zt^*WW8ZW~;Bpi?~m|$a&3N3x;mC5~W2*C$8Mwxjg9#bHYQioz87qT@RB=9dXBQv=b zQMy6HW6J+5ubjFw0O=j%rTNCEwcEv6IjzAZsUlalDJgcOrBCao7-#`_l@Ly*82q zY3eiiPy`Nkf<4f(8G*v+f+msA=voMBdco)iJw{70va-Z#=%0vDY8f3_k+~l)1(!rT zl&HclW5!?Gj7#3FJF?(9f0m8dUS6)Zqp88CTxN(3rpO*Q*1nzIt6IJ%TqW`EAD&@9 z7X02=3lDu|hzM6%hqjf+@=SP+fOz^RgAG4>PuVqAyR$j?Ap|VNqSM9aSO0UpWpP$_!g;BUK*La*WQbNei+aWYC`?2fya=-qH>F>lf8;ET%=B@H$5LH*Z-6Z z!$F_yU=9z_mDtbdTPxcjX{U8J_E}mLms`7^g{-Td?L>c%L|7Ej&f?HGYGfkqV0_;5 zSzKFr6;BcT3X&-O!=XgCN?oIrTiU@(Ss}(nEYC~Y0iFxwEh&8<@ly)e6Q0K_!Si_j zA+F*2#icPB*m}I?X1mBH7=EKVeAC+oHx^sX!*$@{&qV$bU?%u!s+Mfte_saPMcfP8 zHrzI`EeEesx8d`idTB0Fu|`nVtS4GoE$ex^6mdWLhc|S%(uoDh{%xDe(JAz5J4{{T zH`@GSBjhv~Z$jnjIZ9l_RF1NNdqqBRJ1V$b$=r)QLV)K844%`~MenyqpK*sLsrc&u z&ekGT_ZGqh@u#yei`Ys(3k?# zH^))N4=#An*bEEtng>Zg+(Pze;Wu7Drx7|T&@JI8OXTnGUXIVN41Zn&CTM6+XLiEb z_4l{2v0DJhwugyOd>=HJ0XwCh_pF#sJ|s6P$A6b)5P0?~w2_O`(`zjZA? zU~&{QD0*UvM8_f=6@PqZYI=M3$(?CX7pzX+^&E_!<|nt>bnxO`O4V z`NC16ijLCMEY0Iv!eFw;j-ahQQaC-=+X3H!BWu|~vp7CQC2e9iiP2Cp*7HLK3Fibw!nbqHA zm4L-F!j)xVM0C4JS?7HKi!=m-*unAR29b1sr^WUtZFVupF~^11Q7W@e-P&CWY;Pws zG+vbLR6h!Z6#l{hd@#n$&NIY=)$U!`>3TcRr=f=M2pZ+}qL-sf(Z}$S(fyHxy0o3v z+YPAWm|Lr7jvmNGNrH4)U4dJJ90>mnCdPJfI=P$PUr`Q=BgZ#I?rrmxV_$ zhqYFj7Mv+c{xy#12=0iD0G&{}jXFS=Jm{8{>42W9XY2tPT6XcLAhU6( zEAO06ePy&7hz&rL(!;hXlM03^So?DP1dNX`=APTa4-Y`~PyQh{9}(7&irc;5k^uQT z;Wt3Qc+5L-3&wfAL%8aKg@4HK$rK|Z2s-aK!MYq}l8Ru8?kAGMXnnhiD10-_#)R_< zME5#vah?3H-M`cUW6TV63u7cfdIW3lSOq%%VQAci(HfN!DAW+f*ji~&5bsPR32)Vn zAG4k_&GW!SH-;(r$l`KUBWX{gFl@^l>Tg}kJy7MJkglQgOsg9A!G73e2s<&;Mr8w8 zMykZQu-qeTf=NYN=-Gx&DTp)}&EzuJ&l}Q*M{2KY(KjWIYzlQISo|!mcBolwwAQE9_ zI0bN11{@&40DbpRy_v!q*}_i7P8vVh!zjvBS_(d^fPzda_&BL(MZ}W7)B*MoTUr() zE|rPY7bDt3!Ppg0d7^=B^}vt{3jZ^cUyxNU-bRi_uWSS&KqU>)`AGPk;~1GSz6`)& z_H{4!(6}Q3zfJ)PfyBrDuvW&CF@Q8Bh94~-7)i|}ph+@l#HcjGArra5jS-DD?J#bJ ze87{@c!4}O0p^h>8C{BDqL^B#7WkBD=WW(jXe0!*eJkgkWYsa3mn0&;)@JRtBm?sV8-;ob}3u6r;c=wLe2wn!NG5J&;&b zBUV9Gpnfw9=4m$yaeP@JdT8iS_Gm|Pp2$}2X^K?=zUf_x5avY_Myc)?Cr*iZCJ)GaM+a`k%Es`rLJq@ zG3n4L?!7J66h3_V#MVA|bK>t7d*cnihPaLmo0)5S#I7uOx2}c9q%pn32VM+Q%1`BN*r$4Jz{{|_ch9@SkMy2Ry5}7%F~>5?b^Und+k6fKr@9Ar zs!ie*xp;fSuupv5JHsQnMZPL0Vr2@39+#QDkwD8mt}uJ!uh9=y6l-#|Pd%%6V*Gcf zj`P^ip!3*os)zG9I}6MBI1Bn~*M5~bA2%&X&fdiO%4WsmRa4BhkM~VieRk$m-j%Gy zAHE*jP*UySF}Ouw&%-Tj@|SoH?Ach_oO@u#qx_#QWKNuo2zW7OLy2ZDK0kZ&63*uj zLMrq4WaN{rE71X_7K64zETK;O6a?3W0 z=zB*GUnp)U@@Y`DUukWIH#LprpvtuAi&bVm#wVz`K$cB!WH$T4aLdF)TOJrDJ*k$ zJca)!n0jrpUK7irB|BZ0|7AR0JEG@7IiM(bS=um7UE6z=+a8u}hnBo7TRk*pviZLE zdrd8k!_T>uEvCu`HS){m&Q~_eoB4jG((`?L#7aAEtrIn#=6(NQ`@_%vcfNRQjf9tZ zm7jTdhhxveQ1bvq@1FZ_uI#K$I~cx%()CzV;8EPhT`muojy_wEe_Z+P zd)_;C2_<|VsDHG|Gvd5|~%C!_hJ5J4CTw+dZh4@dJCRr7Ag{^Y_*|Fv0y|;=| zw_bCM9FraN%cZ0osOh`#lzYQ@HZ#dhw?9qW;W+cr{M9%2Yz^L>7JW-k@vZi(tr5yS zf`U$~%>xp4JLR#@XSM9+dprNc`dI6~UN#Ha?2%)!OkR9&p2PW>E4ujJs&rNAbz5h) zTuF9O8U8pZH5_?zH_xfyJHN9wBz>UXxq9@jzIl+0r_(^Vo;BI zX_9>Te80#^&N!*zc^UcB4o%JZKv|xUl=$s+Uvu4~eRn^f3bIYmI@|f!Cw`}tp~$Ci zbHARG%v+mfb=m3e$+pWoER*BM)w-@o&(KrkYO)P2kX-Tk!(iUt<}Av`Z?nC-)1zvh zZ|(Hu+|f`k^W#bF zojDuN#=D6aD{QT)af&w10wOR=!(q)bN&Yb$<2kuEwGM{_wR0C!`%lx*A-~ zI+HJ06$y7#k5J1s#4}Q5n(Kbn^lEqr>sAMI3`V7-*!BO+c~+)#!HIiE95w1TMT7ss zz^G5_gYedu?yqyG=H0)4l$^P*6WAybSHUsp&R@lwRx4#n{o!K9Cwt*szx@Mt9kW9m z>?b@fSc&!2XL#|M#SQ)L7aLzTRBv4WHOA{1MIcp%XDF{c)2u+j$yTg~8sjA!aC@ZN zxc&e|z!_f3DbLg?P#Cij>luvka)y_Bjq7z}`R&fV=~{EcNo9dab>}!`Vcouk&u;Q* z*B4xF?wo0!vZvKdytim*&CtNo1E&7^DalzGvZm3sTl=$;rUj1~e~(lYFin#BIcDG4 zT6eEG?`l!)&=Q#u9oY-^l2_}p6Qu%2k2TpGk8JYmSeD=Z>&)Z2S#~y8>f%QX+|S)_ zE*0Rl8xd99zR#*PHx5-xdINPs~s8+3UT%FK*{QO_`t?x{eu5{X;h}X8T4Q!2bZFRTo z4;kY>@ubP2%HO>*tMyqFzjaQBVoEesb!{7;Vp=rSE3(bWcYPASd3MLk@smcj4mEX3 z2i;9euBvk!(blw13*$Lb{i@}fx_Ct5sS>tuQ}Rb|TJ}5Nd*3e;nRupTU%083_1CZm zN2=enJXQBQqOE0prX+OIKXSs39jT6PxvL%@k@z*~uXDjV^lwc{Ou|i%SyzTt9;uFN ziBpe{OhiA5ib#xZ$qw5v=^quL24%vLNj7JG#Hws~sjX$-{-wgmZ>dhwo8gMkhBD#T zsb4D#x@?t=zUicmaSxQeO1(C^?5CcG?11eTUHh@usqUlJZ7=nluX}&38}u2h?QXBL z5j|x$=DCqOad+!Cos2P0VXc$Smqup{aGW2PPc^(WD7)D0+LfZhP24LLvqkzs8Ez!S3y3{Fq4Z-I%I|6*2TB4Jt->O%KcbDzQiz-n@u}ph4EJ3+t=O{ z6^e2HRFJPW%;aHn3|Vn*>tgq7pNa~%bFWmCZ!pZ{WeW^hVYSuQ{aSHRp(MAiqI|ny z<}$YAkQL{*F7~)qUsNc?{a8`H-!PMptvY1Ig{{6G*ZPVIWw?JT%8wdm^0SSGgg9IE zdAN@i70F5tD=LmRH}fz1*B|y>8#m({4H0)3Pni6%;n!@VRWtw775?kj`X7Ji)KP&# z+5euucBUrIp|7?xH5I<;QJMZoD_&@x^-$Tq-NW7mQOo?jsZ@t`@_*g>ZjJwhO*2j&BVF|)U?*DU}^J?b5 zIre|YU%}%_eIC31=l;@c=AS#N_sChO&*SRY>q6P3!x=lr|M&gy_SowpS+U^^h4F9A z{5+$2A&*I2E!E>9azhK zZFYy0;x^64k(CHBPfa{Zz`f1S|py7+$4y0EYBi%#mQn#=VbS)%1)amLT~ zz}<}Ezg{>_Lpz+zr@wg&-3x+O?#yRl`HSGwR)z*91|sxFBT+Bl`(tUDOr?0@&U;!f46S*!ADZ4-)J-qcI(Tef^4{qeP&ANdw{Q{D~- zZtnD&1$@KvT-vB|lc2l6a;v?yo%F(o=VRZuG&~dCysU z6OMa^2Cq{WvX|z1zsZYYCnxdF)xvAx43Cu^S1(J+Rk`(F8y$P&=jBV~Tg!E&dX4Y; zUphxlnQ?t;RBpL+@n+d~Zb`1jYPPNk_QJSh7wOkXY3Fc`>HYpiU=cGF^D zX!|?4OT*R;&8r^=gv(p|dLK*IPZRWVS$5TQjjcwjz$@3#Ee;rxX z72})nA^q}q-UIb58e!fhJLf2UXVJJ}z$JP2gqOK^;g;+< zhQ2{YQLORLY$?j^Gn99%imNg(Q_m{OMSL^2_KjU|%C+wCjK1=c2{>56SaDmX-Jl*-*^4^-HRm9|| z`c=#pnSNx=Q`Vj%gE#W`zKiQkdp83glu<6|>6i3sOX0 zjms5k7YW?`i|4Lu#m$RTt938wUy`ohsp7lOcQM93tcaFNkxy&Er>f8)a6^>n>p4bV-sZ(?z!&3!UhTVHa6il_Bz>d z&LtM|-PKd|&P>^LV%NaV?1n;XSN%&|>xF+WYU)~3cX`EZ`OUVjq3_piEMBQl{l0ft zSbkN!%9Rx=i5EAmN{PC=|6}>0J)#1>nYTYjZ@fECHqTPH&~0i-Y_0sw*a7OwSEY|@ zb`^BAr75jE|6z;Wl()hKqTb)N6Q|jJfBZylYW-Kwk;4AVciW82SE>~(`R%o?x4cd@ zMR&8$)jM74!XE-E1;a1&3SP}}Du`1K-)k4PcaAgrd_DI4_hmF)(>-6GQvKF(zW&Jh zI@QmX)5KVotZSH`+BkBIFWk1_bW2S4^WUb@E9Y!UnYw3t!$K()kuZ^uwc@nz%9C0ata*Ehyw zy6YVn7i^F*DtEUka5J))UvsP1$yP?lO6AdLqi=xvBM}M5wY)xeFDF}OJsgd?cu{^` z_2<_rH}uZxN?rC8d7Y`psaeuHdV2Py)z{k&E6f|M_IlYg)nsIOTgt=lzE5tYUkFP( zYVdq}(0O9xU@;l2R zyt@8b_qx@F`IfuXJ)<=4ZCF8(w|6&AxY(za@%>hxdc;_4+gYDdzGY=o9^BuXv1D~` z-KWZxsXUU)ZW}Z%eeme5($w00n2pzd$A#MM2D%8e3f)*oiBR+V_O^tfl|a{sW<;yopbHi6Pbae{i| zQlddu{T|)Re{*(6(1VK>F8kxgO=fG>PS>ibvv!jKi1XGX@$ zJ{lX_Ubgu$=ZR|nj+Ev;?g)Xz>paP;ZqDKL3~R5;?>_W=)q=Wnb}uWt^IMMC3-K(Q zUE&!r@OeD{sdG!;0Xa7954(RGm^ZL2U3I_r6xYf3ud|vq=`>Z_XoV{*SoOeHyr|^N zmJZ+N>jlDt)EX{b&oymclsMzqj5piEP36@$yc5qaZ=te`P3BG zwuMWFjV-ILyCGAo-W{o}#gTb%5s$TPcuP%b!QHc-y9PMakEx}($1Hi|U0-mx>Y{(t z1MU;GF`+GHEiFz-a|1#aQw(=Ej1Cy+ix)Wm@QvVnYtUa(Tkoa9wy->}mttMsXDvH* z{mp_IRct@Xv}P|VAFtjYHB&s^{QGeSAERfsH{~e{_L~O05)Z7Z`ZP_X>#3}paO(#9 zh(y78kE%M^=FSP!RGodyE7hoRWhJL?pY@%2Z}xS#JnVFw=U8x4M7s7@e^IPub?Usp z?R_o}oXjkEK0o>(E%lnCH6caE#(K%nxplMCeCuN)&(8IaIk}3HZ^6gNjX%Ve4R#ay z?BpbOVBM)i*C{M4{eW8*lS$6-l!bx*AuEeBrWBm(tPbrnD+UlI(9JIt{Qd8k(5WkY zpJ>a_as^7sbSEobD72EIj(oM zDG5{mrsg}Pj`uaXY!mvMPj^jQ+wAfagCaU_a&^ycG^enyOv`wB%J%(q_}@i5xz%Q| zXL97iOHNUi{4A6p#|m{JhLfb#_XQUePUa|0nitySr!qHsY)F z&Zv{p-0{k{LVn*WC1tnostwf_FYYPVlS;al9dE+Da?L8$8{umOj=moMtCXkrcf|M| zj-{7>FDMQwQ@1G!Xr8Ux)o8O)M%*CJO__49%|X+`V9PRByCu^;@aYshaFo_5{Z)Qt zJ)lax z;5j|tOQ<+;>eYHZ4#QVn4iy_yTzLv3!p@rX=&-&K*&o{}RPU(aA}OtQbga$YkzdL* zBsE{Dr{KyS3D1)!0bO+pgcrSSp#Y`^4+zB z1*Q98UVR&i$noq8ucYRnlDs)Cy*NxvzXYcTa5jLkD#e2WS_qu(cbW|I>;MO#k zS8DdJYI|2D(d6GN*3@z9f?#m=)7)&|h-{9Yo5q<-oyE&#d~z%nya>#AX(4RpbVzki zPMv%CCS4Iv>cxwd8x_@i%wz?R+RwgSo2v3W(!|*GTu)NU@Eo1K&ZhyH!Ev$zN|k24 z+m6=xix2tM-;LwNGnH#ijlFMOOp7+;pzWy3ms`j8`sxO(O-xOY+H+G^#F z-x&&myYBB^r~6w|=7sl$8LP8C&ug7}IFWnAON|mg?bvLS-4;$_LjJGxgBR@jpnd6@ zLZXiepQ~iU;cpMF^)0yCr@(#ph$FW(lXx{g&`6n01bAFzs%(9e^TyVzvTuUx2jT&pxjDzXbcDDRe& z+qx||O8m`Z>*JbMY??2>X_&LVJjJy^Grje^fKY9^^t+q!U1A+|%ii&HG&`K<=l?$C z)2fuxH&;KO2o2;mDh*y<6tSaW_;~7unbSU;kq&W@e3B-q`?y-b@YLS9bz1idFBf+G zSoe`{PszUaJfXfFh0D@Rd2H6E7&q6iG0?4kapk7NhG!pDo2GIkzR7tzzwB3Ze$w_l zw-bKiJ2Tci6H@1&zsjj|p1k+WGgsUn8QHlSwyl$L*Ll*lOR_GTTHSHYi^UETK zr7!SXIr#nzi4$A9`swpq2C{i#Id9Kbtq?8fUKL!+^*-2As<(eEyoA-`UWHS%r*6?& zpLP3Z*SByrZP(}h-FUN2cesW<-2BKwR4 zDYNc{dgk?Fm1FU%ZS*8-CFUEt&$z~a`}^;5 z-M!QxP{vj27CX<}F})0NFP%kFFEpp*ik?~I>hJhrb7IJ7?e_aI%UA{X=$a;$PPtcM zxHZLo?Ib3!q_)Y2l zcV0fS8ty09`q!D1?z?{FVRTyQs)oUDha@f7MrQmeHw6y5RP2Y$tTvT}Wg*L~Df(u5 z2QAFbS&HbHSr{M=vHbD$DeE4xz+3)z|GD5@t&+BBaeD2H@#~&z9Sy&FybyS^%rbf{ z>&NxC%r+;qUN+(OHjE#yiKuKD`TMQNj{s_2m3(y8(-%dooEwhasoUp;QP6B6cPUrb_Ce=QjF-T3b|J0;vRK!*M;T285cMF)E@YK0;|IY^*aTnmT&#ZFOylb7)hWY1J^CXxY zoOdZgS4pFxV=&*_5ANs*0$f0BGT^}cU^sZ zzhR}k+0HYgQ42&KT+eyAQe}F|bPlPdKX2@*`sFHec8R=;m(WwUjThGM+E*;}Wbf0@ z(oeYjq&3184E{ahwu37yoBJJmqlrgQy>(Envebg%ML9XAw=Q<6dmK8xZKKPt-(PGj zjX5>L&GywrO!+C?AG2-qlY^=QqbCamB{r^qdMw1w^{%_5hQ;t<3u5%gyS_#39+9v$Ly#}kT!A@`I1--XV`OF?Tm{!j>_Q)xEY+Lfy2j|$YbRLs95N6G`P~}AZ z+t|&I`0Q2`S+B|A9+?jh17+;Am9PAvSfmjjGqR?s_g=lPl=ZW5$eRCj=fWGpf@yGS z`S9Od_zy;wObo0}>7TMXRi`Ufyv1|T58bVce~NAud;MmU_?E4k4xaxIwPMDiZBuS> zYjJaOa{6;~x$H_0y^_Fr`|9?*+>Lwp3hkZ8w&aA|jN4bX?{nL@_cohQ?)&uy$#W7k z5B2_(ce#3HndKo@QJ=s19eZ5smi2x)WU1!5Y?qYU<&gx#ys(qg{_{$(lZb4!%%?M6;sPASf*oGUrKw{Pd1es4AB;(IaQB<@Wg z8y_z?k^b?6(1-0VUQ=K^Ys%D(0A*YD`m;8T0Sn8;j=KN*k@2!eoV!Q>B8wipDSgttVpvaldIp7Ey*_CgMd z>6)1t{pqT$ausP?VcW$3%()q#gn!x1!5=0rjHn82i9c>)kzkF+d z`#kz4n5WgS#6I~}s*HT@rGO&e422d=xiS9i*8JltqJO%lbRUafYFAlUp6XAZw2B1f zkE?9?(<+lE?ihRd(Duhw@ciB6JDS{QV63um1g|o=>o9qN$;u{Uf$yLa!09q{&dDF0 ztQRmonm&CB{^(@&VDbu+Nh@Q8%QNu`{~3jyyx?RG$XM_SD_(FC1NO;x%J)f6d*y%r0L&$f|>1gjT^-$p0jIQovty`;AUpP1Gs{rc+2)oom-Gb(a#D2r|hxe(>Fx`L|tTDMD9e%U%AXGH6_ zuE3hcEwP{Jm1vGx zvzSbdS;wcjaT;=`&=A1pVc?~Ufg7W&49u*>#h};!-1mR6&rVr-od1zy`8$`~A!&@c z7mZXk`Yzk2X{Vx*v*DEM9|s$_)4Z{p);8j{3M@Ot@5Z5y&UGF8P~WKF-Bq-K{7ov( zbHyrop>(_WJAu?|Hk`s+tRAXei)(qe+_q}Ciu_ppki$0HT#RsRW^}k_akG%x=l%mp z%kW}4{0mn;6S%Wl@$rqb?~j~m(i=^fUA6CIZ~UE?88T11?&E{dH4mS6aw*@HJKR(8 zn5W2E&!{%RxyWq8Fohp^(pc`wOTAF5JsTZR`ev^O4+P;>(w#+*1{a;!D79i#0qrt(LFt7GJM7bmNlMs?VVSFGB;@zIwCy{oggCOoH) z&@L7_T*DBR&jO@gtTsz=r; zDHZ%Ftep(=RaVoX;Y|O5^4YV(S3X#K@_lI3!J~`g#Ptu(J5YUs=gZ!c2BBg+1ux3B z@18f}n1^tfXE-NqL6RfaopXtN;VTcu++6he=C%(>v#EQGp7niNG{B!ZC$=!=`aO|D zf1KV`R$|TJ5q$Gq%3+P$Is*DNZ(hIP8QVC@skAD$PjlHG+Nn2p{m&+p&fDuG+9^rD zL7Mlbcts`A^!uL3yr_;lwTcZXC(04Y9^}*Ivqio$`9)`$?!IvEQa@vv`AcH;ewiB6 z_njHl*-OPf;xk{$7x?8TNs~?*8b5iuL8|Rx==JCr0i@UdR69O0wJ4{y-XY=XY$xtP-(UAN4mW& zh}Q_uZrc%4qL)BGKUkA{aW9v~!0o4BM3&sGG|!5gE4dhXt>%F=BK=l+x5m8o`M74J`m*X zPIt^5ezV9Z-07U1-)qc{hl0jqLv|R`ZeCShn!&t!>+fr^x-Q@S%=Zl2Z8?#3#CPrJ zRUf4=>5L=a!#|sj_u!izsfp zLW1bgQ3v(8L4&+^rPG9-1ZPFf*A;rLWqFKfSnh|_qw(z4!4rwf9j^f#Ztp1wl#wmu|igWS}iF1zkR zQU*fMLj?Ve<4M5qkR+cPgWho|my-H8Ui#QbN)@KGjTWhya<~tpTyflQ#nShE?Irxr zOAE?3t<<<7)iu|lG1qBO8Tj0fUfHcumoEkUwQ}yPS^TpW%m!Y`ie6KFb3BsG28k#b z`@j3YR}YRH&EL7~_J~HqhJjGoBRl3sUy)hxLU$YI&N70!x1yiXA_Do*tnDiCGN)=~ zpWGX3GNRRf9L~8Cp>y>Vw)CCI(F1d}FJGvaSc$K9k6pWb`HrC2`J(y}94or3+6o4i z^B1_TK-y^f=_Eb4=aH3r-~akNH7zgE)6A&7MyqHQ0m(?ms6)P2{Lg8Q=-_R$`|2=*+VAIH^>n{)^%?!_PNwOY;@XWgr281}N<`_#xzp8nrIDc&RY1chwgpljbuRv0{aX$Lp0n6v4}wluSiozE?Ms_65p? zUphQzTb9^?tm5LtFbsD4!nn%@Zz9DuY~A{jU`wHV{`R!A%wqPrKbAZzEw0X@D|m=B z-_(cQCj_tBtPu2Cdl7ff(7Z?`!lo_dR?CO4 z+#+7t-H1 zEz68xrGeKT>QrB;!hgL(^$F&U;(RHPIA;%+Dfc-|k(Gse7owjf-LFmZ zaaR)wZ_%$X*&P?M7`2c4-TdeqYjiJ4bA6V&ce3mJ1(k25^sJrA}yG>N)J=zG18Aipx<4_w(Z`g1QSDQ)RtG#g5GH-I}Kn>|m$-(;gw_rR^A_DJmGi!&b>WuO@BN^;>fpUd z4UdYX@+qpj5dhuv#XA~}v(VvJO zqgygt#hFBR=4fM3pp5d^7zsT#h^Oe_97Y(W+-RyPqskrSVn3LV#yO9+VsI29(}CVe zM4+kGqrHhuI11eo?d&{!41>=@3ozxVC>)wrk7Cx4(6nwu4R3R(cvCK=#ZvqNgZ!QQe#>Wr%m-5;C~EWAY>7-&zxui1i5OAQ8uCYwikT z45RXxMuW^z?)H8+*O4vEK}%+ObBoTfbAK`g=~A0V$sa5&l)+tKestewiRT(vB3TB{{ zihI$NBXswuRe@XncHXR^s9Z7ns7mG#=Q%1xpO!Nw$+(5i+ir18cA4;7zvCnAZ;L$>zxBD`e_sugq$}~v)tn9kXwVp{2Gr}Z?wS{q(`&kM1Ni5A}OLy)Y2vGCDBa>z)zTjAMQeW!@ceK7VTO z-!A3kn~(Lm5~Ga!>Fd5T2NI7l(DJ9lcsFP)^*?0wpweHh;?Pn5l*s!-{wh{}Uj7Fq zG!y()t?oBy*1qq@l_8i#%`{Y~Q(^Nlig^Gxnn`rYbqEmH6hPSaVzYN-K=3A`gIhZ{ zyAd|>ZN9Jn@Z4rk!j`PSWW^C?_HO!qqN{~wTUOYK&>+hTsBN4FH_II|IVf~x^VZ@s z6$c%Q*Jo*{6>oaHS*Lho*1^7KW_bD|XDJKDeq#HRq29LbZCR9d8<)Y6zt=RBmNd{~ zZLw6Nc>rCGU@kcgO;{rX1U#<@!bU!n^4GTV58fOS8MwsXQ~$wX|1(wrBK|>y3m?c0 zm={K2*4C<2@~EajS*c87chEqC^U2OqtrMF32Y1LFEb~8Fp*g=;RpQW=Vv(#vtBa3V zi5oce6=tX4v*ZL^oE#2Oa%M1_Dm0r2l|1kOOf#6Bw;f+96VN2EIW5vJ)&D+0q;pfQ zzVEqBSbhHz|5$y$hD{?U(uuBKvb5kJ+NX@bs0YOMpqk+$4i7W;OSw zzj0w6#5tWD%XJF)*5EiOET7%hoTWF*PPeM*3R3r( zLWcHk7aQMG{(rMgIq@bKX5J;n!}E+w3CJUs7dHProO0`9$VX%Agxg3K@h1O=lp>|Z z#GeS&jeU~0X9h-!M;<|~`+Fy{h^>>4H;H{ftd4n}__zKV>Xd=(4be_Rey}!0e%AS0 z`;^gL!2`5obz`b#Guh`6c%OfN2~IOyLN2_7Zd~l|u9@|~Z><>*Vd4UWiLA7k&RDld z|G#m)CUc}yBGNoypy6!QP?gGwgFgOeD>Tj)AGCUS-T#7whM2#W#6iPiWU_{Zzti@5 zYf^elZcR-3A%_`2&U9veKuY^<$XWMs1IKAbR~UjRWHXvx9r`^Kx&1zhV2i5E%%ZfX zGqb46rtzdWOkI*bFIR2IiL=Ap#E|DPKteydJFk+o{c&8Co=Mh8C@! zp+#pH#=>Su5%?Jb+GvJ=PMIN~f8YGlL`E`5JLp@@!4w|W-KDXF-%614W*Ej$GsLL) z3@yq#LyLOO(4wj{1a!m<0bM>bK+nMZ?F}eU(Bv^AOTiS^EPk&<2HCyN3@sWvLyID3 zXwjG%TC{407M)=hftn#jB+d}fGcbQJt*zH0rEXB&+%^protcTseX{iVhwD;R&)-)* zIr=>1h2-$_H`jN0KQERFN_bvyU9wT;))L#G`U_1ambBZ_e8$%X-HZQ7^q;+*&-XW9 zRzU(0rtKmh`Xuz=2gCV&Y9 zFku0+hyKwn%tJMq@Qy*-$oJ0#ECvF^VF9~lE+Dn^s{xLupN6SRxVs~OucNBlv*TjS zVfB;dCWqrY_4fqrIcdp%nD?{slfx;UCT9=Je0JGi^mUgAorYkJ4U(E(jkTX=T%bhZ z+EFfJRjtg@Vhocqh++;{4j*Gu#hd#}xta8V7K}2ZJ&Z{ljtWDMb>baH$vULwF-C?m z<2wT9G0zQR1&q5@=nguKgO`V}5!43z!Nie_SDBsoeL-UW->A%(~{^P+CjhVbG z+BY9_=}OcRS>4TUTg|7haB{7Gbv18;Tj9&plk8RBLyj8U$KQF zZ(^JOYUykwz(bCIl6JGB#ouj4SK6wcdr`7C@dD}q=ShP-PfSi;HaW8Ob8Y2g$IlnD zAE|xTe{w|UvtIV&zO}IN!<4z2uBB7S$^UHL|6mAj!+$WGfZ@nLhN1O;F#L}V|1CD; z{--chy80gs|AXPb1w+g~hN0DeF#HdO{}v37{bLyZmmB_9qJVnl-zib>{}_f-b3^9G zx~$$k{szb)o#QUEt_!N)T6ee4{X`>a#L;5+=C8ATJJfFCjAS2b)e2QRexU5pFO9dc ziW}-LdwfZ1=ROXh-+r;*SMk*~X;sDR8g1j_9jY9-MODF`gk=ra5^_9v*iQJa@p2ow!%CY=) z;!JD+tMQ*9*r2iBm&o5>m2p?SvRm{Uhob3K$0~Kw(T-M0D#1%h5sNSD7?h-b^U71e zCYE({OH$jt@)WV8vJRRgwZ+R-0UK782{<%e}?#<8N#vZBEE5> zpjKkWUGAZ{H=RgCu6#HK-*I1(I^?A!kHzCVJSC|EUU_@4iTI8nNh;YZPaaFcceqPZ z`@LNEV8ieofs)kWc`$LcTe>yYXe08Rp8m&O|B?8=5zU4o-qa)XGVbyWTX~K$I}W-H z#wzW>{$qd=EZs7cN9(%snd<-X-+zJN--w7ENH@DI-FHG=!>jvmgzlEj?ZRfPq>g$i z$zhM-J5nU6V_tc(SaEzutR$7{l_!U_#CPOKQW;*ZvRDMZBTAA=@p6^JqEK+!Wx$ZO zCqf}!@V^A|zf4-{-^iqMO};hkI8bwiJS zR_^qrrKxuKX3y?inuXrBblr)t#GL(oh^&3?l~EaezBKV6o1%JU2@;Oci$T27Wil9J zgSfE~6q6jrWYk(R$>N-2Ur7vN;{Xvi)~d`TspIIw;y5~|_*i~3N(szBZzD0fF^KQ# zClFlOl6^Q)!?NgR`5bWNpuK9*^cglU!y}GpvB-we67z>uFXRuikHs~eI$7@@{GKkT<`T#{3@A`3&~>=eU#1V zMD-KO>SlQH)=-q5lk285Ymp>HWq+!qo>QKeQ{FrBm_`@zZZ8FlT~R+M^dd|so%nIo zb;^yrFmd<^Ip_%z(bNo&iL~|E4GBi8nc-{t>CWEJl=$WKgEr2}sLNoMVe5Bf=XK5a znlGV=dV^pH6-788Q>x##_VG@&!M6h!vu+cpumnNRCir8?40s~@r`Fc*KXZgM1A!O=mWo=bupk8@ zOEq_6TUh?B_bdU-8dyL|TQ;;v`>SW*>5dh2!3*%yBua`M!<=)(DJDktSy#5%ztj9C zd35uzQ6zb6z<$NSk(5Kdl(zmyo_$`Gp(sK8@s2VL=mW%1j^qg^SBEhYiFJpWmMJfk zMhq-u>h`jRgl!Cx3}u`oIQ3ClaniO%kxh7U4702X)`!W%Qb0L^wO*V6tY7peJ4pL- zJiIpSSUogYJ%zQjIz8+6C(Zj6N5-_2VEdoGm-7nRZ4xbl^WWNlT;aEeB;lCA$#Z(Qi*rz zO+S@n>vI~>2k8eEp6qrR(YK;IA9;eA;sL7n{Xh3s%=c z6_rBRod48qrh4;49@VaZV)zj-v}9gXLwcOVnr__EWje~DPskYXP@h$)`-dz{$hdw88n`y9~>O-*QSi@a1;Tw=kOkK{%U_XVu3J^RHVcZ$8 z+d(1br#B#fgdj1oR>)!#?yU58H$sG_>>3m;3xN^X79l%3vzPL-8~l*#$`rzHXtl0E z${un{^@N>ldh+90Vj}xms)6RF5DU=-UN~ji0IBd(^6GKi89pwVyV)cY3YidK3bJP} zWz_j^ZormXM;n*SGS+*Dqu9n`PszF=D4PBbhdu>o1YnKv0Lqeul}_iO`Ah)uDm6^e zKMY?39ET;#kLsK^sbnQ_aLUq@!V+6Yo+ZGzgaFYEDNS}}uK=KEVl{trZ9=>|+)_O; zC)n(%*Zs5;HINgWzdmkNK<%Vnub>^13<~dY?IeNZs*jk{hR9_H*;KD$P0dbtqZ}b zQ2>6U^S!_m>%X|y!=a6+;iA+G7-%(wQ@}vY_zYmv0vI2D+3xk@w_vrsT{1-{P&k8Y zSnaj6tE~B1s{Zyh9FuJ~fg~nR+-6e9UoB#gB28{dXM0)LjV`~CJc zgr5m>z^*=FHF$T~76fUj;d!)L&j@+kj(?h!OaXW?XOo8#l#qXbf~;h!-@$?*-1SY)2}+KcNP-}52bi;l9fCnYlaerlWl)`6p{F4j!see`;cuu8 zRW<+`GdF@`>X#MxFEMawgec7>drdcit0e#wtP@CN!ytwlk1IqdPaLN})`&19jO?G< z5>9-_pM?`&c2I#KJ3a%HDo+wW2p507VN+KPRfXfa{$u;WuG1)x0ds-mi7>n+z{xn* z4N`zdG)~YU4$vE$m0qBgC;oyVI5`kTd=85sS^GGJLB>VHW`o@th9GcTi-~MuV#?o; z1Va#T9!q~#dn36~f;L;PygR zbOjj`&_R(EPyqwF^yK%lYzWAa1i}=kOjv14J#bS{Iza&%p82=0;ix@12}~*M3IF~Y zj@rQdPOO|1-ioQ$v~oSoAu3dUPB5eMl%KW<`vuR+s$GjJ|LL>!%Rj0t|@ko|K*QeG-c-F7aSi_@dbeij(R`;}9%e-7{A z6|=7qM7l;aJu^$=)aq9+q^{uJu5;E#t#G9Ne(}k>y!ju{E<1C%UiKzOOT0k5mkMfm z_uLX4=B6jEA1bxqSH$ksq0p{vsubfV7|IE(FjXA>ZKFT`FzLH8{bRVLvu1UGpKbfa zFKtP{zqEDo45n`9GS|dP<}yl%Y>i>y-IsNJi)>IaNRkfxOIww;ve{i|k}T(XEu^u~ z_dgVyceNH1Tod(Q&bxd&L34%s@`X>^vsVl!Z)(mfQ?uLj(x-~&e)b)If!F@DPMY2Q z5NXq#Iag;(RHkp*L6n~N>|x^GU2D6zD(#a$sqJz{m-^Rv&(=;`zxm1vRXOD0%E-&x zN_Go4CM^>Pm9kt_nIN=l{p0;i+s)Fp7f+7y?Cdoj|CGh;>@$xHuB~n>=Hff5+})_Y>|;Rw<%TwIo3rceUIw`ecy@iC z`>@sN52gI{Qwf__-!pxB3mtaNt2WO&=cvfNw+f`RJ=Je+i?=LzS9f;(d%;IdA%9rE zwAk`0<4v9N!SB_&E4(-kx&}B_bL?9BTFMK1&CxSA^Mrt;?lmt(_2AH9igFrJam8iK ztK6mb@>0D7THKXDkJQ|F+?1cxYOJ@=ty%s@i_Wg0S<*FE47D$=HO5MHZdXKDaOp%l zl}FxfNOhrEZ1KQ^s(DP}r z>KRP?{(|2AL=5$n<51UdN~|BIrV1O#eC0xKYgW#o)T8hzt(oWy%C|OkGzC9g+WRp` z+^4p)Khu#h)aLLQ5mF=P6BDamh;9&UO$^I$rV_e|$HHE{l5a1xE9{BgYIh%l3mN)M zCr~Xa`nHBOG@3LVbG6z<8PXf5Eg(ek-VZx}*wu9xrJ#Ti$a^0zz6F>4XpE{i5ad~G z3I51=G{(>yaQ7@mh;KoIJCxGm``FvG^;8a(RObdJeq+1Ka^mgK^95^FyoQf13v^Fq zkT)Puf-5W$*XXY|4wE;8IXh{%pg!fe9cy0mYS`Gz{V1kiwwX32yE=n ze`oD-f%wLKt0;jMmEJwL51&w7z;Run=Daf}>DqH=G$--4V7425f8!g6aQD8aibIkX z-HHQB5tP2$gm6TMdxDJuq4`yZ^VdKtg{M}7tt~f$5Q&D@2V0jsbW#p2CbSo(csGpo z$=u~0%L+s36Phq{+uF6yXLMyFW#Y0gRdK~yoVLl2S*zXnvg;1(qa(2vXKg;m1Zg*> zc0EVR#Ajcrf;qK5koKE$j+w>$}MmN)I^WF7$VpO}opb8nw#P~m`?$0(h=H=>- z2)`gj@Vw(%zHBG|BDMW*jg8lEEysrIN$Gpt@hM*>!GB0?{|94ZKCWHZa6>7A*PYPv zWm5beYWpjUjrqB>u;C_B`rdaE%9ly=e^A?BXKcKd>l!xPLWm+j#{q`tq)*mxaR5;ojcir{mnseG9NzlZw%0b^r9u5xU+qm(}8 zPG9*lCH@cU`>Dpp2(Er?xT_QabB9r0uDpk;uFmY}K&+!yz?)YT;hyKmBm% z1JbcmIMc!2pYe5lNvF04yXF#Dc+-?#93`|nDEnSSnlgm7Jljthd>k2(LPDgS57SWLeh zjusih+-4+wQeI6h+{ZlKf%rfC;rGF*GhCOkZY(=DB3Z*#YNKx5R3R`TRdb}&M#s9b zTHyblazdY!=g|M(@uJLJ-hsHm_`mkz*MYdl_+R;=)q%Lp_+R;wRIV&dEmUKE=|HTd zU&f-%hA`fY|G$5Tjz%kFx!70_QmF;qym;o~iE8%1QO!kfcP`8Qu#@wp?S_a=vy*gn z6jds(@S90ql2H9VRDH;1q^Xr&qOqdmaQ^YH?@yla+`VV;q)K#(eGKM^cYtJ7bKha| z4Y3RR4$qt4)!t#7qVBtf%Cm#0+PLA|nSjE8VFGEBsg5Kl@2@hYkI`Dz|3MI&C=jS4FQRT=XK#ErNEg zatTXC?{($A_%!m~zL3A z<6`vT8{}%ihg$j_p$GN$*<9pNs1+8ycRS3H_pzH{WSq*00|y0&ew$wHmU0I-H}3`a$!0XqL93VmE#0+qtSgOOLl_&+9=K(DIB_uSfLn@23U43(my??< z@83$?lMuO8vsvSzoqobOM+btz4aU1(qxm~*1MOE|w&QbVL=4A}i`_0HR+cZiki@y} z5%$)d^GXuoN9TEHrCv~NO!9XVI>$4oG<_cRkHBMV?ly)~OOBNtHGIh}QmY{GCfZ>A zV(iz969axL-sJ7UFUsW2my!*$eBfyNUHs}!+X|CMi&dlB#Csktlx195iXDhuy0rdi z5Qk&Pey)*W{k__o>;17WGY%>ASM+VLSZ&Bx_DvycAEQ&ohFUUeVcD{);hFm7fS$g+ z4k5~cZEZe$i`-`K$*;Wf^w8dlt6ZDxIF{yZAv!AVe&a7vGAON`--S&5K7WC2^o^H} zUlk62-gGqSq}g!no6-T7k|2g9D5JxUsB7R-EY=ajUQ3Q+=Of-P(e+qI_#agCxxF zWoXywno1d-!p&pCzqZc$k?Y3BWT9e*kQUubCG+lbta5Z+vq>l}JX40zt0iMo@|5o( zw}{-~v+1NJQx0TL3F!s@6-OdpYg^15$Kk+xw|n^GP|UV4<{0=5={^ja-fD@a;~2xt zv2SR4du*c)ZuBE_tQ9x5nc1yF>x@N>4WiJ4RT<4L!=B1?5^ii5#VqU&W75!0LR$3Z z#uf~kT7{;gakN1cV~B`eNTZUTC%V$Qm2(>j;9r{zs&@oM-^eUP-DLJ=AYADm(X`$~ zG$rcHz(@+AJJD6{K4Lx2ZH$93;>%mKgRnqOrObCRVNsS!pJZ(={UDkzh}mw_^QOBo z1D(PAj!2<>m&s|i7z#?vyV4LE)40Rml8W;~g!)?s<*X_oy(-S2D>76H>~g=298=xW zWqE&>OS9&M2LgG0n-dRxIN~F0+qNZ&r#Jx}GWa1!6ixW};XIjsK4FL5_VfnrK8azw ztVE5axddf#e}g0Rz(uZcUlBV-Prr#;#5n#&dH2(`-+K^CM_WisnPq)`ACGMxcJ*GT-v<&zlLd^K({m_6#@b<)N#JJf(!lUR52Jc1D6q-M5VKOOJHOIda1 zL`w~d%t%31DgV)d?KtV4t(@N{dbH|RHqB1?l&kZ(8mH~lZPdzeM*J(6KDt*%#VAEm znJ;Ju?y62xmZ+zahmuV+vlU&NPHQa-Q6JJ8da<9bOL?1XNHi2;KPa`f%nny)bQXbn z#NgoQdYEF3U+&U%oO$7iIgyylD-#+bj{!4NM=H#enBgM>4(%hQeS;~CHJHV;-Qp}E z^13PXu~#DlWBgyXWM;HfEOy^Wa%AmKT~-rb%}jrH*#T<20VIl-8bzURZa{hCdU zt=bND7`K>0xh7=~C9#e{nQ}5V4 z_DbIv*CZ^(qFwAlnj16YU93z|$7y|Ib@k`J;Bv0%(g@XgPsxoGo6MY-XuH;Q z@{7jQ9A3FsXm`e|6H7_W$Af}$(M(edGNU&ptG1}I?K`9KnS+tg<=PgyX@-Ll31w1R zs+8!}sbkrkgFxw_%Z%_uCzsJzvzpL}_(A6Fk+Y1n{`}xoWHgPls2Sfu!}(44x29%x z@3(xSDkV?3rT1D?v-2Xu84{;DNZOM; zl`gB&BDgwHLxa!zn|NK++{mhHD{vje(zaZ2>exF=RO$x0r)$%#CRzlZdw_K_M<&+c zWTuO~t4D@-oo}Bi_yzxj^qvD4`OV4F^5tGnLKX}xlG}IGSCTL%YoCR$lcpo;PVcAY z%>DT2;kND6!xzd0Hf$~8v$}C^gG^EG=3H?sc^HxR7^j*(IB+0dJm6JXpiA|ihbTF^ zjv6wO>!>G`y)PJQ$%`Yc4_My}-oRVLW98PMTS1fP`rPks*^d2O9Z0=Fk?=f=ifO;w zK38tPnC}k4{H%<~5raz3QSRmv;+%N#VM)5d>a@I5rOQhfTHQIfUZ;r5%JLxTW3*R) zzRY0%{%%e0b>b<}!_Q27jHfL`t>7t8m0Rg7%0$BPv1U8?W~L zsI&ZFpVwJbQO-}6^Z%7wCUab;FMB9&$;X`L$96`Q)O}6UZvoIKPk<(G?}ZKOMbmKo z@)a%D!A>n+oN!+1f5k20$G+}MH%1&{mHNfvlGKKT_jnwQNa@&^?O_q&4oBPgLg&ZgawgE=yT*M zjIf6~4?Nrrh}qZQXL_<95>xO?G3$Yt4UibGUy6A<0JIr^#C-gv7+D}j4ieMzOELR~ zfHp&rnDSqWIS#~VL1GTa|7uZhhk-W3keHgEiy7(YKWTwS9dsh1lXG-kc@i9MnqP`n zPwA0#MB1zhIbc+-dYz~7z{pY_%=@;UHe%Nvj7g|VZE12DHpWA}-R!u6gpu1fKe@H5 zFw)kxp}OZ>%}I^css1U53`?eIr@emJ`~o3s>1~3KQ&jqkg1J1@gXElK#Eg_Jka?fW z;&e^h%}%jCAD2~bSmrwRwB;$?c(V~67x=|Nzf6q>Q&RhMQkHppPocQz(gA3MGT~Pv zj_qZQ!0oL4g^Xh-*(02PIl_=VqUaYR8Z(3GnMnG%SO@7a`uGxHb3huWK28Zj9dxl& zI_t_vE%lW&B`z4s=2)k?wfxNW<>ysp%5(R-fYm^#T{*mKLmpFX&WE$HDzcMyhm@-;sl_0g)=8=F04KcX zn=O1wYNJ`3H$EY@G?+e0X;u-8C-hKiZp#BrejJgDunPsNru2lJ0V@AQ83Zm~!PrOJ ziahqYGz6gJXIuPsa6JYZ!BO$65oJSQL|F!jmhDF|GaqM^^jFcKsIpDaC&)oIIZBe9n2UXUaAvw6s^TZ=gz z0H%p31(L#m!cP_)1oFHQR~YsroaZ0Oh^qAhKWt(|Zv501Hva{bEE|J$ppyuSTT*0k1gA>*>!$9I<@s zG}2QT|6zpjI8E@z1-qx%j!kx?h$*m*#GhG%e5t{K+^SuL<-gWC;W-n$0en4Q zH(LOLEbSUCxmp4L6E=8m($+`=MghPFHvP$f{LDeHoUXI6%VkVUAr_kEs(`spdJXo; zoh`1#)Cc|?11+NGm)1dmZ6!m5_T%0mnkw30ME`044i|c5yF@Lp1{wPpc==HFIm(%7 z96KyWE3cL^^wD;VvR!@b9`MZizU|X3n(q8U|SG?%7HapPYGGH!<_slYmlLRGggMpF%o9_v`2mS zg2F$uI4vKhz7Qd6vPd`iC((c<1!93#GNj{=JVL*84s2OWnU;5E?R0M$_Xo$p`K4fA zpFb3z?g$b_y1ZXrQ1Ogww{PSGynlT=EsSnEKju%Vfn}#vi9mcRXI~ums$7q6et7TG z8={2;s}=*C)$_kOid5jY3(c+Al!?tIsjkA9Eb{@l=$;Ew2**o+FLbwmdEuenYDGR2 z`_+dZ$M)9rs+%B`=I#Uv#q;)@D!^Wob9#2^s`@h&o0IFGs37~JFRTG8(&n;_`380) zw?aA-+axaN5DG(Y2j|2T^5atse)WmL*%KV#P#KRn#e?a(4SdOb-lZsELGO>XJ4A2E zn=r@8T6;N&zQb>UO6fi?Pr|V|K<({1o=_-zwY z9Jv(LrO2;yDpU80@VV1LDZRp{rooaWzWQxQ+U*D(EyytEffXO8n2Q4u()bhvm+R#` z&p4?yeQ`Ti0p~~;y%Qs$9%`hkA1!QsO59652=A>>H#XlP)hg6Hq-7~&=`sOeKB-dy zz}f0efHd<^BjqRb`3^%~DUCSK)8?5R1z7%D&^|fthdjVMKRm`h)ghE_Oj%1P|KO0m z+g<)R;Ntq{`;li%!Cbb{!lv=S=#W0%Xg3AN_qDD*3i#(XJAu{ByTQ{0hx7t>*49C@ z)iGHL(b)xGFOFc(HAjF@E?Gvl29KVBpkBaU#kczx|w7k&V&HF00Z~l0|st4Tf7PhIabg*j~sPR zNC~U--5z)yGiIkWv^^)lL+sb>8fCdfiApApc&ba_^q#ek8BY( zAlSV3+aQl8xD~_;yoJ(mx6Ko_zNt9~bo>k8h#G&f;YM<`Nmr>6j#yj0Gv)*IF1-tY zI|$fCjU{JYD}YQ%t+WKNDG>9_3oIUBA0$_WJd%CdPxyGN+s$(LkblmrQdjvr#s)lm zAF|tJTb(Yg;p&r1;>}Ot)>+xd5VUX?2!C*0Br{)!J8X!dggtE88IJ zVEPcX1A2h%qxF;t(~3al)9cZgoDD;b&Ce9>&NvhT@eJ=a|ptq zHr<-B*wiY$19^RF31B1V#57hBkWk0#A~7aiE@$*h(IV zVFW)pnggv5_hPw$Pf=||38>73tkSnxgB0OzaAUZHy5$XPU-kAL#az$FQ0QMytc`$V z82H#*99V@Zs$C~6m^-gb1z2NbNbEg4L{4`VCPvsA9u*@j=$9gYO2Kh)up59Vsq?&- z`tEPdn)&bl^sR)X{@DxqhCq|G{DQUn|KdA#N z@+cJnj6k$FeuJ$@?F&cD`(c$n9qM}CYC{bmei{R?A~UzuG152B4p8k+Q4P>tX|Q4f zumZ2JEzQrx*E6nE9ViZQHe@R(Dsk4n_#glRFR(O8t26~-eRzcm_z6qYLg@i0Q1%rx z!O1Iea`BKqfgKBpv6m7v!r%7D1?!JllY#)T2&|%~HWW6bQ#!FW$iQScF-%k4#jEMrcn)YRkFfa!K~Zi;c#FMIB> z3yOJ=wLsv4VB)N*GURi`^ zhj8}2KH!Z|7UJUT~G#xC0mUTRd)|0_)<(C!)7V}Gc`pE?ezb^q= zL1WGiLhFU2xFuPouW(pJ$r5NrThDt&MqNop4-v`xUMOsB5;WUDmS3q-5j|6>h!`IO zn^f}8z?uYi7ntDGE|BoBY%q?m+}i2ZoC<0dA&>6}5@6sQlDy6x~tR#eD|Ly7zGi6op3|D1LgD}!2xR>0VrM!O#VVfkm3wu z1EllTgh7_~2H}mA&n_!e$j<|QkimUo6^8Bcuv;P_9+r1D>zG>)WFxS>xuKzVC3798BM)2Bp$DFxf)$v*{E{q7CCA zvSIX%t)fjI8A zbfAOJ$O*P)U#}aeNbqp)5hh;s(%a*40g8=Kwhwrc?GM1KdRFsbnj|`&%E9#mG&v*! zF0nxdV-P4FD*bj2FR4 zfDVi5&~B-dYz|umY=|{0cG2Oe*ig^89qOCFOa}#?DG2~ffY3CcFxG*J0+<)tCo$dy zs;hd=taBjl!F@a+gtfJ{fXYCHeJ=V79u5Z+8%8-73xzM~ZDFR~F;h||rQ{z|roa@C z0zlKVs;4Pw0^8vMD`iyoxSiAQHNs7>=MNeg>8R3&K;B62dXQ0YbZT3K>2Cu(?5bK zls%aO9#gGu7n;~ncF^xRW#BUoLRQWKwcU^b>`Zcc7Mf)U1wj_AfnYx#uqWBAiiFGdXfc8Ag7dIzqV*p*0XKuQ#x3qnbnx4MGNM#yAxtXc*xqwG_MoykLhO$Xwd z2eqq&tjNG_cZ0zJ5LAWSC8`~G43#_|&aNdl6iL~Mq&tz{X465@(*u`j-?ElNwOR={ zAcKmqZ{@o4!D#?qw%+MLS!fR+x_BU_79)#a4Hs*s@mf5XJ8eBz`cC&KZZr~4wgC5m z-@vsORP;!w6MDeW&>ck?iPCkRx!^C=YKH@5+B_Ig#63vU2Av0Jk#K!=e(70L{L{Lr zGXY&E>mqxp9tEc-@~fRdvE>;T1a8HYEC)ql$#T5+UAVf+RR`vc3Q#Hn?LH_W`cu0v zzbpm5X#)y48c=b1NfIO{zvFVH>rf`L*jKU}Bp<8;g?3Q6fuiYw9H?MHM*$&v_cFN$ zOi>I6Ay&=t4pdI2@z6L3ksxyenRp1OSx~FbTH(4#*iHsVqEI{KCK{!CtQ;1nE0~Q0FpTS8zlmsNR zn|?|~_t=%@HwCyj23Z_@egtI?tkxr^TrG>ap|d);eCuzxyDf~)rqxt9-Tzt8htvK0 zF21bh$wc7?k_J|4dIhRs8{yzE^maU(7hnf-YpI?rKX?RG$U@m5I3i$IBY=e9;ty)R zLRK0DFo)Q0N(l(8$gVe5{-XASJF_5egn$4h2O4iMgSAh9EC#Ik6Kt4>XG2+^y7WdIIZE7iyu-Ei=%_W=Z9(@4ozD@!t;xY=`)nx zXT$kS=j~}KPA2yecKxak;2}^4FCM+Pm&kbGRBp1X1Q{@_vnc7TiicB#hcAH?;+;z~|{j`+nY^NLC zULDVAA#Y@-xS#>+uu90s0nTAT`Y>)wV2t^YA*Usu2SB%A+j#kWO1wmX;w-(5=7%=| z-)@A)Md+ zs;L5Mq@UUf@@Yk0VKU5a!GN+^jRuIEAg^L2@=tWv$zz~=ht*-4awH11WG-~N1$Ufx zUJk{l@p2DJ(>FANW&WiTs_4fsKg6X*z^wjOS1 zvil>GBNXAs0(U6aKLm*ho0p*W(4=od$9^fG4pjlsBpJLz?H7>tz2DfIa&jMxG{T>zvLNeeTvYKPy({=j{EN)tdhP@-opeD3t zeQjh)@E8XuT#18vJu+t6X(-g;fu3jQpKQ>vi$+!g$_h)?;D{6|@Y-3x43LBU4fb=q zcgZ@>Mu0@vJFHK+T~z?4I}QgYs7nH`V{kk!RX<^MPT1uj8S1+u2t%MZJ4o6Ha$RK@ za$%O=WKe0%s>i1kQBw(FWD;TQZV}`UcnkKC7Pl4TDwF9NE2jsRuY3w)aKfh3J!)!b zni4}xK#3h@$}`>-gA@9HE%LxgEsH!^r=L(*0YUEr9E_my4sMizMBZWCQ1>^0k|8X^ z@^cIDc7VReLM-rry@5*`z?zC-05`T_bl~^kVB75~nbiRdptH{QrUuyZoJVp{I{~0> zTC<=wMFt!*%)9pKtke7|S0AVi3OBTXMyy^DtITCnJ(OfYbOJ>)b}>0lAFN&~%W+HC zt71o777xlJN#&qh1P5I6U)D(fY9InW3RljMNkR7j>Lwq)1u=q4`h1W;wH zLBV~3J!4>QC0H3au{xBeEW?1i!=(W|TE!rq)o~5Pbeu1NYep!!Vxt{SA0P$=={`t3 zpwwxKmqN4xh-jkg%xV(I-54j8aU`F$zBEaKB~u%|FQ9WD2*1OEAg%^$Lv3Zau=#2E z4q!ht5ro(!%T)dZ-|zsj5maP9MhF1Ctxy-09q*Gt!wd@8V7(J&66ULb>nbRuvrgyP z`4{Ltjh6_}Q(`*lF#17m$i?cUg3PMA4mxs%GOI`IRRfBE8(pj*G2V9<+g|}PRCx07 zXgVcIvAfpe0euRuO-nvO7Yd?=>B*^$;5s-)RFP^In-2K>=^zQNDe^(?mXLNEBBqa>4 zsjB($-q91q7m&INlU|m>jnR9z0e?Wj5;+2et!i*c)H6|~jZ4JF6V;Z2fhyq4vuKdq zD0wy_E)ASzYk{U0tK0zv8z>08!C~ShIoeJ@q^91%xkcGfxpa5XObcRtxbT6#%osn| zlaF0>ToTu0i-3|JF7lRE`^p4QUa1X(S9cc}cbfgO)^L^<9z0>>q1*Mj35 zp8^Z~bGu#a&f0i>0Xe~BQS$~0*W+I(Ib#ay+z+9p)GNrTv85t{Tb3=V%(-Ek(F^vJ};9CeP0+Q z4)?sk_c5sJxrfB^?v9f^l-jdWoau&wzU2Tp7*yQDUN%`9LDRE5A8N0`JtjDDVwX(gv;aGnOsuh14nBXE1+N58wsl#a~vzLJl2-@^hI^gUM zCCI%5q1FYv>|sX@sCg$%Th9$QWI!JWK88tY28NtyJ+m+gAM&xck_GfBL1m(bc6bVk zFxK}n*;On^XaL3=Bj6s&eGG^eU^hX+?AQw875wdrNzY(?iwHru0c!PMR$u_rdqJ_! z3Kvr&8$17m0hLC%J5Z>Doc1+Gb~sb`0+sm_M?~XwEcjX>I2lxcoeKKa;caiYZvzDt z_PG@nm?D@m?cfebbEw0hz|_*aJRVy4*2WF-k5dHFoU>RQcu z3G0f>bWP8WbwdnJ^UZ?au(XxIl*)_xv*%+p?(@br>FeVka-KQ28!IPB_;{1k!K9|y z^()3QyD32Ffl@%;gS-IO2dL8o7Yh<4Hq84!+_VtWRwWeEy&I zzC50)wryLZCP|YqDyf8&A(7#hP&An$87j183?YO{v$-fTRT_s;q>9LIUCY9N$&R0bxt%1+#491|(< zkT$3qsXfPPc%(jA;b*aHrRTZULf1dfWAwUAEk3R2g(~$#;~we0_;Ng>O~h&vS)~hE z(>#k_q+%OkKgon-M zOk2)(`Rup)AGxqYU7@933J^-eg_sl4>bOdWyB07HC~`khZ+*e~qoGz`MQOys$uHv$ zw1BZql~?NpKVe|Am--X_z!beIJSq_?hAKoAIh7nmGj{6XpF`9|Y$Jr2)wM+ukUhMt zTt>K<2TXE3q?1LI;W=f4B(aasi(uR?W!eVtPZG~iR)_XCL0KE+)c6%_BV0>7E(SNr zbH|&xd%o4bC}UZZqj;`Gwxe-3p%mF#(i~ngzpB+Vjvx%SaE|pZx~Fl*&5peAcH{Sy zVrC~l73`1<+iK(wEitu;*5E$7pL`!2p7kAEDxQ2~EwGGjwX;MSZcX&ERy!mz9eyRd z&_lDB^2spc7uwA{BZhlccb#vue2264_|b9AarNLvIZ2i6CE3qXc{5{En* z+{(t0E{ac^_`rp^f}DzsgkFy8S^Bg(k6d9K+sLfWkAH%0uDW*F0~wk}N^NS$uleH8 z?FaTwaal=dPUHmL$kl)isJ@6fwPXi#t8B)8A=>^_lzN~G(!D?<*+~~RX^~=vWkV9H zQD_w(AIxMy#+tO+2mB~m^1+0aG4R&QnL%FIxk1?NAM5VLc6wZo?i$dB{&)N*{$KqN zcfh}f^%-PHU`u?Uy%WE~Ak=tUQi%hH(Gzt6%rtq2G z1rp)$L@YmH?(t_D2!OAFPaU5!KRxnP_^I_%o~Oi( z$zC6vM^e7ahwB!B9BN$o)OcU{F;raIYgLL~WZtRJFaL&|Xq;>K_JniYcG7-+kfcSG zhb*2NSAzQDoT4t00kX08aF->PFtdOLj~y*S`<8>hu96XvU=8zepqF#!A*G8Eu>oG- zd%=-CDoWsNA1m^!L^wKY>tPY(i!`vg%R=Na zsfFM~zhzHo_wbH@wchMi3b?}}bAsRQybapb2=faa(VvA6{M)QA1Gx89F8mY&jVelR5?3%|Q^6%NFkUSi2)rO#kohrGN4bOh(|z%R4e)6q$*Or< zve#7SLs1Am8$iwE-Aml;j|HJ+0v4n}wxJPhgeXr8g+nb^!Q_A)!zUdt> z9oS;V0p5wH3Y?_iKnEroP@_1hw+G=>RHIRv((i?9pB}yx0t4>quS3%g%%G$Pl;O}i zhH|McjTK1A2lWsNV_t_@rkb9+q@yC23`6jXLnA7Z2q8iULy1ew?LnFaND=Lu@)9|9 zvL}+tu;|^60$~6aO(&_XAV9S0^d@^UhZ*jlTB8wd5minl63YA6rvgq=S=_5@orRJc zo>T!OK=+4Wi7-9f2%f*}DtQjdbzoInFz!JG?jzk&f5$n%K_F+LzrQ#IMA=gSW#C^P zl>Pnb8aTY8s{PeF<#9Ca)tb!-h$>w>g(@R(gSizCMf5;$i%Qes!8rSv&h_hoUU5OI z6XXma-9V=gq*Khwqy11vpeUv)ArKhzopcYFu}L;KztMR$@?kr^pd>sf)^0 z07=H^TY8a)CIYZHU_n{(k55rl0F;YY6~0JU6g5+EVRcV=__O%`V0YDtqcE$gC}l0$ z61klZagL5SDpl!m9+5@bRoe^g2A~xDQU=sTE=ck*L4Zmh0J&&2jUn`6MW$nogdI+F z=)MJN0LKK`y9<5iUviWQ8b^Vg0Hip?9Wn&KS+@gGq-&zf6_TMlYM>0Dj{s5Or*I6( z41n{DWLyj(&@!$(VJ$+xQp7TFegd-G^J5~g)KcSq%t7oKk0^M|SckddB91>8! z=qVXGqi1v(tS9g~|Eiwo&t6YR%JN*bJlz1b*O0YIF9X3pxe|-ZcofWpag!d*U@)_| z?x2M;6ycH+cOfkhT!Mln8k9-Y@(zxlid?@uEIBf>I~Uh~J>b+5l7#jm$HDBEt@AGH&TutYR{62DpL-?tzZd09XX+0Pj7TBhg3#$;;Qn2T)&x}r{C1Gp zJfA8Qg9?NlHGUGIkNx`4EZQ%j6bus}I0Za81|4Ziv56Q0N{(rs>4``&qKCOOf^r{l zBphOu>ALU8F~<jXd~Dhec^2c%XYH z$TZ^^@Wgo~!1Rb#pb(!;pbd+ZTk`WG7vRO20CP%EP$wnG=z;=)!p}h2L4h{|Ywc;s z*M>Y3;5iKL;hY7S!4-gFXlTgNfPw|&7;LYQvk%zB>=%3;_!(E&*pDB@}o0VbK@h87erf(Pq#0T=LtND$z5NY<+;i4$MK`FTVRJ81~gw@?%1!zKTWu$piZomKl97^Ju&g?$d}lS5(!Sr;kwjx-gHhU>w7#1K#^ zOJ4!NFC_iE;kZtE>}c;Zwe=<@TVRvm92Ma)eopkC(h> zKLA{JD!Sbn$3R7Y5E+?y4@euf%D6XA2a+^LD0KyDFmND19k3E43xh^5&VdJ0$zTP* z`j2>xf-lsql&ke721Beykr<$JgDnGyj-}pk@P#6fw*71gjwmV9q$H$h_A0HFE`+cF zC#x8Vge8EA(*HCjfa6t-7qN8*2rXv`DJL8|?O`a!wY4lmEhk5I4|VI5lVLQ`{T_Xd$0iu!=7 zW79sxy1U@iQS5-+|22jw0RP{X2eDQLM*4dY>5m1x1+ZpH=V=zw2NzCnO=MfDN6Dhf z)pnQ68QV|`YKPi=nn;taf;SuKaxpENPXJvIHK?ZNH%|UhnCWT!1ywmp*rV*{FEg<% z(2Eul$X$(OQII{-mZf^{QU3{wyz}Gh{!hMh zwR1#iSmVq-lx;QW{U8tJfn-C!?awNM-@-A!zcyP4ZZ%VL)|4F2+`E=cBoC5Fa^%tB z%K@;7#BcW={05;H01pV1SVWL?AV0%^7SBPfpNR!KRfWC*)pr&m;F;7s=M6TDPz7~2 zGrD$|5D5DO*;3zfDKX0f1pzy?z474XAfxK}h7!)P*ul2BoJ@>Gy~z z1NaLZ8l4`q7|^u#4X~VJfELg5lOv-5VK(-_mKGiy^w)pV zP>XN_+=G-d2>Svwvg7sF$q2Z-KV?S5V9=o^KCp!;GJr-7D7OdzOEReUd&nR<;Sw<% z2c%XSm9Yhl>5mBZIPzVMACas#mo&1gQ@3MPP zCvS?-nIhM!fJPsf6T!I(Y*O`LG-Kd3V%LdKVW+3hE%F#Mo#26!LA{Cb=z7!mFSWS^ zV*CLd9-W&gXy$At399@1+~za4bWXKlmf6QM39Yx;&WR z_s)6YaoD@6Ma$>&%_m9u{0vv4$*Gkl6S z0Z@8?o1;xF!Py4HipOC3pLOUd49@Cd%mmU?7J^7U0+quHM7ygHvY56tszk+7U=An*b{ugaU}uo2haC!f5K@m@ff$ z2cU_^ef9fCUOta?%XJ|VN4JaO&tOUqiS5TjI%`qa9;OahS+O<_uoliN=~jX(64U!3 zm`6-x8lq-!Bhd3}==-T1TmW-o{<>$=`419cNU!LHL_0(lxHgBWdK6=W8wDpDfjtH= zZdTEarBX0_kPdiXc#19R3ql4-Z4<)1B7jDc?N~E9oCF)DkgEeRW)Ym#0eSDI*(k=( zphMX5&=WX_2Y^Y9kVIXM&Ps)t4YTyMf%rCzm=cyoXlRiNBat1!%q8@?P;qqUVLqX1 zO0uXk{U>k2Hqk9Rcj~uuU0jZN+Bf@YQ&43UsC6`jB{*2Naj6F14!u{y>4V5`-gnjT zrW)R+LX8F}=wSC6<9*X6$|#mhAb6aHzygdiAwy$1mpZfvqZ5xe8h?YcWT<8hBM>hg z@dmdJm1pC=JCvF76(*6XTf;eP0s%Il(S3SR8Tvm(2gC3e00LAJgtGi}E)LK-6}yaL zT)Vq=b~DQA_N|A`@UQ9&#m=(mL!*T@o&>U@Tg_UK5t{pt#Gu45EjaV5%Ic6BfxI1?8Kql;Hf5fUZUa<1 z!dS3FvG7g#IqbApt4trP-DWp58M)r4LAfB>St)B6(3ukAMlhZQXR9DFfP@FMy8-7Z zN1P`df&pxJYXToB%jQ%=BWOL@oK9sB;|zN_M*v-__;@57&guvANq`YSe#at{xxYKc z+cknT$*B2eDzi%iz(`8Vg^p!WX2R?+4g#+T*OMVY@Wx&NT>(UHQ~ggEIi3<-3DDHa&k%V9ymi?OfO8b zKobIaxaX5)liK`flG=a%1 z(Dy?UFYc|V=Fp&e0H*iMK3x_8hQ?=^38BpLtm-+9x>)v*Q6pLngk+eO)&gUpiHIXG zVZc&|<^3Eq1D#<@AdWyG{Zp9h`5I@!sB8#M|8dTMf`F<{j=?2@FJRL^_+(B(8fwe7 zA)F2|%M6VdAL*HHM;sDh6F0Jer*+|P`(-cnbzCY&l8(}R%68KmaF3{^z@J!9e< zbd#9-YUiwl37$I^nQqnrM+oSq4DK?H?SoSx_^1NiEIjI3!RzDG*S3TS)b~MiUm)v; zBF36Sf>Qf%Di3H=V3n6T;fJ6lLZ^$7Ob$e1Z2kmH55hu7g9jq0OSf`RcIdRK%a4u6@f0G{%f`JRj0r*Q|Id_bZGM-PV#8N+IMK&uDd z=U}`ILx=_JhdN(`<6g{881BU=H|)xWCZlH30LpF{6dXT^PoiP2Ny7&y)Np=9^Qctm z!ZySKCQi)n`Pm8P|Ab&mhz0@ZMmPqLKhvwL6cSJlT2`NW>(n$$!0aI`VMMRuX*w!z zOIbFWw!@-&4@6QkS`LZ3z+(%@TK|ITV4wdhssn=-Up>Io3aBx)s5dIVgh!;&}+1C84+S0kVMlT?loXMxmOpcz7#x(J%xcfZ5U=DR8Ckx z^a00t${bL`4fAgZi7@j2Zg#y4?;~OcoCO!-85D>XxP<*D&q4KGf6o)d%V(uI7(7A6 zhxPy$G*Sjh7ECvz^a}?@dP4yEapa5Kj-xh2AAldC0fTX%=Js@+6+qfG^+7P$YKc?N z^u=U1yimgK1XVkv8L|y(GXoa~+#}(mVKBHFYANmg%91}HXsk;u#(atDoX*S zVLD=<8xE#);h}Uj1t4mxDbTi&=Jba!1)saAl7t9|thTNsht(f;Qy?9l&Uj43MiE&7 z+ZlQ`6o;f!3d_gFaj^uk96hu$kmCWq2zu~Dd6-VnNI00agGiq~yl6Aw5Jn-B>dIZo z1e^;FlH6nbg-xx4=Va)KBX$NF+k+$1h;5*{(=h|BQ|Uf6VU`1y58)SZ`pGyHQ&{nt zZcXfF(P4FXJYaq8j+PZ55pk2>&({4!dc`15)$1V;5MZn>6Lz}kY4|h@0cZZ05kLdi z+Q|>23X}#9)*?di6!|Zm5n=xo*jlN$m->tYx=Z*}Dwd3C;EMW)6ZFSvl&P6qUf0-p z>@KG~TlS`Sh0Q+8+S|Ae)V#`_Tb4D-%qq^|^p$x_XHqtYnVP9O--8d))F~dg{PeVY zk{qtmg+?#!XoTRT84s#TIvv7;?X`s4oUa8eBXrDy`!V<_Os&&+U{aWGb-E*@D&xXXf`fuTGI zcE+jZnCfLE5a=E=in;z7$Lp$0z(3+zGZ>+waVgv;y#Y~zGT)EaEs zObx&m_;62DT$i}>$i_ggGe0cG8s*$B-R=xNR4!{-;`DyPLci!m2G+;X(gtf2RxdJj z`1H)nM=JBozH;tQ?AUWckRJu>V-MJ5IoJex)j3nv^9E2T(aelHYM{Kqy=%fpis04i zz7c$xK)C_N0S}$@!|n`Nw}>*Z3+iKenwP%tWt4<##u!q_=giLvzh0tQ-{k##k=fx{ zKjfDKBot3kBA~~C`T;!B_M*lLm$ELNhd*u47-ID3RtYf)ei4nrgW7rlv|=Pd5&?Iy zKTk(b6ru#_oHq@x`Ay>CYV0(z@i1GPz^v+;L<#9aC~CUEhf|SP0aY2630Cc*7x4t^ z3w}^ErMWD|qQJ3UV_>EVrnUcC=yaB(yeFCKFh| zjm@(Y{6(c*B>-(@fymYdhr*_AEuv7K(I3?e%fI!lhh(0jBY=}ohy-XgOkD6Y$^*lS zD7-rl{nG#SXh;)1<*EC`-Y1*?rp!9qJP$5_Kny5?1kP~S8@~}o`_~s-2TyF3a8*@@ zctznO0erl@ARmEeEwMFXo;3h#3D22$EV2z?CrD4vB%ZoQ$|#=`mI2z}GS9n2G!}Sp zae}6wkXlrEcFbiv1xx~5!iB6gH2!PuUoAQQZ2ia(eg$U`i5=`(lWvoaydb|-0EBaITTadQ z?b)FzoxO0d9M^`r-~&d5`C22o)Z2{Sf)jm6CvGQ6VHr ztThkRc$jT10JFg#SelV3J6t3Z{)}XVU94Oj@IzBD-{zq{AbSxEqe16*ur8^sHyI0} zVy>!j0Pz$d0qnjbN2DaJ znc^wxuOKgoveN|J`WMt(MIABG)9d6K#-kB?cxm>Oc+^XHT2B10EQzHt5G0hf;m96K zFc}FoXzZt-NvZ1>jKkNH!)op$y0P>vJ`aZkmw&2ZkNL8dFp7;;|uExm4Oo|3+1Kwv{cH8vya z1pOWaOc^ce@rV>r&PG$3cFl+pq1qb=QYsLB%CYAlxK)mz$7kaeb=#=b#{te)0i9UQ z@>3DIEy!uG(((ES7(>D$m52IQGGGDQO05f@qXEZ+^SfAL2jPoSe->vgmbNL`7SBrH zp^v9`Xi0s>r>I+j!3H9TW`LaC#>g51Fi{O+J=e0x@l(K{#DVo#YCHpd)X6Q~SX1tx z(l;pX1bX4O%b+upQaiw^01<&z5a$fDRW|$zAS+NK#w4CbiRcS7ov%W8UPF7JspAGT zBbX_qlonN#Fx}|W61ac3{pR)j^h5?kg?B`kw1XYYIMT(NjIS9GkH5iDKQJJy#gCUy zU^W<%)=N&8hmk=66U_NG=5ZQ-?1Gk}sr#@;u2wD_zfK)wcszN6C>I{Q^uC03RYGg2t_Z&7X&x2{@-u{R zpdoolF1rH`898s2!TyerwJ(h;N3D#p8V%eKJb8wzPk$C+AZ9QD0Zt2lC@TuWR?tJ9 zmV1K1I^Z;3Rx7Nx5J*7P9}5Ri-{51NjlTGSlu`!9pd>q}&VqX~%{8f^jd9D#fw~RY z05C?;Y3_nQAY6i_V7ZUMmWXr^M!GZo;k_azffNHvJ;jc*Bv_fTFd@h|!u#Df9z^Z8Kw3=CfLmbJ1?|5G#^%g2&A>TrP#QhN*wZBMgG1JQ%5%~P zMN+xX zdy*>tilI()qV6l zoL$lC)*M&_&a8jYUM@wZz06m#&Z^c|T6|1AZcxirRJd*od{|MA&eeKRtwKAtwd&aC zK_j2m69ZB97s|A&TE`UCh^B*+QQ5()`mT|sZ=$SQ74;31AJkaH>9^HXTv0X99GM)| zv~1N%mNe7~aniDERkS9WilS9Ef)k1hm}?s-lZ2eqh=W9p|^pWjlS- z_=#P6%)X{+@Q5X|hFkT|H}Qc^Jq1yvZ?+C{T9&bvzr~ja&-~OdS<2ATHy12%K(EzP zmu#+A?sA*-L1OT69oV_{aOoSzi)c6F^eTvkUGsVcjKqfQ5-}W6=UGi?nimc)tjISIv zJl-_NMqh7ezS{G%uS%~Lt&LZGVA#dlPc_rOC@CWXtKM-B*8w|_jc;8EGnm$C+C zF`+M~90&=_l@}K8T*LMvB(lDgTmE#rc1$R%{f%=bTHM;zcXRH3T=vMQS~!$ZHcaSO zz=nx~pFgl3mtOyBpGt?gZ9>p-&5M;S6?a?IoHyEAqeabQII22t{%VGW42!_e8yKV< zuj+6xGcb70ox{Ke-nn2Q>}YLkZf9y@a^6lDy@+kUU}+J0x8A32$BOH{0>kSz67R06 zeXDd;D^s8{>x7m}BL{(D>7HjPdGcDsETcAtm238Tu3u$ACQcgp5{@YIUy(7*)6&1Q z$?E`vxW=0J8ose9%bgGIyw%aw)_lRCVmntMyp>1p<8l@2(uHpq?tgLUz^>|^+gn8} z=G}R4wEN+Q;K0v!bSI;0{A%kC>=jn`TJ16M9-Js z{m}>Sh{k&9)~+a0>m19NENI{P*kZkYjXUe+qK!;0J&@(gxatB)>o zxv+3UA9tE+U%gSkePPGdEDzQ3ccaqdu_qNdPela&E)vMhod~>k{GPE*xU8SsNVL?& zIoaQILO-Zgvqd-WxWd^c760O}@JY55>G5R+W%D%VmgExFr)Oq-eLd9P^ytvN52wN% z({;^yAKy*gD{U(L{_D~&=cG!v6rI1~cJE}@l|6P@sbuxOt1=6Wl-b)HpO#B)_>enV zda%8S@b2s4JN@}_-(HCI2C(gEX_o!*g!nkI=vVB|jqbZJ$48D9(^zZ8C9(F>4{eqq zhLl2ufxh`EmxFiTA`tJNP+<9~w~2dSnTWMq)vcymjqgsz2sAd3p5pMm6XJh$i!;PX{oopt*kFZU(9w<>} z&T$%O|1sQY={DvZl5z33b8}vz|8qI7p$mzn%JHdVy@dq?-iT0d={=ldRkeljjGG25J)hbHGO=i)J1IFM0A;VP51l3HhNt zS4_tqk|PwoBosq8J6}w9Te#_CaXwU&LV**Hr$^% zFJjX8d#o~VPlohQ`RvhQn}b8G?`}pra^D~i=MkQ3?2e0x{!*J`Z&gs`?Dp$hQ$u*z zW+|UnWj^O7h26t>LpNs(E>h-}D`z>ps&Q;<%R1#CWm2!bi;Kg9mVWT>ieB}ZXsjK} zA$L7L-t!=*OG|II90`jy%ln-@fYi= zv~SO~Bw{npRvn7A(zX8*1>Q~SxTlpGlVMUN6m50fz9j0zvBm`Kt)!06QL53~V>6OE z4)-2@>naQX1mChcVP79rf2=X3BSkAUHp8;Y5_?M^IxZ$7p`$oz`X3xjYLf*zo+To?&J_rQYbK8#LmPQxxqv%$?JMh#ZgfXTP1~Z(?uLiijf=6 ziivq&e^GH%oFhR=p~iF(CzDC!21~Id@9Sw5MO_!HCwX1Mv1l)*g zdF1KzKYQi>?rtjNHjfwVBL}tftRfjbc0V}eduwXv|L~h~WV$P8Xp7dge6*Lb)BmKW zE!M_YYIDd=zfwrZn3n{W0F{%@?s zzn$mS)PLk}uPfwsjTb19zqa#ml8hqVErxu(r~dQayf&rQ&hsDnTlbPV%|Q?K4c=TB z{+&?D_?$JeGv3-TYw~ApXEK;RA z-oO8Hg0H;7o8^2#GyIIb`5kyaMhc^vD$ZIS&#UlaT7uV2~sr`AhJ9?{++`+o7l z4%_pYwY>ZLNVfyOXg6+X&5tkaR`okpykTvZTa+Q;R{xr1%l{@y-?n(Hn(U~DbX>#(j%!^ z>d?CNBl(Z7m;5NRy_cOf9=5aBe@Srb#b3;2P$hEtNy zRms6BI_cUUwmY}l?``aD<1SfgPH=efsEDL-$_FTInE#KfZ ze4R9vbl*Qr<> zJUNa|6}+A+-)eHE<{r5vFy{xUPe*$Gj;asc`3ek+=YCam>F&R&18+`iylc_?sA(a9ol!in0P*Rvvf>@1&4-TI{WXnif8}nuTPZ`Qf2ATAF0YP{>y;$<2yA65lf zTz~n>E9PZR)(6cxtAcK|ctst5zl6xIXRN-PJ{DhhQ6%KUcE-i$)xXQ$_ddtkxp0E0 zKYAg$I`j3x#9zTa(d}`ymd~tfnuU%XT4k@p-uWT(zQr3W1E+PX%?S5*f3`RLv_jCV z^z?G^(lpDwy2KK-`*n+j=O5erjB()D=*_Z&Z&C*H-jJfIm>y?n|J?bOd~Jj$?V=-N z>+9>CL-RB~>qWW?$bbJ#*xsCM`Mt744yhJ1!`WJW%pzkx14Ak+0|OHl&UWXWEKKZR zAXnD9w=T_XJbl^tvP|<{)qq0*tC?;e?%qC5bliVn z?V5s=pSvv|a0#maEU@MdWiM;bd!W|I;(4V{I)SvbJmp+?UqJI<;Z&QfL!4!_-_|26 zEs{Q6OxwGdo8-uBYit$z8|NCGowLti-^kwLmQVJc#+TW*ZU4Qpt#5PFl?{s(b~<`K zeY;hta-&k?+rjbe3Y$_@uWnGyxU^$acHF(g?`l^b5aA6d^!|__bZ?nlsonNZUURFG zi3+!pMa=-`UsV22R12P``tZ$3IVd+sg;uTO{4PxNJv1oOWC<|r$8UiA^FH6T>$k+7ue7OuPZ zu4LI2JtW0lx}>nR@xyD?n?`1*rLXu2zb-Ul)2SLHomqUD??#uV(lSz`e|+0q%gOa! z*$=-5Jh`2JF)Hu4$&20LhZ*NB5Un45C%#o-pU|yeJbtzx6qlr@`qapLeH6;!yR~f7 z_a!2RFAR(Bo3U=^YkuCpmCv-yZl9K4oOY1F27-dKk45^WA>D%Sw}-T1rjonN?pAZJ ztC;9$WTzQLyV^&4|IrPkdtH9u=aTG<*XaLI@-=<}YIx#TmkW+%hg0~sovx7oaS z{Ey7L+?U*{N47B*=N(L1S$~NspeCEEMwd{}G!mQLP-2!@x3`3^@x{s~+qUcKWXbbB zj&crX?O*)${+f_eES(uzm$|>aJ9_%JdIsNsvP!FDo_+2@J~hdtwR(QN>w}}7RvxHQ zb_kQHNZ~gkON)eGyZ|K{Ntdmo_@lvWgtjgy1 z*3f*Fg|Vq}kEW(}*X(@EX3!YilifbV5yP8tgEMQ>ttDK3QQb{t{TeSet!O&u6kp$8 z)^W^PkaOMQD!-VK59G3E?j1u%dITXqGh6{)-^WWl&#e2kJZ;@Ej+rC)7~+<<6Cw4Ju|<3Bdl5{)bo52*F3t@ zT&~%0DL5{K!+@Chw8Ofi!!2`ZXyj^wsbULh#Kc&l-2F#D3|pGXa22uHUzLfawseqS zUpr(kH+S2u@&ye{KWcOrudF3E9*$cmk!tf@&*iT9bH`f>gcXOaLSIRQH8i}RC*1c; z&TD(8fOAX+|FTC7y-Z7&gz2a)KH;BZ-ny}#Envt#a9Pr!9*>8;uFG7@Zwbo~e+^e8 z+coAa3)?;95#nZT%lY9^u8j0+*3R^7LkIgcW9POm&I@Qxjx}2voOp5*8~2KLu|hv~ ztsCvf^x2t7?oiXx^{)ZmN(6~+HJ;>5PuZFnYn-<|Yehi0?!0C$04>Y1m;q>!vcFMP zv}<+V$;?F@%i1@*edUn3@ap?bbB$H*wr?MsD6&cQ2nt=+->>HD8&H3v>3fyHv#z=J z&Q7VHmK4qJG$sCu5GKlAtk@>%w}5BS9@lp zt!V?HsBm-oZZ)%Z*552uCHza&3350@qWod#qNPir{y~xN5airm(PD@`LSehWbteksEy=T(FP6%9dIOI1rs5`;cI{-l0Z@o9J5Qp<`Z zrqR`@o8NnW*q6JNBzX4pX)hix!-L}jlT2;{%0a&+4tnJhdKyh$a_HD7>~9Zl=z7y2 z*%mywtF7nuMgEB5XCI3LVv1P@Zdnwrb(g4>y<1|t;$>JtyzO>tHx0D|B~3oHJ5CGx zOX_S_QJcIAp? z-^I#Ku25k6uth*QMce}+whgc+iXs4d*HKO>3-k*?O_UDB_BJ*v*IL@9^32b zoM+OB|Eg`n7=MagKqtTR0ZEHQ44#H@ zm{&)vuZY>xGOm{+uy9`PS(!)=sV8|-ryn=+nw~niv`IJU)0IzsKeoQ(K2UY2yHs#! z&!=^HR-6u7vMt)1H=CSpe0lYji@@`DYHf2_Gm=Wume>4BD9hYk>Sb_WVsF9b=Ym>1 z%Qw08E>pO(@a$EeN9InRrd?a5eGH%U?UQOMo@nejej`yT^u-lnO__^4=UoDRMyBlA z!uRaOZ4Za&^DkRT{wa$v2of0j#^mJ?5k3fYm|?Xd9k$jHd{o(T3>`z1Pw z^Sw^DUamI1eC?gGAUC(jlT@9J4J{WuOYa}$Ni^Mk(}9o2J2-fsr{Y?ZFj-IO+svFx zr;G|D{0&!1ztoxYQRM7O&tTWwof(lN;_e5D>lpbDoVLoSo)c7O?&>bNiEF7#^9RvW z3E!=g$%m)Z>s1%HXYpw{?y)}{F7(ZOOF_iph65oiKU`1sHfjBkdHut=i10MRBz>h^ zHt|J9ct)Yk=YO{Gr;oQnpN!3uenrpWOvy4uQ<9K9_-kg<;VgV{4ZLhCdNJmGO^xn^^AG1o8c5yuC*a^pcg-+ajKQc#t5W zJMVDQ?}e)80yLESm$P+TzPWsV*}^Ao5{H<-FH@MeG9YpHt(B84_9vf^>>gNRoJ9ST6Ou1^%oQ_M3vU6(NWVRit?TUL4DdPP_&`a4Z zY7=kf0YlqKqa3bF11o;H|FmawG1bjCy7R2r?BZVOxy7=hqlQP_fS3J=5WcBOs0ITE z(*feu3VI(rb?)5%cR^a%h2A}64S?|V-g)CZ%NjY;Esrj{9CLcV_Ry!(bMBlW9DZi> z=(h3xnEPEdzA0)2$6e~YHyY+#_9s#^9%%UGDQvbz!NXthnU~PTZTk*Y3O+gb?1Rh`_WLs0Q7cCOne^Jj9#zco zhPlk?Zb)UJD(g? z8zG(i#4jnd?b(S)C(nC6QrfoTn&$JC-?xYnIJY=Zny->~uSC+CuR%#>XDc2*T9If> z?)w_2II?u5!|rRQ8+7~L>x5Zc7#a(}oKB%_SU@%S#+f3-&rH z)c;Vf&`wR9+}t)8)Eppf|C~IlJAb;loj(uUwKDMkQt&^RYqB&sf6DmO`BP1&cU6k| zt^9FXZ1qnOv0bl|c1Vbd?KpZNH*Uj%mEv=5bLeugv9SenuzT#we|j~Y&HLK!(vLz1 z4+h0m1&?c2*V$=!irif_>^k7tv~KXT zhMl_Sx_#2>S0>YScC&3_yQVWaNz!}zHFQ#8@1$$s?#VnokA{nrdC6bHR@sT%y)D9& zCd9_YCe1dNZ6n*A-MiW52l2734odtg88m;2OfEObf0rwmyW7Km4w&JZGgk;8S;`cb zYJt)Y9}v9X7hY@ z7LLNvex1~r^(-Q@?a66Ff4BTqkVntVpK%r~!mMWzo$V|$$MR@v`Pez@S#4z&=GdU~m42cWS z8U8BPRDMvQ!+59EuF*g2a=n4`1G<%e|QxW-Qjo< lo_X}lEJr*3$qKY1O3pi~x&VYDtn4coc7ka0V}V%m{{VA&?I!>L literal 71128 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%0Ark)pL|5ov)>S>V>V!N0Y@Je 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 T;5fp}PEWBHoHkzuh$a6IrrspJ diff --git a/tests/tests_unit/rules/test_importers/excel_importer_data/missing_view_container_dms_rules.xlsx b/tests/tests_unit/rules/test_importers/excel_importer_data/missing_view_container_dms_rules.xlsx index a76ad585c394a30fb29bd313add15bda55e883b9..d7924253324eda6dde3b4bf2b8d974508d820cd0 100644 GIT binary patch literal 71454 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 L5N%~k5tRIYS+j@GCS;i= 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