cognite-neat 0.121.1__tar.gz → 0.122.0__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.121.1 → cognite_neat-0.122.0}/PKG-INFO +14 -7
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/README.md +13 -6
- cognite_neat-0.122.0/cognite/neat/_version.py +2 -0
- cognite_neat-0.122.0/cognite/neat/core/_client/_api/statistics.py +91 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_client/_api_client.py +2 -0
- cognite_neat-0.122.0/cognite/neat/core/_client/data_classes/statistics.py +125 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_client/testing.py +4 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_constants.py +6 -7
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/_constants.py +23 -16
- cognite_neat-0.122.0/cognite/neat/core/_data_model/_shared.py +59 -0
- cognite_neat-0.122.0/cognite/neat/core/_data_model/analysis/__init__.py +3 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/analysis/_base.py +186 -183
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/catalog/__init__.py +2 -2
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/exporters/__init__.py +6 -6
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/exporters/_base.py +10 -8
- cognite_neat-0.121.1/cognite/neat/core/_data_model/exporters/_rules2dms.py → cognite_neat-0.122.0/cognite/neat/core/_data_model/exporters/_data_model2dms.py +22 -18
- cognite_neat-0.121.1/cognite/neat/core/_data_model/exporters/_rules2excel.py → cognite_neat-0.122.0/cognite/neat/core/_data_model/exporters/_data_model2excel.py +51 -51
- cognite_neat-0.121.1/cognite/neat/core/_data_model/exporters/_rules2instance_template.py → cognite_neat-0.122.0/cognite/neat/core/_data_model/exporters/_data_model2instance_template.py +14 -14
- cognite_neat-0.121.1/cognite/neat/core/_data_model/exporters/_rules2ontology.py → cognite_neat-0.122.0/cognite/neat/core/_data_model/exporters/_data_model2ontology.py +50 -50
- cognite_neat-0.121.1/cognite/neat/core/_data_model/exporters/_rules2yaml.py → cognite_neat-0.122.0/cognite/neat/core/_data_model/exporters/_data_model2yaml.py +21 -18
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/importers/__init__.py +8 -8
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/importers/_base.py +8 -6
- cognite_neat-0.122.0/cognite/neat/core/_data_model/importers/_base_file_reader.py +56 -0
- cognite_neat-0.121.1/cognite/neat/core/_data_model/importers/_yaml2rules.py → cognite_neat-0.122.0/cognite/neat/core/_data_model/importers/_dict2data_model.py +50 -25
- cognite_neat-0.121.1/cognite/neat/core/_data_model/importers/_dms2rules.py → cognite_neat-0.122.0/cognite/neat/core/_data_model/importers/_dms2data_model.py +58 -49
- {cognite_neat-0.121.1/cognite/neat/core/_data_model/importers/_dtdl2rules → cognite_neat-0.122.0/cognite/neat/core/_data_model/importers/_dtdl2data_model}/dtdl_converter.py +22 -22
- {cognite_neat-0.121.1/cognite/neat/core/_data_model/importers/_dtdl2rules → cognite_neat-0.122.0/cognite/neat/core/_data_model/importers/_dtdl2data_model}/dtdl_importer.py +7 -7
- {cognite_neat-0.121.1/cognite/neat/core/_data_model/importers/_dtdl2rules → cognite_neat-0.122.0/cognite/neat/core/_data_model/importers/_dtdl2data_model}/spec.py +3 -3
- cognite_neat-0.122.0/cognite/neat/core/_data_model/importers/_rdf/__init__.py +5 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/importers/_rdf/_base.py +15 -15
- cognite_neat-0.121.1/cognite/neat/core/_data_model/importers/_rdf/_imf2rules.py → cognite_neat-0.122.0/cognite/neat/core/_data_model/importers/_rdf/_imf2data_model.py +17 -17
- cognite_neat-0.121.1/cognite/neat/core/_data_model/importers/_rdf/_inference2rules.py → cognite_neat-0.122.0/cognite/neat/core/_data_model/importers/_rdf/_inference2rdata_model.py +59 -59
- cognite_neat-0.121.1/cognite/neat/core/_data_model/importers/_rdf/_owl2rules.py → cognite_neat-0.122.0/cognite/neat/core/_data_model/importers/_rdf/_owl2data_model.py +17 -17
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/importers/_rdf/_shared.py +25 -25
- cognite_neat-0.121.1/cognite/neat/core/_data_model/importers/_spreadsheet2rules.py → cognite_neat-0.122.0/cognite/neat/core/_data_model/importers/_spreadsheet2data_model.py +76 -19
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/__init__.py +11 -9
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/_base_unverified.py +12 -12
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/_base_verified.py +9 -14
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/_types.py +6 -6
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/conceptual/__init__.py +6 -6
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/conceptual/_unverified.py +20 -20
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/conceptual/_validation.py +88 -78
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/conceptual/_verified.py +54 -52
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/data_types.py +2 -2
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/entities/__init__.py +8 -8
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/entities/_loaders.py +11 -10
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/entities/_multi_value.py +5 -5
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/entities/_single_value.py +44 -38
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/entities/_types.py +9 -3
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/entities/_wrapped.py +3 -3
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/mapping/_classic2core.py +12 -9
- cognite_neat-0.122.0/cognite/neat/core/_data_model/models/physical/__init__.py +40 -0
- {cognite_neat-0.121.1/cognite/neat/core/_data_model/models/dms → cognite_neat-0.122.0/cognite/neat/core/_data_model/models/physical}/_exporter.py +75 -55
- cognite_neat-0.121.1/cognite/neat/core/_data_model/models/dms/_rules_input.py → cognite_neat-0.122.0/cognite/neat/core/_data_model/models/physical/_unverified.py +48 -39
- {cognite_neat-0.121.1/cognite/neat/core/_data_model/models/dms → cognite_neat-0.122.0/cognite/neat/core/_data_model/models/physical}/_validation.py +17 -15
- cognite_neat-0.121.1/cognite/neat/core/_data_model/models/dms/_rules.py → cognite_neat-0.122.0/cognite/neat/core/_data_model/models/physical/_verified.py +68 -60
- cognite_neat-0.122.0/cognite/neat/core/_data_model/transformers/__init__.py +68 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/transformers/_base.py +27 -20
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/transformers/_converters.py +707 -622
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/transformers/_mapping.py +74 -55
- cognite_neat-0.122.0/cognite/neat/core/_data_model/transformers/_verification.py +120 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_base.py +2 -2
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_classic_cdf/_classic.py +9 -9
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_dms_graph.py +42 -34
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_mock_graph_generator.py +107 -103
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/loaders/_base.py +3 -3
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/loaders/_rdf2dms.py +22 -22
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/transformers/_base.py +7 -4
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/transformers/_rdfpath.py +1 -1
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/transformers/_value_type.py +2 -6
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/_base.py +4 -4
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/_factory.py +1 -1
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/errors/__init__.py +2 -2
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/errors/_resources.py +1 -1
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/errors/_wrapper.py +2 -2
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/warnings/_models.py +4 -4
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/warnings/_properties.py +1 -1
- cognite_neat-0.122.0/cognite/neat/core/_store/__init__.py +4 -0
- cognite_neat-0.121.1/cognite/neat/core/_store/_rules_store.py → cognite_neat-0.122.0/cognite/neat/core/_store/_data_model.py +119 -112
- cognite_neat-0.121.1/cognite/neat/core/_store/_graph_store.py → cognite_neat-0.122.0/cognite/neat/core/_store/_instance.py +3 -4
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_store/_provenance.py +2 -2
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_store/exceptions.py +2 -2
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_utils/rdf_.py +14 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_utils/text.py +1 -1
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_base.py +42 -36
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_drop.py +2 -2
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_experimental.py +1 -1
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_inspect.py +13 -13
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_mapping.py +15 -9
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_read.py +39 -37
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_set.py +6 -6
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_show.py +24 -21
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_state/README.md +1 -1
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_state.py +27 -27
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_subset.py +14 -11
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_template.py +23 -21
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_to.py +42 -42
- cognite_neat-0.122.0/docs/excel_data_modeling/conceptual/overview.md +10 -0
- {cognite_neat-0.121.1/docs/excel_data_modeling/logical → cognite_neat-0.122.0/docs/excel_data_modeling/conceptual}/reference.md +18 -20
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/excel_data_modeling/physical/enum.md +2 -2
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/excel_data_modeling/physical/overview.md +1 -1
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/excel_data_modeling/physical/properties.md +11 -11
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/excel_data_modeling/physical/reference.md +9 -8
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/excel_data_modeling/physical/views.md +5 -5
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/gettingstarted/installation.md +32 -12
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/gettingstarted/why-neat.md +17 -17
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/index.md +12 -5
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/reference/overview.md +2 -2
- cognite_neat-0.122.0/docs/tutorials/data-modeling/cold_start.ipynb +483 -0
- cognite_neat-0.122.0/docs/tutorials/data-modeling/files/wind_farm_prospecting_conceptual_data_model.xlsx +0 -0
- cognite_neat-0.122.0/docs/tutorials/data-modeling/files/wind_farm_prospecting_conceptual_data_model_expanded.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/tutorials/data-modeling/from-conceptual-to-physical-via-CDM.ipynb +37 -45
- cognite_neat-0.122.0/docs/tutorials/data-modeling/http_purl.org_cognite_neat_data-model_verified_physical_neat_playground_NeatHelloWorld_v1.html +456 -0
- cognite_neat-0.122.0/docs/tutorials/data-modeling/my_first_model.xlsx +0 -0
- cognite_neat-0.122.0/last_changelog_entry.md +6 -0
- cognite_neat-0.122.0/last_git_message.txt +32 -0
- cognite_neat-0.122.0/last_version.txt +1 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/mkdocs.yml +4 -5
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/pyproject.toml +1 -1
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/create_classic_core_mapping_yaml.py +3 -3
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/docs_generate_reference.py +10 -4
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/manual_test_dms_importer.py +5 -5
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/conftest.py +24 -19
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_graph/car.py +25 -19
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/conversion/single_concept.conceptual.yaml +4 -4
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/conversion/single_concept.physical.yaml +4 -4
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/windturbine.py +27 -27
- cognite_neat-0.122.0/tests/data/_schema/physical/car_dms_rules.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_end_to_end/test_rules_flow/test_excel_importer_to_yaml.yml +161 -161
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_api/test_conversion.py +11 -9
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_api/test_validate_rules.py +4 -4
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_graph/test_loaders/test_dms_loader.py +22 -15
- cognite_neat-0.122.0/tests/tests_integration/test_neat_client/test_statistics.py +32 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_rules/test_exporters/test_dms_exporters.py +36 -32
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_session/test_data_model_prepare_fix/test_prefix_info_rules_entities.yml +79 -79
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_session/test_data_model_prepare_fix.py +3 -3
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_session/test_data_model_to.py +10 -7
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_session/test_graph_flow/test_aml_to_dms.yml +97 -97
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_session/test_graph_flow/test_create_extension_template.yml +81 -81
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_session/test_graph_flow/test_dexpi_to_dms.yml +649 -649
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_session/test_graph_flow/test_snapshot_workflow_ids_to_python.yml +157 -157
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_session/test_graph_flow/test_snapshot_workflow_to_python.yml +312 -312
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_session/test_graph_flow/test_uplift_workflow_to_python.yml +339 -339
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_session/test_graph_flow.py +7 -7
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_session/test_read.py +3 -3
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_extractors/test_asset_extractor.py +3 -3
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_extractors/test_dms_graph_extractor.py +4 -4
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_graph_read.py +2 -2
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_loaders/test_dms_loader.py +43 -35
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_loaders/test_rdf2dms.py +13 -9
- cognite_neat-0.122.0/tests/tests_unit/test_graph/test_provenance.py +8 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_transformers/test_asset_depth_transformer.py +4 -4
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_transformers/test_asset_event_connector_transformer.py +3 -3
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_transformers/test_asset_file_connector_transformer.py +3 -3
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_transformers/test_asset_relationship_connector_transformer.py +3 -3
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_transformers/test_asset_sequence_connector_transformer.py +3 -3
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_transformers/test_asset_ts_connector_transformer.py +3 -3
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_transformers/test_attach_property_from_target2source.py +3 -3
- cognite_neat-0.122.0/tests/tests_unit/test_graph/test_transformers/test_connection_to_literal.py +37 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_transformers/test_prune_graph.py +2 -2
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_transformers/test_split_multi_value_property_transformer.py +5 -5
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_analysis.py +18 -18
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_exporters/test_exporters_meta.py +2 -2
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_exporters/test_rules2dms.py +10 -7
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_exporters/test_rules2excel.py +9 -9
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_exporters/test_rules2ontology.py +1 -1
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_exporters/test_rules2yaml.py +7 -7
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_importers/test_dms_importer.py +22 -19
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_importers/test_dtdl_importer.py +12 -9
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_importers/test_excel_importer.py +22 -16
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_importers/test_imf_importer.py +4 -4
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_importers/test_inference_importer.py +24 -24
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_importers/test_owl_importer.py +12 -12
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_importers/test_subinference_importer.py +1 -1
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_models/test_asset_rules.py +16 -16
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_models/test_base_rules.py +6 -6
- cognite_neat-0.121.1/tests/tests_unit/test_rules/test_models/test_information_rules.py → cognite_neat-0.122.0/tests/tests_unit/test_rules/test_models/test_conceptual_model.py +75 -66
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_models/test_data_types.py +4 -4
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_models/test_dms_schema.py +2 -2
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_models/test_entities.py +12 -12
- cognite_neat-0.121.1/tests/tests_unit/test_rules/test_models/test_dms_rules.py → cognite_neat-0.122.0/tests/tests_unit/test_rules/test_models/test_physical_data_model.py +254 -242
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_models/test_wrapped_entities.py +3 -3
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_transformers/test_converters.py +58 -55
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_transformers/test_mapping.py +20 -20
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_transformers/test_transformer_meta.py +18 -15
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_session/test_to_yaml.py +5 -5
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_store/tests_rules_store.py +12 -12
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_utils/test_auxiliary.py +2 -2
- cognite_neat-0.122.0/tests/tests_unit/test_utils/test_rdf.py +30 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/utils.py +8 -8
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/uv.lock +527 -542
- cognite_neat-0.121.1/cognite/neat/_version.py +0 -2
- cognite_neat-0.121.1/cognite/neat/core/_data_model/_shared.py +0 -43
- cognite_neat-0.121.1/cognite/neat/core/_data_model/analysis/__init__.py +0 -3
- cognite_neat-0.121.1/cognite/neat/core/_data_model/exporters/_validation.py +0 -14
- cognite_neat-0.121.1/cognite/neat/core/_data_model/importers/_rdf/__init__.py +0 -5
- cognite_neat-0.121.1/cognite/neat/core/_data_model/models/dms/__init__.py +0 -32
- cognite_neat-0.121.1/cognite/neat/core/_data_model/transformers/__init__.py +0 -64
- cognite_neat-0.121.1/cognite/neat/core/_data_model/transformers/_verification.py +0 -111
- cognite_neat-0.121.1/cognite/neat/core/_store/__init__.py +0 -4
- cognite_neat-0.121.1/docs/excel_data_modeling/logical/overview.md +0 -8
- cognite_neat-0.121.1/docs/excel_data_modeling/logical/properties.md +0 -281
- cognite_neat-0.121.1/docs/tutorials/data-modeling/files/wind_farm_prospecting_conceptual_data_model.xlsx +0 -0
- cognite_neat-0.121.1/docs/tutorials/data-modeling/files/wind_farm_prospecting_conceptual_data_model_expanded.xlsx +0 -0
- cognite_neat-0.121.1/last_changelog_entry.md +0 -7
- cognite_neat-0.121.1/last_git_message.txt +0 -23
- cognite_neat-0.121.1/last_version.txt +0 -1
- cognite_neat-0.121.1/tests/data/_schema/physical/car_dms_rules.xlsx +0 -0
- cognite_neat-0.121.1/tests/tests_unit/test_graph/test_provenance.py +0 -8
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/.coveragerc +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/.github/CODEOWNERS +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/.github/pull_request_template.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/.github/renovate.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/.github/workflows/code-quality.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/.github/workflows/release.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/.gitignore +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/.pre-commit-config.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/.readthedocs.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/CODE_OF_CONDUCT.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/CONTRIBUTING.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/LICENSE +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cdf.toml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/codecov.yml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_client/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_client/_api/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_client/_api/data_modeling_loaders.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_client/_api/neat_instances.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_client/_api/schema.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_client/data_classes/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_client/data_classes/data_modeling.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_client/data_classes/neat_sequence.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_client/data_classes/schema.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_config.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/catalog/classic_model.xlsx +0 -0
- /cognite_neat-0.121.1/cognite/neat/core/_data_model/catalog/info-rules-imf.xlsx → /cognite_neat-0.122.0/cognite/neat/core/_data_model/catalog/conceptual-imf-data-model.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/catalog/hello_world_pump.xlsx +0 -0
- {cognite_neat-0.121.1/cognite/neat/core/_data_model/importers/_dtdl2rules → cognite_neat-0.122.0/cognite/neat/core/_data_model/importers/_dtdl2data_model}/__init__.py +0 -0
- {cognite_neat-0.121.1/cognite/neat/core/_data_model/importers/_dtdl2rules → cognite_neat-0.122.0/cognite/neat/core/_data_model/importers/_dtdl2data_model}/_unit_lookup.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/entities/_constants.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/mapping/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_data_model/models/mapping/_classic2core.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/_shared.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/_tracking/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/_tracking/base.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/_tracking/log.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/examples/Knowledge-Graph-Nordic44.xml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/examples/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_classic_cdf/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_classic_cdf/_assets.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_classic_cdf/_base.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_classic_cdf/_data_sets.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_classic_cdf/_events.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_classic_cdf/_files.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_classic_cdf/_labels.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_classic_cdf/_relationships.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_classic_cdf/_sequences.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_classic_cdf/_timeseries.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_dict.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_dms.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_raw.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/extractors/_rdf_file.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/loaders/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/queries/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/queries/_base.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/queries/_queries.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/queries/_select.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/queries/_update.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/transformers/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/transformers/_classic_cdf.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_instances/transformers/_prune_graph.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/_contextmanagers.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/errors/_external.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/errors/_general.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/errors/_properties.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/formatters.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/warnings/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/warnings/_external.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/warnings/_general.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/warnings/_resources.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_issues/warnings/user_modeling.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_shared.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_utils/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_utils/auth.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_utils/auxiliary.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_utils/collection_.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_utils/graph_transformations_report.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_utils/io_.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_utils/reader/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_utils/reader/_base.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_utils/spreadsheet.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_utils/time_.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_utils/upload.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/core/_utils/xml_.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/py.typed +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_collector.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_explore.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_fix.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_prepare.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/_wizard.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/engine/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/engine/_import.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/engine/_interface.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/engine/_load.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/cognite/neat/session/exceptions.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/dev.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/DataModelCDF.PNG +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/DataModelInstancesCDF.PNG +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/DataModelInstancesVizCDF.PNG +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/aml-dm-cdf.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/aml-dm.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/aml-instances-cdf.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/aml-instances-full.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_dms.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_dms_typed.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_populated.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_populated_with_typed.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/authorship.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/base-components.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/bid_capacity_data_model.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/change_validate_step.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/connecting_metadata_dm.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/connecting_metadata_populated.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/connecting_metadata_published_dm.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/container_spec.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/core_extension.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/core_extension_excel.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/core_extension_no_connection.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/core_extension_with_properties.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/data-exploration.gif +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/data-model-nordic44.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/data-modeling-flow.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/dexpi-dm-cdf.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/dexpi-dm-viz.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/dexpi-graph-viz.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/dexpi-instance-cdf.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/dexpi-transformed-graph-viz.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/dm-classes.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/dm-object-shapes.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/dm-prefixes.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/dm-source-to-solution-mapping.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/dm2cdf-asset.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/dm2cdf-mapping.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/execution-history.gif +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/export_dms_config.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/export_dms_executed.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/export_dms_workflow.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/features.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/graph-etl-flow.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/high-level-io.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/instances-nordic44.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/instances-sheet.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/key-aspects-of-neat.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/knowledge-graph-viz-filtering.gif +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/knowledge-graph-viz.gif +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/life_cycle_analitic_solution_export_dms.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/life_cycle_converter_model_analytic_solution_model.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/life_cycle_download_reference_model_analytic_soluteion_model.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/life_cycle_download_reference_model_analytic_solution_model_export.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/logo.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/metadata-sheet.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/multi-hop.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/neat-high-level.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/neat-two_flows.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/neat_shift_tab.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/neat_tab.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/prefixes-sheet.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/pump_hello_world_published.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/rdf-in-nutshell.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/rdf2cdf-graph-change.jpg +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/rdf2cdf-graph-resurrect.jpg +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/rdf2cdf-graph.jpg +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/rdf2cdf-init-run-step1.jpg +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/rdf2cdf-init-run-step2.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/rdf2cdf-init-run.jpg +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/rdf2cdf-post-init.jpg +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/run_workflow.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/sheet2cdf-asset-hierarchy.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/sheet2cdf-running-workflow.gif +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/sheet2cdf-transformation-rules-ui.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/sheet2cdf-upload-rules.gif +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/sheet2cdf-workflow-steps.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/sheet2cdf-workflow.gif +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/sheet2cdf-workflow.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/step-configurables.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/step-metrics.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/tutorial-notebooks-part-2_graph-capturing-sheet.gif +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/validate_workflow.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/wf-ephemeral-mode.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/wf-overview.gif +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/wf-persistent-blocking-mode.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/wf-persistent-non-blocking.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/wf-start-mode-ui.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/wind_farm_classic_knowledge_graph.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/wind_farm_data_product_instances.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/work-in-progress.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/workflow-context.jpg +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/working_with_metadata_provenance.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/figs/working_with_metadata_published_dm.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/rules/cdf-dms-architect-alice.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/rules/dms-addition-svein-harald.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/rules/dms-analytics-olav.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/rules/dms-architect-rules-raw-filter-example.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/rules/dms-architect-rules-template.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/rules/dms-rebuild-olav.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/rules/domain-expert-rules-template.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/rules/expert-grid-emma.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/rules/expert-wind-energy-jon.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/rules/information-addition-svein-harald.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/rules/information-analytics-olav-ref.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/rules/information-analytics-olav.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/rules/information-architect-david.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/rules/information-architect-rules-template.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/videos/tutorial-1-defining-data-model.mp4 +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/videos/tutorial-1-download-rules-template.mp4 +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/videos/tutorial-1-upload-gql-schema-to-cdf.mp4 +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/videos/tutorial-2-graph-capturing-sheet.mp4 +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/videos/tutorial-3-asset-hierarchy.mp4 +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/videos/tutorial-3-decommissioning.mp4 +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/videos/tutorial-3-relationships.mp4 +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/videos/tutorial-3-resurrection.mp4 +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/artifacts/videos/tutorial-4-asset-hierarchy.mp4 +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/data-modeling-principles.md +0 -0
- /cognite_neat-0.121.1/docs/excel_data_modeling/rules.md → /cognite_neat-0.122.0/docs/excel_data_modeling/data_model.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/excel_data_modeling/units.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/reference/NeatSession/base.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/reference/NeatSession/drop.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/reference/NeatSession/fix.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/reference/NeatSession/inspect.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/reference/NeatSession/mapping.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/reference/NeatSession/prepare.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/reference/NeatSession/read.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/reference/NeatSession/set.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/reference/NeatSession/show.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/reference/NeatSession/subset.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/reference/NeatSession/template.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/reference/NeatSession/to.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/reference/issues/base.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/reference/issues/errors.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/reference/issues/user_model_warnings.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/reference/issues/warnings.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/tutorials/data-modeling/figs/data-modeling-flow.png +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/tutorials/data-modeling/files/wind_farm_prospecting_physical_data_model.xlsx +0 -0
- /cognite_neat-0.121.1/docs/tutorials/data-modeling/http_purl.org_cognite_neat_data-model_verified_logical_wind_energy_WindFarmProspecting_v1.html → /cognite_neat-0.122.0/docs/tutorials/data-modeling/http_purl.org_cognite_neat_data-model_verified_conceptual_wind_energy_WindFarmProspecting_v1.html +0 -0
- /cognite_neat-0.121.1/docs/tutorials/data-modeling/http_purl.org_cognite_neat_data-model_verified_logical_wind_energy_WindFarmProspecting_v1_implements.html → /cognite_neat-0.122.0/docs/tutorials/data-modeling/http_purl.org_cognite_neat_data-model_verified_conceptual_wind_energy_WindFarmProspecting_v1_implements.html +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/tutorials/data-modeling/physical-data-model.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/docs/tutorials/introduction/introduction.ipynb +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/clean_space.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/core_classic_mapping.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/dependency_profiler.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/docs_generate_unit.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/generate_steps_md.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/.gitignore +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/README.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/config.dev.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/neat_integration_runner/README.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/neat_integration_runner/auth/neat_cicd_testing.group.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/lift_pumps/classic/lift_pump_stations_root.Asset.csv +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/lift_pumps/data_sets/hierarchies.DataSet.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/lift_pumps/raw/collections_pump.Table.csv +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/lift_pumps/raw/collections_pump.Table.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/classic/Measurement.Asset.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/classic/Measurement.Label.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/classic/MetMast.Asset.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/classic/PowerGeneratingUnit.Label.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/classic/Utsira.Asset.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-01.Asset.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-01_to_MetMast.Relationship.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-02.Asset.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-02_to_MetMast.Relationship.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/classic/WindTurbine.Label.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/classic/metMast.Label.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/classic/planned_WT-01_2022-01-01.Event.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/classic/power_curve_manufacturer1.Sequence.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/data_sets/maintenance.DataSet.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/data_sets/source_ds.DataSet.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/data_sets/usecase_01.DataSet.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/files/WT-01_datasheet.FileMetadata.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/files/WT-01_datasheet.txt +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-01_forecast.TimeSeries.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-01_production.TimeSeries.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-02_forecast.TimeSeries.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-02_production.TimeSeries.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/migration.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/oxi_remote/README.md +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/oxi_remote/docker-compose.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/test_lookup_table.csv +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/scripts/windfarm_to_toolkit.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/config.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_graph/IMF_TempTransmitterComplete.ttl +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_graph/aml-raw-graph.ttl +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_graph/aml_example.aml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_graph/dexpi-raw-graph.ttl +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_graph/dexpi_example.xml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_graph/iodd_Piab-piCOMPACT10X-20230509-IODD1.1.xml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_graph/low-quality-graph.ttl +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_instances/asset_centric_cdf/assets.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_instances/asset_centric_cdf/events.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_instances/asset_centric_cdf/files.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_instances/asset_centric_cdf/labels.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_instances/asset_centric_cdf/relationships.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_instances/asset_centric_cdf/sequence_rows.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_instances/asset_centric_cdf/sequences.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_instances/asset_centric_cdf/timeseries.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_instances/classic_windfarm.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/conceptual/broken_concepts.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/conceptual/info-arch-car-rules.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/conceptual/info_with_cdm_ref.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/conceptual/information-unknown-value-type.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/conceptual/only_concepts.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/cognite_core_v1.zip +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/TemperatureController.zip +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/BaseConsumer.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/BasePlant.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/BaseReceiver.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/CityPlant.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/CoalPlant.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/DeliverySubStation.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/DomesticConsumer.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/FarmConsumer.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/Floor.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/GasPlant.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/GeneratorSubStation.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/HydroPlant.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/IndustrialConsumer.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/IndustrialPlant.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/NuclearPlant.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/PowerLine.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/Room.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/SolarPlant.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/Transformer.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/dtdl/energy-grid/WindPlant.json +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/referencing_core/MyDescribable.container.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/referencing_core/MyDescribable.view.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/non_neat/referencing_core/enterprise.datamodel.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/partial-model/complete.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/partial-model/part1.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/partial-model/part2.ttl +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/partial-model/part3.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical/car_dms_rules_deprecated.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical/dm_raw_filter.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical/dm_view_space_different.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical/dms-unknown-value-type.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical/isa_plus_cdm.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical/missing-in-model-value.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical/mixed-up-version.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical/pump_example_duplicated_resources.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical/pump_example_with_missing_cells.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical/pump_example_with_missing_cells_raise_issues.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical_invalid/inconsistent_container_dms_rules.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical_invalid/invalid_metadata.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical_invalid/invalid_property_dms_rules.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical_invalid/missing_view_container_dms_rules.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical_invalid/too_many_containers_per_view.xlsx +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical_yamls/invalid_yaml.expected_issues.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical_yamls/invalid_yaml.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical_yamls/reverse_direct_relation_missing_target.expected_issues.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/data/_schema/physical_yamls/reverse_direct_relation_missing_target.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_end_to_end/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_end_to_end/test_rules_flow/test_cdm_extension_verification.yaml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_end_to_end/test_rules_flow/test_ontology_importer_to_yaml.yml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_end_to_end/test_rules_flow/test_to_extension_transformer.yml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_end_to_end/test_rules_flow.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/conftest.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_api/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_client_available.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_graph/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_graph/test_loaders/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_neat_client/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_neat_client/test_cdf_loaders.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_rules/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_rules/test_exporters/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_rules/test_importers/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_session/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_session/test_create_enterprise.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_session/test_data_model_prepare_fix/test_prefix_dms_rules_entities.yml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_session/test_data_model_prepare_fix/test_standardize_space_and_version.yml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_session/test_data_model_to/test_raw_filter.yml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_session/test_read/test_read_model_referencing_core.yml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_utils/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_integration/test_utils/test_reader.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_extractors/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_extractors/test_dms_extractor.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_extractors/test_events_extractor.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_extractors/test_files_extractor.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_extractors/test_labels_extractor.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_extractors/test_raw_extractor.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_extractors/test_relationship_extractor.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_extractors/test_sequences_extractor.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_extractors/test_timeseries_extractor.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_loaders/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_transformers/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_graph/test_transformers/test_make_connection_on_exact_match.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_issues/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_issues/test_formatters.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_issues/test_issue_behavior.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_issues/test_issues_metatests.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_neat_client/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_neat_client/test_instances.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_neat_client/test_loaders.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_neat_client/test_schema.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_neat_package_metadata.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_exporters/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_importers/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_importers/constants.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_models/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_models/test_input_rules.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_models/utils.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_rules/test_transformers/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_session/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_session/test_meta.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_session/test_read.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_store/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_store/tests_rules_store/test_import_export.yml +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_utils/__init__.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_utils/test_cdf_classes.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_utils/test_reader.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_utils/test_text.py +0 -0
- {cognite_neat-0.121.1 → cognite_neat-0.122.0}/tests/tests_unit/test_utils/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cognite-neat
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.122.0
|
|
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/
|
|
@@ -67,9 +67,9 @@ Description-Content-Type: text/markdown
|
|
|
67
67
|
|
|
68
68
|
NEAT is a domain expert centric and developer friendly solution for rapid:
|
|
69
69
|
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
- and ingestion of the models and graphs into [Cognite Data Fusion](https://www.cognite.com/en/product/cognite_data_fusion_industrial_dataops_platform)
|
|
70
|
+
- data modeling
|
|
71
|
+
- extraction, transformation and loading of instances
|
|
72
|
+
- and ingestion of the models and instances (i.e. knowledge graphs) into [Cognite Data Fusion](https://www.cognite.com/en/product/cognite_data_fusion_industrial_dataops_platform)
|
|
73
73
|
|
|
74
74
|
NEAT is using open and globally recognized standards maintained by the [World Wide Web Consortium (W3C)](https://www.w3.org/RDF/).
|
|
75
75
|
NEAT represents an essential tool for creation of standardized, machine-actionable, linked and semantic (meta)data.
|
|
@@ -85,13 +85,12 @@ By mid of 2022, sheet2rdf was used in several POCs in Cognite. As Cognite's Data
|
|
|
85
85
|
|
|
86
86
|
Presented in various forums in 2022, this approach paved the way for NEAT’s formal development in November 2022 to enable cost-saving and empowerment of Cognite customers to self-sufficiently maintain and onboard knowledge graphs to Cognite Data Fusion.
|
|
87
87
|
|
|
88
|
-
|
|
89
88
|
## Authorship
|
|
90
89
|
|
|
91
90
|
### Authors
|
|
92
91
|
The plot below shows the NEAT authorship from the start until present day.
|
|
93
92
|
|
|
94
|
-

|
|
95
94
|
|
|
96
95
|
#### Current authors
|
|
97
96
|
- [Nikola Vasiljević](www.linkedin.com/in/thisisnikola)
|
|
@@ -108,9 +107,17 @@ We are very grateful for the contributions made by:
|
|
|
108
107
|
|
|
109
108
|
- [Marie Solvik Lepoutre](https://www.linkedin.com/in/mslepoutre/), who improved RDF triples projections to Cognite Data Fusion
|
|
110
109
|
- [Bård Henning Tvedt](https://www.linkedin.com/in/bhtvedt/), who implemented IMF importer
|
|
110
|
+
- [Hassan Gomaa](https://www.linkedin.com/in/dr-hassan-gomaa-232638121/), who extended the DEXPI extractor
|
|
111
111
|
- [Kristina Tomičić](https://www.linkedin.com/in/kristina-tomicic-6bb443108/), who implemented Data Model and Instances visualization
|
|
112
112
|
|
|
113
113
|
|
|
114
|
+
## Sponsors
|
|
115
|
+
NEAT is developed and maintained by Cognite. We are grateful for the past support of our sponsors, who funded us to develop NEAT and to make it open source.
|
|
116
|
+
|
|
117
|
+
- [Statnett](https://www.statnett.no/) - the MIMIR team ([Ola Hagen Øyan](https://www.linkedin.com/in/ola-%C3%B8yan-b0205b19/), [Olav Westeng Alstad](https://www.linkedin.com/in/olav-w-alstad-52329191/),[Andreas Kimsås](https://www.linkedin.com/in/andreas-kims%C3%A5s-964a0b2/) and [Anders Willersrud](https://www.linkedin.com/in/anders-willersrud-13a20220/)) – who supported the development of NEAT from end of 2022 to mid of 2023 and its integration with Statnett's infrastructure, where NEAT was battle-tested as a tool for non-sematic experts to define data models and transform large knowledge graphs representing the entire Norwegian power grid system. Without Statnett's support NEAT would not exist in the first place, and would not be open-source.
|
|
118
|
+
- [Aker Solutions](https://www.akersolutions.com/) – the IMod Team (currently lead by [Maria Kenderkova](https://www.linkedin.com/in/maria-kenderkova/)), who funded development of NEAT from mid of 2023 till end of 2024 (multi-level and role-based data modeling, support for ontologies, IMF, DEXPI, AML,...) , as well who were early adopters and embraced NEAT and who were patient with us when things did not work so well. Aker Solutions was instrumental to elevating NEAT to a product level, and who selflessly advocate for NEAT globally.
|
|
119
|
+
|
|
120
|
+
|
|
114
121
|
## Installation
|
|
115
122
|
|
|
116
123
|
```bash
|
|
@@ -134,4 +141,4 @@ neat.read.cdf.data_model(("my_space", "MyDataModel", "v1"))
|
|
|
134
141
|
|
|
135
142
|
## Documentation
|
|
136
143
|
|
|
137
|
-
For more information, see the [documentation](https://cognite-neat.readthedocs-hosted.com/en/latest/)
|
|
144
|
+
For more information, see the [documentation](https://cognite-neat.readthedocs-hosted.com/en/latest/)
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
|
|
14
14
|
NEAT is a domain expert centric and developer friendly solution for rapid:
|
|
15
15
|
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
- and ingestion of the models and graphs into [Cognite Data Fusion](https://www.cognite.com/en/product/cognite_data_fusion_industrial_dataops_platform)
|
|
16
|
+
- data modeling
|
|
17
|
+
- extraction, transformation and loading of instances
|
|
18
|
+
- and ingestion of the models and instances (i.e. knowledge graphs) into [Cognite Data Fusion](https://www.cognite.com/en/product/cognite_data_fusion_industrial_dataops_platform)
|
|
19
19
|
|
|
20
20
|
NEAT is using open and globally recognized standards maintained by the [World Wide Web Consortium (W3C)](https://www.w3.org/RDF/).
|
|
21
21
|
NEAT represents an essential tool for creation of standardized, machine-actionable, linked and semantic (meta)data.
|
|
@@ -31,13 +31,12 @@ By mid of 2022, sheet2rdf was used in several POCs in Cognite. As Cognite's Data
|
|
|
31
31
|
|
|
32
32
|
Presented in various forums in 2022, this approach paved the way for NEAT’s formal development in November 2022 to enable cost-saving and empowerment of Cognite customers to self-sufficiently maintain and onboard knowledge graphs to Cognite Data Fusion.
|
|
33
33
|
|
|
34
|
-
|
|
35
34
|
## Authorship
|
|
36
35
|
|
|
37
36
|
### Authors
|
|
38
37
|
The plot below shows the NEAT authorship from the start until present day.
|
|
39
38
|
|
|
40
|
-

|
|
41
40
|
|
|
42
41
|
#### Current authors
|
|
43
42
|
- [Nikola Vasiljević](www.linkedin.com/in/thisisnikola)
|
|
@@ -54,9 +53,17 @@ We are very grateful for the contributions made by:
|
|
|
54
53
|
|
|
55
54
|
- [Marie Solvik Lepoutre](https://www.linkedin.com/in/mslepoutre/), who improved RDF triples projections to Cognite Data Fusion
|
|
56
55
|
- [Bård Henning Tvedt](https://www.linkedin.com/in/bhtvedt/), who implemented IMF importer
|
|
56
|
+
- [Hassan Gomaa](https://www.linkedin.com/in/dr-hassan-gomaa-232638121/), who extended the DEXPI extractor
|
|
57
57
|
- [Kristina Tomičić](https://www.linkedin.com/in/kristina-tomicic-6bb443108/), who implemented Data Model and Instances visualization
|
|
58
58
|
|
|
59
59
|
|
|
60
|
+
## Sponsors
|
|
61
|
+
NEAT is developed and maintained by Cognite. We are grateful for the past support of our sponsors, who funded us to develop NEAT and to make it open source.
|
|
62
|
+
|
|
63
|
+
- [Statnett](https://www.statnett.no/) - the MIMIR team ([Ola Hagen Øyan](https://www.linkedin.com/in/ola-%C3%B8yan-b0205b19/), [Olav Westeng Alstad](https://www.linkedin.com/in/olav-w-alstad-52329191/),[Andreas Kimsås](https://www.linkedin.com/in/andreas-kims%C3%A5s-964a0b2/) and [Anders Willersrud](https://www.linkedin.com/in/anders-willersrud-13a20220/)) – who supported the development of NEAT from end of 2022 to mid of 2023 and its integration with Statnett's infrastructure, where NEAT was battle-tested as a tool for non-sematic experts to define data models and transform large knowledge graphs representing the entire Norwegian power grid system. Without Statnett's support NEAT would not exist in the first place, and would not be open-source.
|
|
64
|
+
- [Aker Solutions](https://www.akersolutions.com/) – the IMod Team (currently lead by [Maria Kenderkova](https://www.linkedin.com/in/maria-kenderkova/)), who funded development of NEAT from mid of 2023 till end of 2024 (multi-level and role-based data modeling, support for ontologies, IMF, DEXPI, AML,...) , as well who were early adopters and embraced NEAT and who were patient with us when things did not work so well. Aker Solutions was instrumental to elevating NEAT to a product level, and who selflessly advocate for NEAT globally.
|
|
65
|
+
|
|
66
|
+
|
|
60
67
|
## Installation
|
|
61
68
|
|
|
62
69
|
```bash
|
|
@@ -80,4 +87,4 @@ neat.read.cdf.data_model(("my_space", "MyDataModel", "v1"))
|
|
|
80
87
|
|
|
81
88
|
## Documentation
|
|
82
89
|
|
|
83
|
-
For more information, see the [documentation](https://cognite-neat.readthedocs-hosted.com/en/latest/)
|
|
90
|
+
For more information, see the [documentation](https://cognite-neat.readthedocs-hosted.com/en/latest/)
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import itertools
|
|
2
|
+
from typing import overload
|
|
3
|
+
|
|
4
|
+
from cognite.client._api_client import APIClient
|
|
5
|
+
from cognite.client._cognite_client import CogniteClient
|
|
6
|
+
from cognite.client.config import ClientConfig
|
|
7
|
+
from cognite.client.data_classes.data_modeling.ids import _load_space_identifier
|
|
8
|
+
from cognite.client.utils.useful_types import SequenceNotStr
|
|
9
|
+
|
|
10
|
+
from cognite.neat.core._client.data_classes.statistics import (
|
|
11
|
+
ProjectStatsAndLimits,
|
|
12
|
+
SpaceInstanceCounts,
|
|
13
|
+
SpaceInstanceCountsList,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class StatisticsAPI(APIClient):
|
|
18
|
+
_RESOURCE_PATH = "/models/statistics"
|
|
19
|
+
|
|
20
|
+
def __init__(self, config: ClientConfig, api_version: str | None, cognite_client: CogniteClient) -> None:
|
|
21
|
+
# This is an alpha API, which requires a specific version.
|
|
22
|
+
super().__init__(config, "v1", cognite_client)
|
|
23
|
+
self._RETRIEVE_LIMIT = 100
|
|
24
|
+
|
|
25
|
+
def project(self) -> ProjectStatsAndLimits:
|
|
26
|
+
"""`Retrieve project-wide usage data and limits
|
|
27
|
+
|
|
28
|
+
Returns the usage data and limits for a project's data modelling usage, including data model schemas
|
|
29
|
+
and graph instances
|
|
30
|
+
|
|
31
|
+
Returns:
|
|
32
|
+
ProjectStatsAndLimits: The requested statistics and limits
|
|
33
|
+
|
|
34
|
+
Examples:
|
|
35
|
+
Fetch project statistics (and limits) and check the current number of data models vs.
|
|
36
|
+
and how many more can be created:
|
|
37
|
+
>>> from cognite.neat.core._client import NeatClient
|
|
38
|
+
>>> client = NeatClient()
|
|
39
|
+
>>> stats = client.instance_statistics.project()
|
|
40
|
+
>>> num_dm = stats.data_models.current
|
|
41
|
+
>>> num_dm_left = stats.data_models.limit - num_dm
|
|
42
|
+
"""
|
|
43
|
+
response_data = self._get(self._RESOURCE_PATH).json()
|
|
44
|
+
if "project" not in response_data:
|
|
45
|
+
response_data["project"] = self._cognite_client._config.project
|
|
46
|
+
return ProjectStatsAndLimits._load(response_data)
|
|
47
|
+
|
|
48
|
+
@overload
|
|
49
|
+
def list(self, space: str) -> SpaceInstanceCounts: ...
|
|
50
|
+
|
|
51
|
+
@overload
|
|
52
|
+
def list(self, space: SequenceNotStr[str] | None = None) -> SpaceInstanceCountsList: ...
|
|
53
|
+
|
|
54
|
+
def list(self, space: str | SequenceNotStr[str] | None = None) -> SpaceInstanceCounts | SpaceInstanceCountsList:
|
|
55
|
+
"""`Retrieve usage data and limits per space
|
|
56
|
+
|
|
57
|
+
Args:
|
|
58
|
+
space (str | SequenceNotStr[str] | None): The space or spaces to retrieve statistics for.
|
|
59
|
+
If None, all spaces will be retrieved.
|
|
60
|
+
|
|
61
|
+
Returns:
|
|
62
|
+
SpaceInstanceCounts | SpaceInstanceCountsList: InstanceStatsPerSpace if a single space is given, else
|
|
63
|
+
InstanceStatsList (which is a list of InstanceStatsPerSpace)
|
|
64
|
+
|
|
65
|
+
Examples:
|
|
66
|
+
Fetch statistics for a single space:
|
|
67
|
+
>>> from cognite.neat.core._client import NeatClient
|
|
68
|
+
>>> client = NeatClient()
|
|
69
|
+
>>> res = client.instance_statistics.list("my-space")
|
|
70
|
+
Fetch statistics for multiple spaces:
|
|
71
|
+
>>> res = client.instance_statistics.list(
|
|
72
|
+
... ["my-space1", "my-space2"]
|
|
73
|
+
... )
|
|
74
|
+
Fetch statistics for all spaces (ignores the 'space' argument):
|
|
75
|
+
>>> res = client.instance_statistics.list(return_all=True)
|
|
76
|
+
"""
|
|
77
|
+
if space is None:
|
|
78
|
+
return SpaceInstanceCountsList._load(self._get(self._RESOURCE_PATH + "/spaces").json()["items"])
|
|
79
|
+
|
|
80
|
+
is_single = isinstance(space, str)
|
|
81
|
+
|
|
82
|
+
ids = _load_space_identifier(space)
|
|
83
|
+
result = SpaceInstanceCountsList._load(
|
|
84
|
+
itertools.chain.from_iterable(
|
|
85
|
+
self._post(self._RESOURCE_PATH + "/spaces/byids", json={"items": chunk.as_dicts()}).json()["items"]
|
|
86
|
+
for chunk in ids.chunked(self._RETRIEVE_LIMIT)
|
|
87
|
+
)
|
|
88
|
+
)
|
|
89
|
+
if is_single:
|
|
90
|
+
return result[0]
|
|
91
|
+
return result
|
|
@@ -5,6 +5,7 @@ from cognite.neat.core._utils.auth import _CLIENT_NAME
|
|
|
5
5
|
from ._api.data_modeling_loaders import DataModelLoaderAPI
|
|
6
6
|
from ._api.neat_instances import NeatInstancesAPI
|
|
7
7
|
from ._api.schema import SchemaAPI
|
|
8
|
+
from ._api.statistics import StatisticsAPI
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
class NeatClient(CogniteClient):
|
|
@@ -17,3 +18,4 @@ class NeatClient(CogniteClient):
|
|
|
17
18
|
self.loaders = DataModelLoaderAPI(self)
|
|
18
19
|
self.schema = SchemaAPI(self)
|
|
19
20
|
self.instances = NeatInstancesAPI(self)
|
|
21
|
+
self.instance_statistics = StatisticsAPI(self._config, self._config.api_subversion, self)
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
from cognite.client import CogniteClient
|
|
5
|
+
from cognite.client.data_classes._base import CogniteObject, CogniteResource, CogniteResourceList
|
|
6
|
+
from typing_extensions import Self
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@dataclass
|
|
10
|
+
class InstanceCounts(CogniteResource):
|
|
11
|
+
nodes: int
|
|
12
|
+
edges: int
|
|
13
|
+
soft_deleted_nodes: int
|
|
14
|
+
soft_deleted_edges: int
|
|
15
|
+
|
|
16
|
+
@classmethod
|
|
17
|
+
def _load(cls, resource: dict[str, Any], cognite_client: CogniteClient | None = None) -> Self:
|
|
18
|
+
return cls(
|
|
19
|
+
nodes=resource["nodes"],
|
|
20
|
+
edges=resource["edges"],
|
|
21
|
+
soft_deleted_nodes=resource["softDeletedNodes"],
|
|
22
|
+
soft_deleted_edges=resource["softDeletedEdges"],
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@dataclass
|
|
27
|
+
class SpaceInstanceCounts(InstanceCounts):
|
|
28
|
+
space: str
|
|
29
|
+
|
|
30
|
+
@classmethod
|
|
31
|
+
def _load(cls, resource: dict[str, Any], cognite_client: CogniteClient | None = None) -> Self:
|
|
32
|
+
return cls(
|
|
33
|
+
space=resource["space"],
|
|
34
|
+
nodes=resource["nodes"],
|
|
35
|
+
edges=resource["edges"],
|
|
36
|
+
soft_deleted_nodes=resource["softDeletedNodes"],
|
|
37
|
+
soft_deleted_edges=resource["softDeletedEdges"],
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class SpaceInstanceCountsList(CogniteResourceList):
|
|
42
|
+
_RESOURCE = SpaceInstanceCounts
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@dataclass
|
|
46
|
+
class CountLimitPair(CogniteObject):
|
|
47
|
+
count: int
|
|
48
|
+
limit: int
|
|
49
|
+
|
|
50
|
+
@classmethod
|
|
51
|
+
def _load(cls, resource: dict[str, Any], cognite_client: CogniteClient | None = None) -> Self:
|
|
52
|
+
return cls(
|
|
53
|
+
count=resource["count"],
|
|
54
|
+
limit=resource["limit"],
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
@dataclass
|
|
59
|
+
class InstanceCountsLimits(InstanceCounts):
|
|
60
|
+
instances_limit: int
|
|
61
|
+
soft_deleted_instances_limit: int
|
|
62
|
+
|
|
63
|
+
@property
|
|
64
|
+
def instances(self) -> int:
|
|
65
|
+
return self.nodes + self.edges
|
|
66
|
+
|
|
67
|
+
@property
|
|
68
|
+
def soft_deleted_instances(self) -> int:
|
|
69
|
+
return self.soft_deleted_nodes + self.soft_deleted_edges
|
|
70
|
+
|
|
71
|
+
@classmethod
|
|
72
|
+
def _load(cls, resource: dict[str, Any], cognite_client: CogniteClient | None = None) -> Self:
|
|
73
|
+
return cls(
|
|
74
|
+
nodes=resource["nodes"],
|
|
75
|
+
edges=resource["edges"],
|
|
76
|
+
soft_deleted_nodes=resource["softDeletedNodes"],
|
|
77
|
+
soft_deleted_edges=resource["softDeletedEdges"],
|
|
78
|
+
instances_limit=resource["instancesLimit"],
|
|
79
|
+
soft_deleted_instances_limit=resource["softDeletedInstancesLimit"],
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
@dataclass
|
|
84
|
+
class ProjectStatsAndLimits(CogniteResource):
|
|
85
|
+
project: str
|
|
86
|
+
spaces: CountLimitPair
|
|
87
|
+
containers: CountLimitPair
|
|
88
|
+
views: CountLimitPair
|
|
89
|
+
data_models: CountLimitPair
|
|
90
|
+
container_properties: CountLimitPair
|
|
91
|
+
instances: InstanceCountsLimits
|
|
92
|
+
concurrent_read_limit: int
|
|
93
|
+
concurrent_write_limit: int
|
|
94
|
+
concurrent_delete_limit: int
|
|
95
|
+
|
|
96
|
+
@classmethod
|
|
97
|
+
def _load(cls, data: dict[str, Any], cognite_client: CogniteClient | None = None) -> Self:
|
|
98
|
+
return cls(
|
|
99
|
+
project=data["project"],
|
|
100
|
+
spaces=CountLimitPair._load(data["spaces"]),
|
|
101
|
+
containers=CountLimitPair._load(data["containers"]),
|
|
102
|
+
views=CountLimitPair._load(data["views"]),
|
|
103
|
+
data_models=CountLimitPair._load(data["dataModels"]),
|
|
104
|
+
container_properties=CountLimitPair._load(data["containerProperties"]),
|
|
105
|
+
instances=InstanceCountsLimits._load(data["instances"]),
|
|
106
|
+
concurrent_read_limit=data["concurrentReadLimit"],
|
|
107
|
+
concurrent_write_limit=data["concurrentWriteLimit"],
|
|
108
|
+
concurrent_delete_limit=data["concurrentDeleteLimit"],
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
def dump(self, camel_case: bool = True) -> dict[str, Any]:
|
|
112
|
+
return {
|
|
113
|
+
"project": self.project,
|
|
114
|
+
"spaces": self.spaces.dump(camel_case=camel_case),
|
|
115
|
+
"containers": self.containers.dump(camel_case=camel_case),
|
|
116
|
+
"views": self.views.dump(camel_case=camel_case),
|
|
117
|
+
"dataModels" if camel_case else "data_models": self.data_models.dump(camel_case=camel_case),
|
|
118
|
+
"containerProperties" if camel_case else "container_properties": self.container_properties.dump(
|
|
119
|
+
camel_case=camel_case
|
|
120
|
+
),
|
|
121
|
+
"instances": self.instances.dump(camel_case=camel_case),
|
|
122
|
+
"concurrentReadLimit" if camel_case else "concurrent_read_limit": self.concurrent_read_limit,
|
|
123
|
+
"concurrentWriteLimit" if camel_case else "concurrent_write_limit": self.concurrent_write_limit,
|
|
124
|
+
"concurrentDeleteLimit" if camel_case else "concurrent_delete_limit": self.concurrent_delete_limit,
|
|
125
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from collections.abc import Iterator
|
|
2
2
|
from contextlib import contextmanager
|
|
3
3
|
from typing import Any
|
|
4
|
+
from unittest.mock import MagicMock
|
|
4
5
|
|
|
5
6
|
from cognite.client.testing import CogniteClientMock
|
|
6
7
|
|
|
@@ -9,6 +10,7 @@ from cognite.neat.core._client._api_client import NeatClient
|
|
|
9
10
|
from ._api.data_modeling_loaders import DataModelLoaderAPI
|
|
10
11
|
from ._api.neat_instances import NeatInstancesAPI
|
|
11
12
|
from ._api.schema import SchemaAPI
|
|
13
|
+
from ._api.statistics import StatisticsAPI
|
|
12
14
|
|
|
13
15
|
|
|
14
16
|
class NeatClientMock(CogniteClientMock):
|
|
@@ -22,6 +24,8 @@ class NeatClientMock(CogniteClientMock):
|
|
|
22
24
|
super().__init__(*args, **kwargs)
|
|
23
25
|
return
|
|
24
26
|
super().__init__(*args, **kwargs)
|
|
27
|
+
self.instance_statistics = MagicMock(spec_set=StatisticsAPI)
|
|
28
|
+
|
|
25
29
|
self.schema = SchemaAPI(self)
|
|
26
30
|
self.loaders = DataModelLoaderAPI(self)
|
|
27
31
|
self.instances = NeatInstancesAPI(self)
|
|
@@ -12,7 +12,7 @@ from cognite import neat
|
|
|
12
12
|
from cognite.neat.core._issues.errors._general import NeatValueError
|
|
13
13
|
|
|
14
14
|
if TYPE_CHECKING:
|
|
15
|
-
from cognite.neat.core._data_model.models.
|
|
15
|
+
from cognite.neat.core._data_model.models.physical import PhysicalProperty
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
def _is_in_notebook() -> bool:
|
|
@@ -104,9 +104,8 @@ COGNITE_CONCEPTS = (
|
|
|
104
104
|
|
|
105
105
|
DMS_LISTABLE_PROPERTY_LIMIT = 1000
|
|
106
106
|
|
|
107
|
-
|
|
108
|
-
EXAMPLE_GRAPHS = PACKAGE_DIRECTORY / "
|
|
109
|
-
EXAMPLE_WORKFLOWS = PACKAGE_DIRECTORY / "_workflows" / "examples"
|
|
107
|
+
EXAMPLE_DATA_MODELS = PACKAGE_DIRECTORY / "core" / "_data_model" / "examples"
|
|
108
|
+
EXAMPLE_GRAPHS = PACKAGE_DIRECTORY / "core" / "_instances" / "examples"
|
|
110
109
|
|
|
111
110
|
DEFAULT_SPACE_URI = "http://purl.org/cognite/space/{space}#"
|
|
112
111
|
SPACE_URI_PATTERN = re.compile(r"http://purl.org/cognite/space/(?P<space>[^#]+)#$")
|
|
@@ -196,11 +195,11 @@ _ASSET_PATH_PROPERTY = {
|
|
|
196
195
|
BASE_MODEL = Literal["CogniteCore"]
|
|
197
196
|
|
|
198
197
|
|
|
199
|
-
def get_asset_read_only_properties_with_connection() -> "list[
|
|
198
|
+
def get_asset_read_only_properties_with_connection() -> "list[PhysicalProperty]":
|
|
200
199
|
"""Gets the asset read-only properties with connection, i.e. Root and Path."""
|
|
201
|
-
from cognite.neat.core._data_model.models.
|
|
200
|
+
from cognite.neat.core._data_model.models.physical import PhysicalProperty
|
|
202
201
|
|
|
203
|
-
return [
|
|
202
|
+
return [PhysicalProperty.model_validate(item) for item in (_ASSET_ROOT_PROPERTY, _ASSET_PATH_PROPERTY)]
|
|
204
203
|
|
|
205
204
|
|
|
206
205
|
def get_base_concepts(
|
|
@@ -15,9 +15,10 @@ class EntityTypes(StrEnum):
|
|
|
15
15
|
predicate = "predicate"
|
|
16
16
|
object = "object"
|
|
17
17
|
class_ = "class"
|
|
18
|
+
concept = "concept"
|
|
18
19
|
parent_class = "parent_class"
|
|
19
20
|
property_ = "property"
|
|
20
|
-
|
|
21
|
+
physical_property = "physical_property"
|
|
21
22
|
conceptual_property = "conceptual_property"
|
|
22
23
|
object_property = "ObjectProperty"
|
|
23
24
|
data_property = "DatatypeProperty"
|
|
@@ -43,9 +44,11 @@ class EntityTypes(StrEnum):
|
|
|
43
44
|
space = "space"
|
|
44
45
|
|
|
45
46
|
|
|
46
|
-
def get_reserved_words(
|
|
47
|
+
def get_reserved_words(
|
|
48
|
+
key: Literal["concept", "view", "property", "space"],
|
|
49
|
+
) -> list[str]:
|
|
47
50
|
return {
|
|
48
|
-
"
|
|
51
|
+
"concept": ["Concept", "concept"],
|
|
49
52
|
"view": [
|
|
50
53
|
"Query",
|
|
51
54
|
"Mutation",
|
|
@@ -103,10 +106,14 @@ DATA_MODEL_COMPLIANCE_REGEX = r"^[a-zA-Z]([a-zA-Z0-9_]{0,253}[a-zA-Z0-9])?$"
|
|
|
103
106
|
VIEW_ID_COMPLIANCE_REGEX = (
|
|
104
107
|
rf"(?!^({'|'.join(get_reserved_words('view'))})$)" r"(^[a-zA-Z][a-zA-Z0-9_]{0,253}[a-zA-Z0-9]?$)"
|
|
105
108
|
)
|
|
106
|
-
|
|
107
|
-
rf"(?!^({'|'.join(get_reserved_words('property'))})$)"
|
|
109
|
+
PHYSICAL_PROPERTY_ID_COMPLIANCE_REGEX = (
|
|
110
|
+
rf"(?!^({'|'.join(get_reserved_words('property'))})$)"
|
|
111
|
+
r"(^[a-zA-Z][a-zA-Z0-9_]{0,253}[a-zA-Z0-9]?$)"
|
|
112
|
+
)
|
|
113
|
+
CONCEPT_ID_COMPLIANCE_REGEX = (
|
|
114
|
+
rf"(?!^({'|'.join(get_reserved_words('concept'))})$)"
|
|
115
|
+
r"(^[a-zA-Z0-9._-]{0,253}[a-zA-Z0-9]?$)"
|
|
108
116
|
)
|
|
109
|
-
CLASS_ID_COMPLIANCE_REGEX = rf"(?!^({'|'.join(get_reserved_words('class'))})$)" r"(^[a-zA-Z0-9._-]{0,253}[a-zA-Z0-9]?$)"
|
|
110
117
|
|
|
111
118
|
INFORMATION_PROPERTY_ID_COMPLIANCE_REGEX = r"^(\*)|(?!^(Property|property)$)(^[a-zA-Z0-9._-]{0,253}[a-zA-Z0-9]?$)"
|
|
112
119
|
VERSION_COMPLIANCE_REGEX = r"^[a-zA-Z0-9]([.a-zA-Z0-9_-]{0,41}[a-zA-Z0-9])?$"
|
|
@@ -139,15 +146,15 @@ class _Patterns:
|
|
|
139
146
|
return re.compile(VIEW_ID_COMPLIANCE_REGEX)
|
|
140
147
|
|
|
141
148
|
@cached_property
|
|
142
|
-
def
|
|
143
|
-
return re.compile(
|
|
149
|
+
def physical_property_id_compliance(self) -> re.Pattern[str]:
|
|
150
|
+
return re.compile(PHYSICAL_PROPERTY_ID_COMPLIANCE_REGEX)
|
|
144
151
|
|
|
145
152
|
@cached_property
|
|
146
|
-
def
|
|
147
|
-
return re.compile(
|
|
153
|
+
def concept_id_compliance(self) -> re.Pattern[str]:
|
|
154
|
+
return re.compile(CONCEPT_ID_COMPLIANCE_REGEX)
|
|
148
155
|
|
|
149
156
|
@cached_property
|
|
150
|
-
def
|
|
157
|
+
def conceptual_property_id_compliance(self) -> re.Pattern[str]:
|
|
151
158
|
return re.compile(INFORMATION_PROPERTY_ID_COMPLIANCE_REGEX)
|
|
152
159
|
|
|
153
160
|
@cached_property
|
|
@@ -158,11 +165,11 @@ class _Patterns:
|
|
|
158
165
|
self,
|
|
159
166
|
entity: EntityTypes,
|
|
160
167
|
) -> re.Pattern:
|
|
161
|
-
if entity == EntityTypes.
|
|
162
|
-
return self.
|
|
168
|
+
if entity == EntityTypes.concept:
|
|
169
|
+
return self.concept_id_compliance
|
|
163
170
|
|
|
164
171
|
elif entity == EntityTypes.conceptual_property:
|
|
165
|
-
return self.
|
|
172
|
+
return self.conceptual_property_id_compliance
|
|
166
173
|
|
|
167
174
|
elif entity == EntityTypes.view:
|
|
168
175
|
return self.view_id_compliance
|
|
@@ -171,8 +178,8 @@ class _Patterns:
|
|
|
171
178
|
elif entity == EntityTypes.container:
|
|
172
179
|
return self.view_id_compliance
|
|
173
180
|
|
|
174
|
-
elif entity == EntityTypes.
|
|
175
|
-
return self.
|
|
181
|
+
elif entity == EntityTypes.physical_property:
|
|
182
|
+
return self.physical_property_id_compliance
|
|
176
183
|
|
|
177
184
|
elif entity == EntityTypes.version:
|
|
178
185
|
return self.version_compliance
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from typing import Generic, TypeAlias, TypeVar
|
|
3
|
+
|
|
4
|
+
from cognite.neat.core._data_model.models import (
|
|
5
|
+
ConceptualDataModel,
|
|
6
|
+
PhysicalDataModel,
|
|
7
|
+
)
|
|
8
|
+
from cognite.neat.core._data_model.models.conceptual._unverified import (
|
|
9
|
+
UnverifiedConceptualDataModel,
|
|
10
|
+
)
|
|
11
|
+
from cognite.neat.core._data_model.models.physical._unverified import (
|
|
12
|
+
UnverifiedPhysicalDataModel,
|
|
13
|
+
)
|
|
14
|
+
from cognite.neat.core._utils.spreadsheet import SpreadsheetRead
|
|
15
|
+
|
|
16
|
+
VerifiedDataModel: TypeAlias = ConceptualDataModel | PhysicalDataModel
|
|
17
|
+
|
|
18
|
+
T_VerifiedDataModel = TypeVar("T_VerifiedDataModel", bound=VerifiedDataModel)
|
|
19
|
+
UnverifiedDataModel: TypeAlias = UnverifiedPhysicalDataModel | UnverifiedConceptualDataModel
|
|
20
|
+
T_UnverifiedDataModel = TypeVar("T_UnverifiedDataModel", bound=UnverifiedDataModel)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@dataclass
|
|
24
|
+
class ImportedDataModel(Generic[T_UnverifiedDataModel]):
|
|
25
|
+
"""This class is used to store results of data model import from a source prior to
|
|
26
|
+
verification and validation.
|
|
27
|
+
|
|
28
|
+
Attributes:
|
|
29
|
+
unverified_data_model: The unverified data model.
|
|
30
|
+
context: The context of the import, including warnings, errors and any other
|
|
31
|
+
relevant information.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
unverified_data_model: T_UnverifiedDataModel | None
|
|
35
|
+
context: dict[str, SpreadsheetRead]
|
|
36
|
+
|
|
37
|
+
@classmethod
|
|
38
|
+
def display_type_name(cls) -> str:
|
|
39
|
+
return "UnverifiedModel"
|
|
40
|
+
|
|
41
|
+
@property
|
|
42
|
+
def display_name(self) -> str:
|
|
43
|
+
if self.unverified_data_model is None:
|
|
44
|
+
return "Failed to load data model"
|
|
45
|
+
return self.unverified_data_model.display_name
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
ImportedUnverifiedDataModel: TypeAlias = (
|
|
49
|
+
ImportedDataModel[UnverifiedPhysicalDataModel] | ImportedDataModel[UnverifiedConceptualDataModel]
|
|
50
|
+
)
|
|
51
|
+
T_ImportedUnverifiedDataModel = TypeVar("T_ImportedUnverifiedDataModel", bound=ImportedUnverifiedDataModel)
|
|
52
|
+
|
|
53
|
+
DataModel: TypeAlias = (
|
|
54
|
+
ConceptualDataModel
|
|
55
|
+
| PhysicalDataModel
|
|
56
|
+
| ImportedDataModel[UnverifiedPhysicalDataModel]
|
|
57
|
+
| ImportedDataModel[UnverifiedConceptualDataModel]
|
|
58
|
+
)
|
|
59
|
+
T_DataModel = TypeVar("T_DataModel", bound=DataModel)
|