cognite-neat 0.123.18__tar.gz → 0.123.20__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of cognite-neat might be problematic. Click here for more details.
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/PKG-INFO +1 -1
- cognite_neat-0.123.20/cognite/neat/_version.py +2 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/_shared.py +2 -2
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/importers/__init__.py +9 -1
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/importers/_dict2data_model.py +1 -1
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/importers/_dms2data_model.py +1 -1
- cognite_neat-0.123.20/cognite/neat/core/_data_model/importers/_graph2data_model.py +299 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/importers/_rdf/_base.py +1 -1
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/importers/_spreadsheet2data_model.py +3 -2
- cognite_neat-0.123.20/cognite/neat/core/_data_model/models/_import_contexts.py +82 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/conceptual/_validation.py +3 -3
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/physical/_validation.py +33 -3
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/transformers/_converters.py +4 -4
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/_contextmanagers.py +8 -6
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/_factory.py +10 -7
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/warnings/_models.py +9 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_store/_instance.py +1 -1
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_utils/auxiliary.py +1 -1
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_base.py +4 -0
- cognite_neat-0.123.20/cognite/neat/session/_session/_data_model.py +154 -0
- cognite_neat-0.123.20/last_changelog_entry.md +4 -0
- cognite_neat-0.123.20/last_git_message.txt +39 -0
- cognite_neat-0.123.20/last_version.txt +1 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/pyproject.toml +1 -1
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/__init__.py +1 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_graph/car.py +6 -6
- cognite_neat-0.123.20/tests/data/_schema/conceptual/info-arch-car-rules.xlsx +0 -0
- cognite_neat-0.123.20/tests/data/_schema/physical/car_dms_rules.xlsx +0 -0
- cognite_neat-0.123.20/tests/data/_schema/physical_invalid/views_without_properties.xlsx +0 -0
- cognite_neat-0.123.20/tests/tests_end_to_end/test_rules_flow/test_excel_importer_to_yaml_new_endpoint.yml +665 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_end_to_end/test_rules_flow.py +29 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_plugins.py +19 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_importers/test_excel_importer.py +12 -1
- cognite_neat-0.123.20/tests/tests_unit/test_rules/test_importers/test_graph_data_model_importer.py +126 -0
- cognite_neat-0.123.20/tests/tests_unit/test_utils/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/uv.lock +1 -1
- cognite_neat-0.123.18/cognite/neat/_version.py +0 -2
- cognite_neat-0.123.18/last_changelog_entry.md +0 -5
- cognite_neat-0.123.18/last_git_message.txt +0 -35
- cognite_neat-0.123.18/last_version.txt +0 -1
- cognite_neat-0.123.18/tests/data/_schema/conceptual/info-arch-car-rules.xlsx +0 -0
- cognite_neat-0.123.18/tests/data/_schema/physical/car_dms_rules.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/.coveragerc +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/.gemini/styleguide.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/.github/CODEOWNERS +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/.github/pull_request_template.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/.github/renovate.json +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/.github/workflows/code-quality.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/.github/workflows/release.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/.gitignore +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/.pre-commit-config.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/.readthedocs.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/CODE_OF_CONDUCT.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/CONTRIBUTING.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/LICENSE +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/README.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cdf.toml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/codecov.yml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_client/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_client/_api/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_client/_api/data_modeling_loaders.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_client/_api/neat_instances.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_client/_api/schema.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_client/_api/statistics.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_client/_api_client.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_client/data_classes/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_client/data_classes/data_modeling.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_client/data_classes/neat_sequence.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_client/data_classes/schema.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_client/data_classes/statistics.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_client/testing.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_config.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_constants.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/_constants.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/analysis/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/analysis/_base.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/catalog/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/catalog/classic_model.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/catalog/conceptual-imf-data-model.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/catalog/hello_world_pump.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/exporters/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/exporters/_base.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/exporters/_data_model2dms.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/exporters/_data_model2excel.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/exporters/_data_model2instance_template.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/exporters/_data_model2ontology.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/exporters/_data_model2yaml.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/importers/_base.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/importers/_base_file_reader.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/importers/_rdf/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/importers/_rdf/_inference2rdata_model.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/importers/_rdf/_owl2data_model.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/importers/_rdf/_shared.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/_base_unverified.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/_base_verified.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/_types.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/conceptual/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/conceptual/_unverified.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/conceptual/_verified.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/data_types.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/entities/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/entities/_constants.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/entities/_loaders.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/entities/_multi_value.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/entities/_single_value.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/entities/_types.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/entities/_wrapped.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/mapping/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/mapping/_classic2core.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/mapping/_classic2core.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/physical/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/physical/_exporter.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/physical/_unverified.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/models/physical/_verified.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/transformers/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/transformers/_base.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/transformers/_mapping.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/transformers/_union_conceptual.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/transformers/_verification.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/_shared.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/_tracking/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/_tracking/base.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/_tracking/log.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/examples/Knowledge-Graph-Nordic44.xml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/examples/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_base.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_classic_cdf/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_classic_cdf/_assets.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_classic_cdf/_base.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_classic_cdf/_classic.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_classic_cdf/_data_sets.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_classic_cdf/_events.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_classic_cdf/_files.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_classic_cdf/_labels.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_classic_cdf/_relationships.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_classic_cdf/_sequences.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_classic_cdf/_timeseries.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_dict.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_dms.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_dms_graph.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_mock_graph_generator.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_raw.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/extractors/_rdf_file.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/loaders/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/loaders/_base.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/loaders/_rdf2dms.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/loaders/_rdf_to_instance_space.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/queries/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/queries/_base.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/queries/_queries.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/queries/_select.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/queries/_update.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/transformers/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/transformers/_base.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/transformers/_classic_cdf.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/transformers/_prune_graph.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/transformers/_rdfpath.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_instances/transformers/_value_type.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/_base.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/errors/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/errors/_external.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/errors/_general.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/errors/_properties.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/errors/_resources.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/errors/_wrapper.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/formatters.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/warnings/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/warnings/_external.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/warnings/_general.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/warnings/_properties.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/warnings/_resources.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_issues/warnings/user_modeling.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_shared.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_store/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_store/_data_model.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_store/_provenance.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_store/exceptions.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_utils/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_utils/auth.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_utils/collection_.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_utils/graph_transformations_report.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_utils/io_.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_utils/rdf_.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_utils/reader/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_utils/reader/_base.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_utils/spreadsheet.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_utils/tarjan.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_utils/text.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_utils/time_.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_utils/upload.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_utils/xml_.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/plugins/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/plugins/_issues.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/plugins/_manager.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/plugins/data_model/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/plugins/data_model/importers/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/plugins/data_model/importers/_base.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/py.typed +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_collector.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_drop.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_experimental.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_explore.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_fix.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_inspect.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_mapping.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_plugin.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_prepare.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_read.py +0 -0
- {cognite_neat-0.123.18/tests → cognite_neat-0.123.20/cognite/neat/session/_session}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_set.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_show.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_state/README.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_state.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_subset.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_template.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_to.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/_wizard.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/engine/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/engine/_import.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/engine/_interface.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/engine/_load.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/session/exceptions.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/dev.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/DataModelCDF.PNG +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/DataModelInstancesCDF.PNG +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/DataModelInstancesVizCDF.PNG +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/aml-dm-cdf.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/aml-dm.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/aml-instances-cdf.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/aml-instances-full.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_dms.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_dms_typed.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_populated.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_populated_with_typed.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/authorship.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/base-components.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/bid_capacity_data_model.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/change_validate_step.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/connecting_metadata_dm.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/connecting_metadata_populated.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/connecting_metadata_published_dm.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/container_spec.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/core_extension.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/core_extension_excel.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/core_extension_no_connection.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/core_extension_with_properties.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/data-exploration.gif +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/data-model-nordic44.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/data-modeling-flow.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/dexpi-dm-cdf.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/dexpi-dm-viz.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/dexpi-graph-viz.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/dexpi-instance-cdf.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/dexpi-transformed-graph-viz.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/dm-classes.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/dm-object-shapes.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/dm-prefixes.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/dm-source-to-solution-mapping.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/dm2cdf-asset.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/dm2cdf-mapping.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/execution-history.gif +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/export_dms_config.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/export_dms_executed.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/export_dms_workflow.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/features.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/graph-etl-flow.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/high-level-io.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/instances-nordic44.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/instances-sheet.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/key-aspects-of-neat.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/knowledge-graph-viz-filtering.gif +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/knowledge-graph-viz.gif +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/life_cycle_analitic_solution_export_dms.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/life_cycle_converter_model_analytic_solution_model.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/life_cycle_download_reference_model_analytic_soluteion_model.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/life_cycle_download_reference_model_analytic_solution_model_export.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/logo.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/metadata-sheet.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/multi-hop.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/neat-high-level.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/neat-two_flows.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/neat_shift_tab.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/neat_tab.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/prefixes-sheet.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/pump_hello_world_published.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/rdf-in-nutshell.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/rdf2cdf-graph-change.jpg +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/rdf2cdf-graph-resurrect.jpg +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/rdf2cdf-graph.jpg +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/rdf2cdf-init-run-step1.jpg +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/rdf2cdf-init-run-step2.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/rdf2cdf-init-run.jpg +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/rdf2cdf-post-init.jpg +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/run_workflow.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/sheet2cdf-asset-hierarchy.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/sheet2cdf-running-workflow.gif +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/sheet2cdf-transformation-rules-ui.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/sheet2cdf-upload-rules.gif +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/sheet2cdf-workflow-steps.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/sheet2cdf-workflow.gif +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/sheet2cdf-workflow.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/step-configurables.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/step-metrics.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/tutorial-notebooks-part-2_graph-capturing-sheet.gif +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/validate_workflow.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/wf-ephemeral-mode.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/wf-overview.gif +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/wf-persistent-blocking-mode.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/wf-persistent-non-blocking.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/wf-start-mode-ui.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/wind_farm_classic_knowledge_graph.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/wind_farm_data_product_instances.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/work-in-progress.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/workflow-context.jpg +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/working_with_metadata_provenance.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/figs/working_with_metadata_published_dm.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/rules/cdf-dms-architect-alice.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/rules/dms-addition-svein-harald.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/rules/dms-analytics-olav.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/rules/dms-architect-rules-raw-filter-example.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/rules/dms-architect-rules-template.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/rules/dms-rebuild-olav.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/rules/domain-expert-rules-template.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/rules/expert-grid-emma.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/rules/expert-wind-energy-jon.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/rules/information-addition-svein-harald.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/rules/information-analytics-olav-ref.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/rules/information-analytics-olav.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/rules/information-architect-david.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/rules/information-architect-rules-template.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/videos/tutorial-1-defining-data-model.mp4 +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/videos/tutorial-1-download-rules-template.mp4 +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/videos/tutorial-1-upload-gql-schema-to-cdf.mp4 +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/videos/tutorial-2-graph-capturing-sheet.mp4 +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/videos/tutorial-3-asset-hierarchy.mp4 +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/videos/tutorial-3-decommissioning.mp4 +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/videos/tutorial-3-relationships.mp4 +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/videos/tutorial-3-resurrection.mp4 +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/artifacts/videos/tutorial-4-asset-hierarchy.mp4 +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/data-modeling-principles.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/excel_data_modeling/conceptual/overview.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/excel_data_modeling/conceptual/reference.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/excel_data_modeling/data_model.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/excel_data_modeling/physical/enum.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/excel_data_modeling/physical/overview.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/excel_data_modeling/physical/properties.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/excel_data_modeling/physical/reference.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/excel_data_modeling/physical/views.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/excel_data_modeling/units.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/gettingstarted/installation.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/gettingstarted/why-neat.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/index.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/reference/NeatSession/base.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/reference/NeatSession/drop.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/reference/NeatSession/fix.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/reference/NeatSession/inspect.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/reference/NeatSession/mapping.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/reference/NeatSession/prepare.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/reference/NeatSession/read.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/reference/NeatSession/set.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/reference/NeatSession/show.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/reference/NeatSession/subset.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/reference/NeatSession/template.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/reference/NeatSession/to.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/reference/issues/base.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/reference/issues/errors.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/reference/issues/user_model_warnings.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/reference/issues/warnings.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/reference/overview.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/tutorials/data-modeling/cold_start.ipynb +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/tutorials/data-modeling/figs/data-modeling-flow.png +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/tutorials/data-modeling/files/wind_farm_prospecting_conceptual_data_model.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/tutorials/data-modeling/files/wind_farm_prospecting_conceptual_data_model_expanded.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/tutorials/data-modeling/files/wind_farm_prospecting_physical_data_model.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/tutorials/data-modeling/from-conceptual-to-physical-via-CDM.ipynb +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/tutorials/data-modeling/http_purl.org_cognite_neat_data-model_verified_conceptual_wind_energy_WindFarmProspecting_v1.html +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/tutorials/data-modeling/http_purl.org_cognite_neat_data-model_verified_conceptual_wind_energy_WindFarmProspecting_v1_implements.html +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/tutorials/data-modeling/http_purl.org_cognite_neat_data-model_verified_physical_neat_playground_NeatHelloWorld_v1.html +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/tutorials/data-modeling/my_first_model.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/tutorials/data-modeling/physical-data-model.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/docs/tutorials/introduction/introduction.ipynb +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/mkdocs.yml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/clean_space.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/core_classic_mapping.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/create_classic_core_mapping_yaml.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/dependency_profiler.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/docs_generate_reference.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/docs_generate_unit.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/generate_steps_md.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/.gitignore +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/README.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/config.dev.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/neat_integration_runner/README.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/neat_integration_runner/auth/neat_cicd_testing.group.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/lift_pumps/classic/lift_pump_stations_root.Asset.csv +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/lift_pumps/data_sets/hierarchies.DataSet.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/lift_pumps/raw/collections_pump.Table.csv +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/lift_pumps/raw/collections_pump.Table.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/classic/Measurement.Asset.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/classic/Measurement.Label.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/classic/MetMast.Asset.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/classic/PowerGeneratingUnit.Label.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/classic/Utsira.Asset.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-01.Asset.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-01_to_MetMast.Relationship.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-02.Asset.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-02_to_MetMast.Relationship.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/classic/WindTurbine.Label.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/classic/metMast.Label.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/classic/planned_WT-01_2022-01-01.Event.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/classic/power_curve_manufacturer1.Sequence.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/data_sets/maintenance.DataSet.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/data_sets/source_ds.DataSet.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/data_sets/usecase_01.DataSet.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/files/WT-01_datasheet.FileMetadata.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/files/WT-01_datasheet.txt +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-01_forecast.TimeSeries.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-01_production.TimeSeries.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-02_forecast.TimeSeries.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-02_production.TimeSeries.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/manual_test_dms_importer.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/migration.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/oxi_remote/README.md +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/oxi_remote/docker-compose.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/test_lookup_table.csv +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/scripts/windfarm_to_toolkit.py +0 -0
- {cognite_neat-0.123.18/tests/tests_end_to_end → cognite_neat-0.123.20/tests}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/config.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/conftest.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_graph/aml-raw-graph.ttl +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_graph/aml_example.aml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_graph/dexpi-raw-graph.ttl +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_graph/dexpi_example.xml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_graph/iodd_Piab-piCOMPACT10X-20230509-IODD1.1.xml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_graph/low-quality-graph.ttl +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_instances/asset_centric_cdf/assets.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_instances/asset_centric_cdf/events.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_instances/asset_centric_cdf/files.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_instances/asset_centric_cdf/labels.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_instances/asset_centric_cdf/relationships.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_instances/asset_centric_cdf/sequence_rows.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_instances/asset_centric_cdf/sequences.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_instances/asset_centric_cdf/timeseries.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_instances/classic_windfarm.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/conceptual/broken_concepts.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/conceptual/dangling-properties.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/conceptual/info_with_cdm_ref.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/conceptual/information-unknown-value-type.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/conceptual/only_concepts.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/conceptual/ontology.ttl +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/conversion/single_concept.conceptual.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/conversion/single_concept.physical.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/non_neat/cognite_core_v1.zip +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/non_neat/referencing_core/MyDescribable.container.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/non_neat/referencing_core/MyDescribable.view.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/non_neat/referencing_core/enterprise.datamodel.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/non_neat/windturbine.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/partial-model/complete.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/partial-model/part1.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/partial-model/part2.ttl +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/partial-model/part3.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/car_dms_rules_deprecated.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/dm_raw_filter.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/dm_view_space_different.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/dms-unknown-value-type.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/isa_plus_cdm.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/missing-in-model-value.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/mixed-up-version.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/physical_singleton_issue.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/pump_example_duplicated_resources.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/pump_example_with_missing_cells.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/pump_example_with_missing_cells_raise_issues.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/1.Production.container.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/10.SimNode.container.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/12.SimSubNode.container.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/13.SimEdge.container.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/14.Property.container.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/15.Coordinate.container.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/16.Coordinates.container.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/17.ModelExecutionEnvironment.view.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/18.Coordinate.view.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/19.Coordinates.view.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/2.SimulationModel.container.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/20.SimEdge.view.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/21.ProductionTimeseries.view.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/22.SimNode.view.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/23.Production.view.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/24.SimSubNode.view.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/25.SimulationResultFile.view.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/26.InputProperty.view.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/28.OutputProperty.view.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/29.Property.view.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/3.strongly-coupled-model.datamodel.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/30.SimulationModel.view.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/31.SimNodeAndEdge.view.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/5.my.space.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/6.ModelExecutionEnvironment.container.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/7.ProductionTimeseries.container.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/8.SimNodeAndEdge.container.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical/strongly_connected_model/data_models/9.SimulationResultFile.container.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical_invalid/inconsistent_container_dms_rules.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical_invalid/invalid_metadata.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical_invalid/invalid_property_dms_rules.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical_invalid/missing_view_container_dms_rules.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical_invalid/too_many_containers_per_view.xlsx +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical_yamls/invalid_indices.expected_issues.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical_yamls/invalid_indices.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical_yamls/invalid_yaml.expected_issues.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical_yamls/invalid_yaml.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical_yamls/multiple_indices_on_property.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical_yamls/reverse_direct_relation_missing_target.expected_issues.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/data/_schema/physical_yamls/reverse_direct_relation_missing_target.yaml +0 -0
- {cognite_neat-0.123.18/tests/tests_integration → cognite_neat-0.123.20/tests/tests_end_to_end}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_end_to_end/test_rules_flow/test_cdm_extension_verification.yaml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_end_to_end/test_rules_flow/test_excel_importer_to_yaml.yml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_end_to_end/test_rules_flow/test_ontology_importer_to_yaml.yml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_end_to_end/test_rules_flow/test_to_extension_transformer.yml +0 -0
- {cognite_neat-0.123.18/tests/tests_integration/test_api → cognite_neat-0.123.20/tests/tests_integration}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/conftest.py +0 -0
- {cognite_neat-0.123.18/tests/tests_integration/test_graph → cognite_neat-0.123.20/tests/tests_integration/test_api}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_api/test_conversion.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_api/test_validate_rules.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_client_available.py +0 -0
- {cognite_neat-0.123.18/tests/tests_integration/test_graph/test_loaders → cognite_neat-0.123.20/tests/tests_integration/test_graph}/__init__.py +0 -0
- {cognite_neat-0.123.18/tests/tests_integration/test_neat_client → cognite_neat-0.123.20/tests/tests_integration/test_graph/test_loaders}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_graph/test_loaders/test_dms_loader.py +0 -0
- {cognite_neat-0.123.18/tests/tests_integration/test_rules → cognite_neat-0.123.20/tests/tests_integration/test_neat_client}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_neat_client/test_cdf_loaders.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_neat_client/test_statistics.py +0 -0
- {cognite_neat-0.123.18/tests/tests_integration/test_rules/test_exporters → cognite_neat-0.123.20/tests/tests_integration/test_rules}/__init__.py +0 -0
- {cognite_neat-0.123.18/tests/tests_integration/test_rules/test_importers → cognite_neat-0.123.20/tests/tests_integration/test_rules/test_exporters}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_rules/test_exporters/test_dms_exporters.py +0 -0
- {cognite_neat-0.123.18/tests/tests_integration/test_session → cognite_neat-0.123.20/tests/tests_integration/test_rules/test_importers}/__init__.py +0 -0
- {cognite_neat-0.123.18/tests/tests_integration/test_utils → cognite_neat-0.123.20/tests/tests_integration/test_session}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_session/test_create_enterprise.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_session/test_data_model_prepare_fix/test_prefix_dms_rules_entities.yml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_session/test_data_model_prepare_fix/test_prefix_info_rules_entities.yml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_session/test_data_model_prepare_fix/test_standardize_space_and_version.yml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_session/test_data_model_prepare_fix.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_session/test_data_model_to/test_raw_filter.yml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_session/test_data_model_to.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_session/test_graph_flow/test_aml_to_dms.yml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_session/test_graph_flow/test_create_extension_template.yml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_session/test_graph_flow/test_dexpi_to_dms.yml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_session/test_graph_flow/test_snapshot_workflow_ids_to_python.yml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_session/test_graph_flow/test_snapshot_workflow_to_python.yml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_session/test_graph_flow/test_uplift_workflow_to_python.yml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_session/test_graph_flow.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_session/test_read/test_read_model_referencing_core.yml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_session/test_read.py +0 -0
- {cognite_neat-0.123.18/tests/tests_unit → cognite_neat-0.123.20/tests/tests_integration/test_utils}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_integration/test_utils/test_reader.py +0 -0
- {cognite_neat-0.123.18/tests/tests_unit/test_graph → cognite_neat-0.123.20/tests/tests_unit}/__init__.py +0 -0
- {cognite_neat-0.123.18/tests/tests_unit/test_graph/test_extractors → cognite_neat-0.123.20/tests/tests_unit/test_graph}/__init__.py +0 -0
- {cognite_neat-0.123.18/tests/tests_unit/test_graph/test_loaders → cognite_neat-0.123.20/tests/tests_unit/test_graph/test_extractors}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_extractors/test_asset_extractor.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_extractors/test_dms_extractor.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_extractors/test_dms_graph_extractor.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_extractors/test_events_extractor.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_extractors/test_files_extractor.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_extractors/test_labels_extractor.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_extractors/test_raw_extractor.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_extractors/test_relationship_extractor.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_extractors/test_sequences_extractor.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_extractors/test_timeseries_extractor.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_graph_read.py +0 -0
- {cognite_neat-0.123.18/tests/tests_unit/test_graph/test_transformers → cognite_neat-0.123.20/tests/tests_unit/test_graph/test_loaders}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_loaders/test_dms_loader.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_loaders/test_rdf2dms.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_loaders/test_rdf_to_instance_space.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_provenance.py +0 -0
- {cognite_neat-0.123.18/tests/tests_unit/test_issues → cognite_neat-0.123.20/tests/tests_unit/test_graph/test_transformers}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_transformers/test_asset_depth_transformer.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_transformers/test_asset_event_connector_transformer.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_transformers/test_asset_file_connector_transformer.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_transformers/test_asset_relationship_connector_transformer.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_transformers/test_asset_sequence_connector_transformer.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_transformers/test_asset_ts_connector_transformer.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_transformers/test_attach_property_from_target2source.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_transformers/test_connection_to_literal.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_transformers/test_make_connection_on_exact_match.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_transformers/test_prune_graph.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_graph/test_transformers/test_split_multi_value_property_transformer.py +0 -0
- {cognite_neat-0.123.18/tests/tests_unit/test_neat_client → cognite_neat-0.123.20/tests/tests_unit/test_issues}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_issues/test_formatters.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_issues/test_issue_behavior.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_issues/test_issues_metatests.py +0 -0
- {cognite_neat-0.123.18/tests/tests_unit/test_rules → cognite_neat-0.123.20/tests/tests_unit/test_neat_client}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_neat_client/test_instances.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_neat_client/test_loaders.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_neat_client/test_schema.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_neat_package_metadata.py +0 -0
- {cognite_neat-0.123.18/tests/tests_unit/test_rules/test_exporters → cognite_neat-0.123.20/tests/tests_unit/test_rules}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_analysis.py +0 -0
- {cognite_neat-0.123.18/tests/tests_unit/test_rules/test_importers → cognite_neat-0.123.20/tests/tests_unit/test_rules/test_exporters}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_exporters/test_exporters_meta.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_exporters/test_rules2dms.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_exporters/test_rules2excel.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_exporters/test_rules2ontology.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_exporters/test_rules2yaml.py +0 -0
- {cognite_neat-0.123.18/tests/tests_unit/test_rules/test_models → cognite_neat-0.123.20/tests/tests_unit/test_rules/test_importers}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_importers/constants.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_importers/test_dms_importer.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_importers/test_inference_importer.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_importers/test_owl_importer.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_importers/test_subinference_importer.py +0 -0
- {cognite_neat-0.123.18/tests/tests_unit/test_rules/test_transformers → cognite_neat-0.123.20/tests/tests_unit/test_rules/test_models}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_models/test_asset_rules.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_models/test_base_rules.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_models/test_conceptual_model.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_models/test_data_types.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_models/test_dms_schema.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_models/test_entities.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_models/test_input_rules.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_models/test_physical_data_model.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_models/test_wrapped_entities.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_models/utils.py +0 -0
- {cognite_neat-0.123.18/tests/tests_unit/test_session → cognite_neat-0.123.20/tests/tests_unit/test_rules/test_transformers}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_transformers/test_converters.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_transformers/test_mapping.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_transformers/test_transformer_meta.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_rules/test_transformers/test_union_conceptual.py +0 -0
- {cognite_neat-0.123.18/tests/tests_unit/test_store → cognite_neat-0.123.20/tests/tests_unit/test_session}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_session/test_flows.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_session/test_meta.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_session/test_plugin.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_session/test_read.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_session/test_to_yaml.py +0 -0
- {cognite_neat-0.123.18/tests/tests_unit/test_utils → cognite_neat-0.123.20/tests/tests_unit/test_store}/__init__.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_store/test_select_queries.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_store/tests_rules_store/test_import_export.yml +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_store/tests_rules_store.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_utils/test_auxiliary.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_utils/test_cdf_classes.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_utils/test_rdf.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_utils/test_reader.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_utils/test_tarjan.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_utils/test_text.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/tests_unit/test_utils/test_utils.py +0 -0
- {cognite_neat-0.123.18 → cognite_neat-0.123.20}/tests/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cognite-neat
|
|
3
|
-
Version: 0.123.
|
|
3
|
+
Version: 0.123.20
|
|
4
4
|
Summary: Knowledge graph transformation
|
|
5
5
|
Project-URL: Documentation, https://cognite-neat.readthedocs-hosted.com/
|
|
6
6
|
Project-URL: Homepage, https://cognite-neat.readthedocs-hosted.com/
|
|
@@ -5,13 +5,13 @@ from cognite.neat.core._data_model.models import (
|
|
|
5
5
|
ConceptualDataModel,
|
|
6
6
|
PhysicalDataModel,
|
|
7
7
|
)
|
|
8
|
+
from cognite.neat.core._data_model.models._import_contexts import ImportContext
|
|
8
9
|
from cognite.neat.core._data_model.models.conceptual._unverified import (
|
|
9
10
|
UnverifiedConceptualDataModel,
|
|
10
11
|
)
|
|
11
12
|
from cognite.neat.core._data_model.models.physical._unverified import (
|
|
12
13
|
UnverifiedPhysicalDataModel,
|
|
13
14
|
)
|
|
14
|
-
from cognite.neat.core._utils.spreadsheet import SpreadsheetRead
|
|
15
15
|
|
|
16
16
|
VerifiedDataModel: TypeAlias = ConceptualDataModel | PhysicalDataModel
|
|
17
17
|
|
|
@@ -32,7 +32,7 @@ class ImportedDataModel(Generic[T_UnverifiedDataModel]):
|
|
|
32
32
|
"""
|
|
33
33
|
|
|
34
34
|
unverified_data_model: T_UnverifiedDataModel | None
|
|
35
|
-
context:
|
|
35
|
+
context: ImportContext | None = None
|
|
36
36
|
|
|
37
37
|
@classmethod
|
|
38
38
|
def display_type_name(cls) -> str:
|
{cognite_neat-0.123.18 → cognite_neat-0.123.20}/cognite/neat/core/_data_model/importers/__init__.py
RENAMED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from ._base import BaseImporter
|
|
2
2
|
from ._dict2data_model import DictImporter
|
|
3
3
|
from ._dms2data_model import DMSImporter
|
|
4
|
+
from ._graph2data_model import GraphImporter
|
|
4
5
|
from ._rdf import InferenceImporter, OWLImporter, SubclassInferenceImporter
|
|
5
6
|
from ._spreadsheet2data_model import ExcelImporter
|
|
6
7
|
|
|
@@ -9,13 +10,20 @@ __all__ = [
|
|
|
9
10
|
"DMSImporter",
|
|
10
11
|
"DictImporter",
|
|
11
12
|
"ExcelImporter",
|
|
13
|
+
"GraphImporter",
|
|
12
14
|
"InferenceImporter",
|
|
13
15
|
"OWLImporter",
|
|
14
16
|
"SubclassInferenceImporter",
|
|
15
17
|
]
|
|
16
18
|
|
|
17
19
|
DataModelImporters = (
|
|
18
|
-
OWLImporter
|
|
20
|
+
OWLImporter
|
|
21
|
+
| DMSImporter
|
|
22
|
+
| ExcelImporter
|
|
23
|
+
| DictImporter
|
|
24
|
+
| InferenceImporter
|
|
25
|
+
| SubclassInferenceImporter
|
|
26
|
+
| GraphImporter
|
|
19
27
|
)
|
|
20
28
|
|
|
21
29
|
|
|
@@ -128,4 +128,4 @@ class DictImporter(BaseImporter[T_UnverifiedDataModel]):
|
|
|
128
128
|
if self._read_issues.has_errors:
|
|
129
129
|
raise MultiValueError(self._read_issues.errors)
|
|
130
130
|
|
|
131
|
-
return ImportedDataModel[T_UnverifiedDataModel](data_model
|
|
131
|
+
return ImportedDataModel[T_UnverifiedDataModel](data_model)
|
|
@@ -276,7 +276,7 @@ class DMSImporter(BaseImporter[UnverifiedPhysicalDataModel]):
|
|
|
276
276
|
self.issue_list.trigger_warnings()
|
|
277
277
|
if self.issue_list.has_errors:
|
|
278
278
|
raise MultiValueError(self.issue_list.errors)
|
|
279
|
-
return ImportedDataModel(user_data_model,
|
|
279
|
+
return ImportedDataModel(user_data_model, None)
|
|
280
280
|
|
|
281
281
|
def _create_data_model_components(
|
|
282
282
|
self,
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
import itertools
|
|
2
|
+
import urllib.parse
|
|
3
|
+
import warnings
|
|
4
|
+
from collections import defaultdict
|
|
5
|
+
from collections.abc import Iterable
|
|
6
|
+
from dataclasses import dataclass
|
|
7
|
+
from datetime import datetime, timezone
|
|
8
|
+
from typing import cast
|
|
9
|
+
|
|
10
|
+
from cognite.client.data_classes.data_modeling import DataModelId, DataModelIdentifier
|
|
11
|
+
from rdflib import RDF, RDFS, Namespace, URIRef
|
|
12
|
+
from rdflib import Literal as RdfLiteral
|
|
13
|
+
from rdflib.query import ResultRow
|
|
14
|
+
|
|
15
|
+
from cognite.neat.core._config import GLOBAL_CONFIG
|
|
16
|
+
from cognite.neat.core._constants import NEAT
|
|
17
|
+
from cognite.neat.core._data_model._shared import ImportedDataModel
|
|
18
|
+
from cognite.neat.core._data_model.models import UnverifiedConceptualDataModel
|
|
19
|
+
from cognite.neat.core._data_model.models._import_contexts import GraphContext
|
|
20
|
+
from cognite.neat.core._data_model.models.conceptual import (
|
|
21
|
+
UnverifiedConcept,
|
|
22
|
+
UnverifiedConceptualMetadata,
|
|
23
|
+
UnverifiedConceptualProperty,
|
|
24
|
+
)
|
|
25
|
+
from cognite.neat.core._data_model.models.entities import UnknownEntity
|
|
26
|
+
from cognite.neat.core._issues.errors import NeatValueError
|
|
27
|
+
from cognite.neat.core._issues.warnings import NeatValueWarning
|
|
28
|
+
from cognite.neat.core._store import NeatInstanceStore
|
|
29
|
+
from cognite.neat.core._utils.collection_ import iterate_progress_bar
|
|
30
|
+
from cognite.neat.core._utils.rdf_ import split_uri
|
|
31
|
+
|
|
32
|
+
from ._base import BaseImporter
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
# Internal helper class
|
|
36
|
+
@dataclass
|
|
37
|
+
class _ReadProperties:
|
|
38
|
+
type_uri: URIRef
|
|
39
|
+
property_uri: URIRef
|
|
40
|
+
value_type: URIRef
|
|
41
|
+
parent_uri: URIRef | None
|
|
42
|
+
max_occurrence: int
|
|
43
|
+
instance_count: int
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class GraphImporter(BaseImporter[UnverifiedConceptualDataModel]):
|
|
47
|
+
"""Infers a data model from the triples in a Graph Store.
|
|
48
|
+
Args:
|
|
49
|
+
store: The graph store to read from.
|
|
50
|
+
data_model_id: The data model id to be used for the imported rules.
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
_ORDERED_CONCEPTS_QUERY = """SELECT DISTINCT ?concept (count(?s) as ?instances )
|
|
54
|
+
WHERE { ?s a ?concept }
|
|
55
|
+
group by ?concept order by DESC(?instances)"""
|
|
56
|
+
|
|
57
|
+
_TYPE_PARENT_QUERY = f"""SELECT ?parent ?type
|
|
58
|
+
WHERE {{ ?s a ?type .
|
|
59
|
+
?type <{RDFS.subClassOf}> ?parent }}"""
|
|
60
|
+
|
|
61
|
+
_PROPERTIES_QUERY = """SELECT DISTINCT ?property ?valueType
|
|
62
|
+
WHERE {{
|
|
63
|
+
?s a <{type}> .
|
|
64
|
+
?s ?property ?object .
|
|
65
|
+
OPTIONAL {{ ?object a ?objectType }}
|
|
66
|
+
BIND(
|
|
67
|
+
IF(
|
|
68
|
+
isLiteral(?object), datatype(?object),
|
|
69
|
+
IF(BOUND(?objectType), ?objectType, <{unknown_type}>)
|
|
70
|
+
) AS ?valueType
|
|
71
|
+
)
|
|
72
|
+
}}"""
|
|
73
|
+
|
|
74
|
+
_MAX_OCCURRENCE_QUERY = """SELECT (MAX(?count) AS ?maxCount)
|
|
75
|
+
WHERE {{
|
|
76
|
+
{{
|
|
77
|
+
SELECT ?subject (COUNT(?object) AS ?count)
|
|
78
|
+
WHERE {{
|
|
79
|
+
?subject a <{type}> .
|
|
80
|
+
?subject <{property}> ?object .
|
|
81
|
+
}}
|
|
82
|
+
GROUP BY ?subject
|
|
83
|
+
}}
|
|
84
|
+
}}"""
|
|
85
|
+
|
|
86
|
+
def __init__(
|
|
87
|
+
self,
|
|
88
|
+
store: NeatInstanceStore,
|
|
89
|
+
data_model_id: DataModelIdentifier = ("neat_space", "NeatInferredDataModel", "v1"),
|
|
90
|
+
) -> None:
|
|
91
|
+
self.store = store
|
|
92
|
+
self.data_model_id = DataModelId.load(data_model_id)
|
|
93
|
+
if self.data_model_id.version is None:
|
|
94
|
+
raise NeatValueError("Version is required when setting a Data Model ID")
|
|
95
|
+
|
|
96
|
+
def to_data_model(self) -> ImportedDataModel[UnverifiedConceptualDataModel]:
|
|
97
|
+
metadata = self._create_default_metadata()
|
|
98
|
+
if not self.store.queries.select.has_data():
|
|
99
|
+
warnings.warn(NeatValueWarning("Cannot infer data model. No data found in the graph."), stacklevel=2)
|
|
100
|
+
return ImportedDataModel(UnverifiedConceptualDataModel(metadata, [], [], {}), None)
|
|
101
|
+
|
|
102
|
+
parent_by_child = self._read_parent_by_child_from_graph()
|
|
103
|
+
count_by_type = self._read_types_with_counts_from_graph()
|
|
104
|
+
if not count_by_type:
|
|
105
|
+
warnings.warn(
|
|
106
|
+
NeatValueWarning("Cannot infer data model. No RDF.type triples found in the graph."), stacklevel=2
|
|
107
|
+
)
|
|
108
|
+
return ImportedDataModel(UnverifiedConceptualDataModel(metadata, [], [], {}), None)
|
|
109
|
+
|
|
110
|
+
read_properties = self._read_concept_properties_from_graph(count_by_type, parent_by_child)
|
|
111
|
+
|
|
112
|
+
prefixes: dict[str, Namespace] = {}
|
|
113
|
+
concepts, properties = self._create_concepts_properties(read_properties, prefixes)
|
|
114
|
+
|
|
115
|
+
return ImportedDataModel(
|
|
116
|
+
UnverifiedConceptualDataModel(
|
|
117
|
+
metadata=metadata,
|
|
118
|
+
concepts=concepts,
|
|
119
|
+
properties=properties,
|
|
120
|
+
prefixes=prefixes,
|
|
121
|
+
),
|
|
122
|
+
context=GraphContext({"inferred_from": count_by_type}),
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
def _read_parent_by_child_from_graph(self) -> dict[URIRef, URIRef]:
|
|
126
|
+
parent_by_child: dict[URIRef, URIRef] = {}
|
|
127
|
+
for result_row in self.store.dataset.query(self._TYPE_PARENT_QUERY):
|
|
128
|
+
parent_uri, child_uri = cast(tuple[URIRef, URIRef], result_row)
|
|
129
|
+
parent_by_child[child_uri] = parent_uri
|
|
130
|
+
return parent_by_child
|
|
131
|
+
|
|
132
|
+
def _read_types_with_counts_from_graph(self) -> dict[URIRef, int]:
|
|
133
|
+
count_by_type: dict[URIRef, int] = {}
|
|
134
|
+
# Reads all types and their instance counts from the graph
|
|
135
|
+
for result_row in self.store.dataset.query(self._ORDERED_CONCEPTS_QUERY):
|
|
136
|
+
type_uri, instance_count_literal = cast(tuple[URIRef, RdfLiteral], result_row)
|
|
137
|
+
count_by_type[type_uri] = instance_count_literal.toPython()
|
|
138
|
+
return count_by_type
|
|
139
|
+
|
|
140
|
+
def _read_concept_properties_from_graph(
|
|
141
|
+
self, count_by_type: dict[URIRef, int], parent_by_child: dict[URIRef, URIRef]
|
|
142
|
+
) -> list[_ReadProperties]:
|
|
143
|
+
read_properties: list[_ReadProperties] = []
|
|
144
|
+
|
|
145
|
+
total_instance_count = sum(count_by_type.values())
|
|
146
|
+
iterable = count_by_type.items()
|
|
147
|
+
if GLOBAL_CONFIG.use_iterate_bar_threshold and total_instance_count > GLOBAL_CONFIG.use_iterate_bar_threshold:
|
|
148
|
+
iterable = iterate_progress_bar(iterable, len(count_by_type), "Inferring types...") # type: ignore[assignment]
|
|
149
|
+
|
|
150
|
+
for type_uri, instance_count in iterable:
|
|
151
|
+
property_query = self._PROPERTIES_QUERY.format(type=type_uri, unknown_type=NEAT.UnknownType)
|
|
152
|
+
for result_row in self.store.dataset.query(property_query):
|
|
153
|
+
property_uri, value_type_uri = cast(tuple[URIRef, URIRef], result_row)
|
|
154
|
+
if property_uri == RDF.type:
|
|
155
|
+
continue
|
|
156
|
+
occurrence_query = self._MAX_OCCURRENCE_QUERY.format(type=type_uri, property=property_uri)
|
|
157
|
+
max_occurrence = 1 # default value
|
|
158
|
+
# We know that the _MAX_OCCURRENCE_QUERY will return a ResultRow
|
|
159
|
+
occurrence_results = list(cast(ResultRow, self.store.dataset.query(occurrence_query)))
|
|
160
|
+
if occurrence_results and occurrence_results[0] and occurrence_results[0][0]:
|
|
161
|
+
max_occurrence_literal = cast(RdfLiteral, occurrence_results[0][0])
|
|
162
|
+
max_occurrence = int(max_occurrence_literal.toPython())
|
|
163
|
+
read_properties.append(
|
|
164
|
+
_ReadProperties(
|
|
165
|
+
type_uri=type_uri,
|
|
166
|
+
property_uri=property_uri,
|
|
167
|
+
parent_uri=parent_by_child.get(type_uri),
|
|
168
|
+
value_type=value_type_uri,
|
|
169
|
+
max_occurrence=max_occurrence,
|
|
170
|
+
instance_count=instance_count,
|
|
171
|
+
)
|
|
172
|
+
)
|
|
173
|
+
return read_properties
|
|
174
|
+
|
|
175
|
+
def _create_concepts_properties(
|
|
176
|
+
self, read_properties: list[_ReadProperties], prefixes: dict[str, Namespace]
|
|
177
|
+
) -> tuple[list[UnverifiedConcept], list[UnverifiedConceptualProperty]]:
|
|
178
|
+
concepts: list[UnverifiedConcept] = []
|
|
179
|
+
properties: list[UnverifiedConceptualProperty] = []
|
|
180
|
+
|
|
181
|
+
# Help for IDE
|
|
182
|
+
type_uri: URIRef
|
|
183
|
+
parent_uri: URIRef
|
|
184
|
+
for parent_uri, parent_concepts_properties_iterable in itertools.groupby(
|
|
185
|
+
sorted(read_properties, key=lambda x: x.parent_uri or NEAT.EmptyType),
|
|
186
|
+
key=lambda x: x.parent_uri or NEAT.EmptyType,
|
|
187
|
+
):
|
|
188
|
+
parent_str: str | None = None
|
|
189
|
+
if parent_uri != NEAT.EmptyType:
|
|
190
|
+
parent_str, parent_cls = self._create_concept(parent_uri, set_instance_source=False, prefixes=prefixes)
|
|
191
|
+
concepts.append(parent_cls)
|
|
192
|
+
|
|
193
|
+
properties_by_concept_by_property = self._get_properties_by_concept_by_property(
|
|
194
|
+
parent_concepts_properties_iterable
|
|
195
|
+
)
|
|
196
|
+
for type_uri, properties_by_property_uri in properties_by_concept_by_property.items():
|
|
197
|
+
concept_str, concept = self._create_concept(
|
|
198
|
+
type_uri, set_instance_source=True, prefixes=prefixes, implements=parent_str
|
|
199
|
+
)
|
|
200
|
+
concepts.append(concept)
|
|
201
|
+
for property_uri, read_properties in properties_by_property_uri.items():
|
|
202
|
+
namespace, property_suffix = split_uri(property_uri)
|
|
203
|
+
(self._add_uri_namespace_to_prefixes(namespace, prefixes),)
|
|
204
|
+
properties.append(
|
|
205
|
+
self._create_property(
|
|
206
|
+
read_properties, concept_str, property_uri, urllib.parse.unquote(property_suffix), prefixes
|
|
207
|
+
)
|
|
208
|
+
)
|
|
209
|
+
return concepts, properties
|
|
210
|
+
|
|
211
|
+
@staticmethod
|
|
212
|
+
def _get_properties_by_concept_by_property(
|
|
213
|
+
parent_concept_properties_iterable: Iterable[_ReadProperties],
|
|
214
|
+
) -> dict[URIRef, dict[URIRef, list[_ReadProperties]]]:
|
|
215
|
+
properties_by_concept_by_property: dict[URIRef, dict[URIRef, list[_ReadProperties]]] = {}
|
|
216
|
+
for concept_uri, concept_properties_iterable in itertools.groupby(
|
|
217
|
+
sorted(parent_concept_properties_iterable, key=lambda x: x.type_uri), key=lambda x: x.type_uri
|
|
218
|
+
):
|
|
219
|
+
properties_by_concept_by_property[concept_uri] = defaultdict(list)
|
|
220
|
+
for read_prop in concept_properties_iterable:
|
|
221
|
+
properties_by_concept_by_property[concept_uri][read_prop.property_uri].append(read_prop)
|
|
222
|
+
return properties_by_concept_by_property
|
|
223
|
+
|
|
224
|
+
@classmethod
|
|
225
|
+
def _create_concept(
|
|
226
|
+
cls, type_uri: URIRef, set_instance_source: bool, prefixes: dict[str, Namespace], implements: str | None = None
|
|
227
|
+
) -> tuple[str, UnverifiedConcept]:
|
|
228
|
+
namespace, suffix = split_uri(type_uri)
|
|
229
|
+
cls._add_uri_namespace_to_prefixes(namespace, prefixes)
|
|
230
|
+
concept_str = urllib.parse.unquote(suffix)
|
|
231
|
+
return concept_str, UnverifiedConcept(
|
|
232
|
+
concept=concept_str, implements=implements, instance_source=type_uri if set_instance_source else None
|
|
233
|
+
)
|
|
234
|
+
|
|
235
|
+
def _create_property(
|
|
236
|
+
self,
|
|
237
|
+
read_properties: list[_ReadProperties],
|
|
238
|
+
concept_str: str,
|
|
239
|
+
property_uri: URIRef,
|
|
240
|
+
property_id: str,
|
|
241
|
+
prefixes: dict[str, Namespace],
|
|
242
|
+
) -> UnverifiedConceptualProperty:
|
|
243
|
+
first = read_properties[0]
|
|
244
|
+
value_type = self._get_value_type(read_properties, prefixes)
|
|
245
|
+
return UnverifiedConceptualProperty(
|
|
246
|
+
concept=concept_str,
|
|
247
|
+
property_=property_id,
|
|
248
|
+
max_count=first.max_occurrence,
|
|
249
|
+
value_type=value_type,
|
|
250
|
+
instance_source=[property_uri],
|
|
251
|
+
)
|
|
252
|
+
|
|
253
|
+
@classmethod
|
|
254
|
+
def _get_value_type(
|
|
255
|
+
cls, read_properties: list[_ReadProperties], prefixes: dict[str, Namespace]
|
|
256
|
+
) -> str | UnknownEntity:
|
|
257
|
+
value_types = {prop.value_type for prop in read_properties}
|
|
258
|
+
if len(value_types) == 1:
|
|
259
|
+
uri_ref = value_types.pop()
|
|
260
|
+
if uri_ref == NEAT.UnknownType:
|
|
261
|
+
return UnknownEntity()
|
|
262
|
+
namespace, suffix = split_uri(uri_ref)
|
|
263
|
+
cls._add_uri_namespace_to_prefixes(namespace, prefixes)
|
|
264
|
+
return suffix
|
|
265
|
+
uri_refs: list[str] = []
|
|
266
|
+
for uri_ref in value_types:
|
|
267
|
+
if uri_ref == NEAT.UnknownType:
|
|
268
|
+
return UnknownEntity()
|
|
269
|
+
namespace, suffix = split_uri(uri_ref)
|
|
270
|
+
cls._add_uri_namespace_to_prefixes(namespace, prefixes)
|
|
271
|
+
uri_refs.append(suffix)
|
|
272
|
+
# Sort the URIs to ensure deterministic output
|
|
273
|
+
return ", ".join(sorted(uri_refs))
|
|
274
|
+
|
|
275
|
+
def _create_default_metadata(self) -> UnverifiedConceptualMetadata:
|
|
276
|
+
now = datetime.now(timezone.utc)
|
|
277
|
+
name = self.data_model_id.external_id.replace("_", " ").title()
|
|
278
|
+
return UnverifiedConceptualMetadata(
|
|
279
|
+
space=self.data_model_id.space,
|
|
280
|
+
external_id=self.data_model_id.external_id,
|
|
281
|
+
# Validated in the constructor
|
|
282
|
+
version=cast(str, self.data_model_id.version),
|
|
283
|
+
name=name,
|
|
284
|
+
creator="NEAT",
|
|
285
|
+
created=now,
|
|
286
|
+
updated=now,
|
|
287
|
+
description="Inferred model from knowledge graph",
|
|
288
|
+
)
|
|
289
|
+
|
|
290
|
+
@classmethod
|
|
291
|
+
def _add_uri_namespace_to_prefixes(cls, namespace: str, prefixes: dict[str, Namespace]) -> None:
|
|
292
|
+
"""Add URI to prefixes dict if not already present
|
|
293
|
+
|
|
294
|
+
Args:
|
|
295
|
+
URI: URI from which namespace is being extracted
|
|
296
|
+
prefixes: Dict of prefixes and namespaces
|
|
297
|
+
"""
|
|
298
|
+
if Namespace(namespace) not in prefixes.values():
|
|
299
|
+
prefixes[f"prefix_{len(prefixes) + 1}"] = Namespace(namespace)
|
|
@@ -130,7 +130,7 @@ class BaseRDFImporter(BaseImporter[UnverifiedConceptualDataModel]):
|
|
|
130
130
|
|
|
131
131
|
data_model = UnverifiedConceptualDataModel.load(data_model_dict)
|
|
132
132
|
self.issue_list.trigger_warnings()
|
|
133
|
-
return ImportedDataModel(data_model
|
|
133
|
+
return ImportedDataModel(data_model)
|
|
134
134
|
|
|
135
135
|
def _to_data_model_components(self) -> dict:
|
|
136
136
|
raise NotImplementedError()
|
|
@@ -22,6 +22,7 @@ from cognite.neat.core._data_model.models import (
|
|
|
22
22
|
RoleTypes,
|
|
23
23
|
SchemaCompleteness,
|
|
24
24
|
)
|
|
25
|
+
from cognite.neat.core._data_model.models._import_contexts import SpreadsheetContext
|
|
25
26
|
from cognite.neat.core._issues import IssueList, MultiValueError
|
|
26
27
|
from cognite.neat.core._issues.errors import (
|
|
27
28
|
FileMissingRequiredFieldError,
|
|
@@ -271,7 +272,7 @@ class ExcelImporter(BaseImporter[T_UnverifiedDataModel]):
|
|
|
271
272
|
raise MultiValueError(issue_list.errors)
|
|
272
273
|
|
|
273
274
|
if user_read is None:
|
|
274
|
-
return ImportedDataModel(None,
|
|
275
|
+
return ImportedDataModel(None, None)
|
|
275
276
|
|
|
276
277
|
sheets = user_read.sheets
|
|
277
278
|
original_role = user_read.role
|
|
@@ -287,7 +288,7 @@ class ExcelImporter(BaseImporter[T_UnverifiedDataModel]):
|
|
|
287
288
|
except Exception as e:
|
|
288
289
|
issue_list.append(FileReadError(self.filepath, f"Failed to delete temporary file: {e}"))
|
|
289
290
|
|
|
290
|
-
return ImportedDataModel(data_model, read_info_by_sheet)
|
|
291
|
+
return ImportedDataModel(data_model, SpreadsheetContext(read_info_by_sheet))
|
|
291
292
|
|
|
292
293
|
@property
|
|
293
294
|
def description(self) -> str:
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
from collections.abc import Hashable, ItemsView, Iterator, KeysView, Mapping, ValuesView
|
|
2
|
+
from typing import TypeVar
|
|
3
|
+
|
|
4
|
+
from rdflib import URIRef
|
|
5
|
+
|
|
6
|
+
from cognite.neat.core._utils.spreadsheet import SpreadsheetRead
|
|
7
|
+
|
|
8
|
+
T_Key = TypeVar("T_Key", bound=Hashable)
|
|
9
|
+
T_Value = TypeVar("T_Value")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ImportContext(dict, Mapping[T_Key, T_Value]):
|
|
13
|
+
def __init__(self, data: Mapping[T_Key, T_Value] | None = None) -> None:
|
|
14
|
+
super().__init__(data or {})
|
|
15
|
+
|
|
16
|
+
# The below methods are included to make better type hints in the IDE
|
|
17
|
+
def __getitem__(self, k: T_Key) -> T_Value:
|
|
18
|
+
return super().__getitem__(k)
|
|
19
|
+
|
|
20
|
+
def __setitem__(self, k: T_Key, v: T_Value) -> None:
|
|
21
|
+
super().__setitem__(k, v)
|
|
22
|
+
|
|
23
|
+
def __delitem__(self, k: T_Key) -> None:
|
|
24
|
+
super().__delitem__(k)
|
|
25
|
+
|
|
26
|
+
def __iter__(self) -> Iterator[T_Key]:
|
|
27
|
+
return super().__iter__()
|
|
28
|
+
|
|
29
|
+
def keys(self) -> KeysView[T_Key]: # type: ignore[override]
|
|
30
|
+
return super().keys()
|
|
31
|
+
|
|
32
|
+
def values(self) -> ValuesView[T_Value]: # type: ignore[override]
|
|
33
|
+
return super().values()
|
|
34
|
+
|
|
35
|
+
def items(self) -> ItemsView[T_Key, T_Value]: # type: ignore[override]
|
|
36
|
+
return super().items()
|
|
37
|
+
|
|
38
|
+
def get(self, __key: T_Key, __default: T_Value | None = None) -> T_Value: # type: ignore[override]
|
|
39
|
+
return super().get(__key, __default)
|
|
40
|
+
|
|
41
|
+
def pop(self, __key: T_Key, __default: T_Value | None = None) -> T_Value: # type: ignore[override]
|
|
42
|
+
return super().pop(__key, __default)
|
|
43
|
+
|
|
44
|
+
def popitem(self) -> tuple[T_Key, T_Value]:
|
|
45
|
+
return super().popitem()
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class SpreadsheetContext(ImportContext[str, SpreadsheetRead]):
|
|
49
|
+
def __init__(self, data: dict[str, SpreadsheetRead] | None = None) -> None:
|
|
50
|
+
"""Initialize the SpreadsheetContext with a dictionary of SpreadsheetRead objects.
|
|
51
|
+
|
|
52
|
+
Args:
|
|
53
|
+
data (dict[str, SpreadsheetRead]): A dictionary where keys are sheet names and values are
|
|
54
|
+
SpreadsheetRead objects containing the read data.
|
|
55
|
+
"""
|
|
56
|
+
super().__init__(data or {})
|
|
57
|
+
for k, v in self.items():
|
|
58
|
+
if not isinstance(k, str):
|
|
59
|
+
raise TypeError(f"Expected string key, got {type(k).__name__}")
|
|
60
|
+
if not isinstance(v, SpreadsheetRead):
|
|
61
|
+
raise TypeError(f"Expected SpreadsheetRead for key '{k}', got {type(v).__name__}")
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class GraphContext(ImportContext[str, Mapping[URIRef, int]]):
|
|
65
|
+
def __init__(self, data: dict[str, Mapping[URIRef, int]] | None = None) -> None:
|
|
66
|
+
"""Initialize the GraphContext with a dictionary of mappings from URIRef to int.
|
|
67
|
+
|
|
68
|
+
Args:
|
|
69
|
+
data (dict[str, Mapping[URIRef, int]]): A dictionary where keys are graph names and values are
|
|
70
|
+
mappings of URIRef to integer identifiers.
|
|
71
|
+
"""
|
|
72
|
+
super().__init__(data or {})
|
|
73
|
+
for k, v in self.items():
|
|
74
|
+
if not isinstance(k, str):
|
|
75
|
+
raise TypeError(f"Expected string key, got {type(k).__name__}")
|
|
76
|
+
if not isinstance(v, Mapping):
|
|
77
|
+
raise TypeError(f"Expected Mapping[URIRef, int] for key '{k}', got {type(v).__name__}")
|
|
78
|
+
for uri, value in v.items():
|
|
79
|
+
if not isinstance(uri, URIRef):
|
|
80
|
+
raise TypeError(f"Expected URIRef key in mapping for '{k}', got {type(uri).__name__}")
|
|
81
|
+
if not isinstance(value, int):
|
|
82
|
+
raise TypeError(f"Expected int value in mapping for '{k}', got {type(value).__name__}")
|
|
@@ -3,6 +3,7 @@ from collections import Counter, defaultdict
|
|
|
3
3
|
|
|
4
4
|
from cognite.neat.core._constants import get_base_concepts
|
|
5
5
|
from cognite.neat.core._data_model._constants import PATTERNS, EntityTypes
|
|
6
|
+
from cognite.neat.core._data_model.models._import_contexts import ImportContext, SpreadsheetContext
|
|
6
7
|
from cognite.neat.core._data_model.models.entities import ConceptEntity, UnknownEntity
|
|
7
8
|
from cognite.neat.core._data_model.models.entities._multi_value import MultiValueTypeInfo
|
|
8
9
|
from cognite.neat.core._issues import IssueList
|
|
@@ -21,7 +22,6 @@ from cognite.neat.core._issues.warnings._resources import (
|
|
|
21
22
|
ResourceNotDefinedWarning,
|
|
22
23
|
ResourceRegexViolationWarning,
|
|
23
24
|
)
|
|
24
|
-
from cognite.neat.core._utils.spreadsheet import SpreadsheetRead
|
|
25
25
|
from cognite.neat.core._utils.text import humanize_collection
|
|
26
26
|
|
|
27
27
|
from ._verified import ConceptualDataModel
|
|
@@ -34,14 +34,14 @@ class ConceptualValidation:
|
|
|
34
34
|
def __init__(
|
|
35
35
|
self,
|
|
36
36
|
data_model: ConceptualDataModel,
|
|
37
|
-
|
|
37
|
+
context: ImportContext | None = None,
|
|
38
38
|
):
|
|
39
39
|
# import here to avoid circular import issues
|
|
40
40
|
from cognite.neat.core._data_model.analysis._base import DataModelAnalysis
|
|
41
41
|
|
|
42
42
|
self.data_model = data_model
|
|
43
43
|
self.analysis = DataModelAnalysis(self.data_model)
|
|
44
|
-
self._read_info_by_spreadsheet =
|
|
44
|
+
self._read_info_by_spreadsheet = context if isinstance(context, SpreadsheetContext) else SpreadsheetContext({})
|
|
45
45
|
self._metadata = data_model.metadata
|
|
46
46
|
self._properties = data_model.properties
|
|
47
47
|
self._concepts = data_model.concepts
|
|
@@ -21,7 +21,9 @@ from cognite.neat.core._constants import (
|
|
|
21
21
|
COGNITE_SPACES,
|
|
22
22
|
DMS_CONTAINER_PROPERTY_SIZE_LIMIT,
|
|
23
23
|
DMS_VIEW_CONTAINER_SIZE_LIMIT,
|
|
24
|
+
get_base_concepts,
|
|
24
25
|
)
|
|
26
|
+
from cognite.neat.core._data_model.models._import_contexts import ImportContext, SpreadsheetContext
|
|
25
27
|
from cognite.neat.core._data_model.models.data_types import DataType
|
|
26
28
|
from cognite.neat.core._data_model.models.entities import ContainerEntity, RawFilter
|
|
27
29
|
from cognite.neat.core._data_model.models.entities._single_value import (
|
|
@@ -47,12 +49,12 @@ from cognite.neat.core._issues.warnings import (
|
|
|
47
49
|
UndefinedViewWarning,
|
|
48
50
|
user_modeling,
|
|
49
51
|
)
|
|
52
|
+
from cognite.neat.core._issues.warnings._models import ViewWithoutPropertiesWarning
|
|
50
53
|
from cognite.neat.core._issues.warnings.user_modeling import (
|
|
51
54
|
ContainerPropertyLimitWarning,
|
|
52
55
|
DirectRelationMissingSourceWarning,
|
|
53
56
|
NotNeatSupportedFilterWarning,
|
|
54
57
|
)
|
|
55
|
-
from cognite.neat.core._utils.spreadsheet import SpreadsheetRead
|
|
56
58
|
from cognite.neat.core._utils.text import humanize_collection
|
|
57
59
|
|
|
58
60
|
from ._verified import PhysicalDataModel, PhysicalProperty
|
|
@@ -81,15 +83,23 @@ class PhysicalValidation:
|
|
|
81
83
|
self,
|
|
82
84
|
data_model: PhysicalDataModel,
|
|
83
85
|
client: NeatClient | None = None,
|
|
84
|
-
|
|
86
|
+
context: ImportContext | None = None,
|
|
85
87
|
) -> None:
|
|
88
|
+
# import here to avoid circular import issues
|
|
89
|
+
from cognite.neat.core._data_model.analysis._base import DataModelAnalysis
|
|
90
|
+
|
|
86
91
|
self._data_model = data_model
|
|
87
92
|
self._client = client
|
|
88
93
|
self._metadata = data_model.metadata
|
|
89
94
|
self._properties = data_model.properties
|
|
90
95
|
self._containers = data_model.containers
|
|
91
96
|
self._views = data_model.views
|
|
92
|
-
self._read_info_by_spreadsheet =
|
|
97
|
+
self._read_info_by_spreadsheet = context if isinstance(context, SpreadsheetContext) else SpreadsheetContext()
|
|
98
|
+
|
|
99
|
+
self.analysis = DataModelAnalysis(physical=self._data_model)
|
|
100
|
+
self._cdf_concepts = {
|
|
101
|
+
ViewEntity.load(concept_as_string) for concept_as_string in get_base_concepts(base_model="CogniteCore")
|
|
102
|
+
}
|
|
93
103
|
|
|
94
104
|
def imported_views_and_containers_ids(
|
|
95
105
|
self, include_views_with_no_properties: bool = True
|
|
@@ -170,6 +180,9 @@ class PhysicalValidation:
|
|
|
170
180
|
# Validated for duplicated resource
|
|
171
181
|
issue_list.extend(self._duplicated_resources())
|
|
172
182
|
|
|
183
|
+
# Validate if views are defined (i.e. have at least one property defined, or inherited)
|
|
184
|
+
issue_list.extend(self._views_without_properties_exist())
|
|
185
|
+
|
|
173
186
|
# Neat DMS classes Validation
|
|
174
187
|
# These are errors that can only happen due to the format of the Neat DMS classes
|
|
175
188
|
issue_list.extend(self._validate_raw_filter())
|
|
@@ -192,6 +205,23 @@ class PhysicalValidation:
|
|
|
192
205
|
issue_list.extend(self._same_space_views_and_data_model())
|
|
193
206
|
return issue_list
|
|
194
207
|
|
|
208
|
+
def _views_without_properties_exist(self) -> IssueList:
|
|
209
|
+
"""Check if there are views that do not have any properties defined directly or inherited."""
|
|
210
|
+
issue_list = IssueList()
|
|
211
|
+
views = {view.view for view in self._views}
|
|
212
|
+
ancestors_by_view = self.analysis.implements_by_view(include_ancestors=True, include_different_space=True)
|
|
213
|
+
views_with_properties = self.analysis.defined_views().union(self._cdf_concepts)
|
|
214
|
+
|
|
215
|
+
if candidate_views := views.difference(views_with_properties):
|
|
216
|
+
for view in candidate_views:
|
|
217
|
+
# Here we check if at least one of the ancestors of the view has properties
|
|
218
|
+
if (ancestors := ancestors_by_view.get(view)) and ancestors.intersection(views_with_properties):
|
|
219
|
+
continue
|
|
220
|
+
|
|
221
|
+
issue_list.append_if_not_exist(ViewWithoutPropertiesWarning(view_id=view.as_id()))
|
|
222
|
+
|
|
223
|
+
return issue_list
|
|
224
|
+
|
|
195
225
|
def _same_space_views_and_data_model(self) -> IssueList:
|
|
196
226
|
issue_list = IssueList()
|
|
197
227
|
|
|
@@ -31,6 +31,7 @@ from cognite.neat.core._constants import (
|
|
|
31
31
|
)
|
|
32
32
|
from cognite.neat.core._data_model._constants import PATTERNS, get_reserved_words
|
|
33
33
|
from cognite.neat.core._data_model._shared import (
|
|
34
|
+
ImportContext,
|
|
34
35
|
ImportedDataModel,
|
|
35
36
|
ImportedUnverifiedDataModel,
|
|
36
37
|
VerifiedDataModel,
|
|
@@ -93,7 +94,6 @@ from cognite.neat.core._issues.warnings._models import (
|
|
|
93
94
|
SolutionModelBuildOnTopOfCDMWarning,
|
|
94
95
|
)
|
|
95
96
|
from cognite.neat.core._utils.rdf_ import get_inheritance_path
|
|
96
|
-
from cognite.neat.core._utils.spreadsheet import SpreadsheetRead
|
|
97
97
|
from cognite.neat.core._utils.text import (
|
|
98
98
|
NamingStandardization,
|
|
99
99
|
humanize_collection,
|
|
@@ -2412,13 +2412,13 @@ class AddCogniteProperties(
|
|
|
2412
2412
|
concepts=new_classes,
|
|
2413
2413
|
prefixes=input_.prefixes,
|
|
2414
2414
|
),
|
|
2415
|
-
context=
|
|
2415
|
+
context=None,
|
|
2416
2416
|
)
|
|
2417
2417
|
|
|
2418
2418
|
@staticmethod
|
|
2419
2419
|
def _get_properties_by_concepts(
|
|
2420
2420
|
properties: list[UnverifiedConceptualProperty],
|
|
2421
|
-
read_context:
|
|
2421
|
+
read_context: ImportContext | None,
|
|
2422
2422
|
default_space: str,
|
|
2423
2423
|
) -> dict[ConceptEntity, dict[str, UnverifiedConceptualProperty]]:
|
|
2424
2424
|
issues = IssueList()
|
|
@@ -2438,7 +2438,7 @@ class AddCogniteProperties(
|
|
|
2438
2438
|
@staticmethod
|
|
2439
2439
|
def _get_dependencies_by_concepts(
|
|
2440
2440
|
concepts: list[UnverifiedConcept],
|
|
2441
|
-
read_context:
|
|
2441
|
+
read_context: ImportContext | None,
|
|
2442
2442
|
default_space: str,
|
|
2443
2443
|
) -> dict[ConceptEntity, set[ConceptEntity]]:
|
|
2444
2444
|
dependencies_by_concepts: dict[ConceptEntity, set[ConceptEntity]] = {}
|