cognite-neat 0.123.17__tar.gz → 0.123.19__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.

Files changed (650) hide show
  1. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/PKG-INFO +1 -1
  2. cognite_neat-0.123.19/cognite/neat/_version.py +2 -0
  3. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/_shared.py +2 -2
  4. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/importers/__init__.py +9 -1
  5. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/importers/_dict2data_model.py +1 -1
  6. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/importers/_dms2data_model.py +1 -1
  7. cognite_neat-0.123.19/cognite/neat/core/_data_model/importers/_graph2data_model.py +299 -0
  8. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/importers/_rdf/_base.py +1 -1
  9. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/importers/_spreadsheet2data_model.py +3 -2
  10. cognite_neat-0.123.19/cognite/neat/core/_data_model/models/_import_contexts.py +82 -0
  11. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/conceptual/_validation.py +25 -3
  12. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/physical/_validation.py +33 -3
  13. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/transformers/_converters.py +4 -4
  14. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/_contextmanagers.py +8 -6
  15. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/_factory.py +10 -7
  16. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/warnings/__init__.py +2 -0
  17. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/warnings/_models.py +17 -0
  18. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_store/_instance.py +1 -1
  19. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_utils/auxiliary.py +1 -1
  20. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_base.py +1 -0
  21. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_state.py +14 -0
  22. cognite_neat-0.123.19/last_changelog_entry.md +5 -0
  23. cognite_neat-0.123.19/last_git_message.txt +24 -0
  24. cognite_neat-0.123.19/last_version.txt +1 -0
  25. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/pyproject.toml +1 -1
  26. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/__init__.py +1 -0
  27. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_graph/car.py +6 -6
  28. cognite_neat-0.123.19/tests/data/_schema/conceptual/info-arch-car-rules.xlsx +0 -0
  29. cognite_neat-0.123.19/tests/data/_schema/physical/car_dms_rules.xlsx +0 -0
  30. cognite_neat-0.123.19/tests/data/_schema/physical_invalid/views_without_properties.xlsx +0 -0
  31. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_end_to_end/test_rules_flow.py +16 -0
  32. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_importers/test_excel_importer.py +12 -1
  33. cognite_neat-0.123.19/tests/tests_unit/test_rules/test_importers/test_graph_data_model_importer.py +126 -0
  34. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_importers/test_owl_importer.py +1 -1
  35. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_models/test_conceptual_model.py +9 -3
  36. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/uv.lock +1 -1
  37. cognite_neat-0.123.17/cognite/neat/_version.py +0 -2
  38. cognite_neat-0.123.17/last_changelog_entry.md +0 -5
  39. cognite_neat-0.123.17/last_git_message.txt +0 -24
  40. cognite_neat-0.123.17/last_version.txt +0 -1
  41. cognite_neat-0.123.17/tests/data/_schema/conceptual/info-arch-car-rules.xlsx +0 -0
  42. cognite_neat-0.123.17/tests/data/_schema/physical/car_dms_rules.xlsx +0 -0
  43. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/.coveragerc +0 -0
  44. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/.gemini/styleguide.md +0 -0
  45. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/.github/CODEOWNERS +0 -0
  46. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
  47. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
  48. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/.github/pull_request_template.md +0 -0
  49. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/.github/renovate.json +0 -0
  50. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/.github/workflows/code-quality.yaml +0 -0
  51. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/.github/workflows/release.yaml +0 -0
  52. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/.gitignore +0 -0
  53. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/.pre-commit-config.yaml +0 -0
  54. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/.readthedocs.yaml +0 -0
  55. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/CODE_OF_CONDUCT.md +0 -0
  56. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/CONTRIBUTING.md +0 -0
  57. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/LICENSE +0 -0
  58. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/README.md +0 -0
  59. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cdf.toml +0 -0
  60. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/codecov.yml +0 -0
  61. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/__init__.py +0 -0
  62. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/__init__.py +0 -0
  63. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_client/__init__.py +0 -0
  64. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_client/_api/__init__.py +0 -0
  65. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_client/_api/data_modeling_loaders.py +0 -0
  66. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_client/_api/neat_instances.py +0 -0
  67. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_client/_api/schema.py +0 -0
  68. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_client/_api/statistics.py +0 -0
  69. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_client/_api_client.py +0 -0
  70. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_client/data_classes/__init__.py +0 -0
  71. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_client/data_classes/data_modeling.py +0 -0
  72. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_client/data_classes/neat_sequence.py +0 -0
  73. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_client/data_classes/schema.py +0 -0
  74. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_client/data_classes/statistics.py +0 -0
  75. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_client/testing.py +0 -0
  76. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_config.py +0 -0
  77. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_constants.py +0 -0
  78. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/__init__.py +0 -0
  79. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/_constants.py +0 -0
  80. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/analysis/__init__.py +0 -0
  81. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/analysis/_base.py +0 -0
  82. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/catalog/__init__.py +0 -0
  83. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/catalog/classic_model.xlsx +0 -0
  84. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/catalog/conceptual-imf-data-model.xlsx +0 -0
  85. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/catalog/hello_world_pump.xlsx +0 -0
  86. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/exporters/__init__.py +0 -0
  87. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/exporters/_base.py +0 -0
  88. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/exporters/_data_model2dms.py +0 -0
  89. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/exporters/_data_model2excel.py +0 -0
  90. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/exporters/_data_model2instance_template.py +0 -0
  91. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/exporters/_data_model2ontology.py +0 -0
  92. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/exporters/_data_model2yaml.py +0 -0
  93. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/importers/_base.py +0 -0
  94. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/importers/_base_file_reader.py +0 -0
  95. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/importers/_rdf/__init__.py +0 -0
  96. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/importers/_rdf/_inference2rdata_model.py +0 -0
  97. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/importers/_rdf/_owl2data_model.py +0 -0
  98. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/importers/_rdf/_shared.py +0 -0
  99. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/__init__.py +0 -0
  100. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/_base_unverified.py +0 -0
  101. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/_base_verified.py +0 -0
  102. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/_types.py +0 -0
  103. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/conceptual/__init__.py +0 -0
  104. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/conceptual/_unverified.py +0 -0
  105. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/conceptual/_verified.py +0 -0
  106. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/data_types.py +0 -0
  107. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/entities/__init__.py +0 -0
  108. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/entities/_constants.py +0 -0
  109. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/entities/_loaders.py +0 -0
  110. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/entities/_multi_value.py +0 -0
  111. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/entities/_single_value.py +0 -0
  112. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/entities/_types.py +0 -0
  113. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/entities/_wrapped.py +0 -0
  114. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/mapping/__init__.py +0 -0
  115. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/mapping/_classic2core.py +0 -0
  116. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/mapping/_classic2core.yaml +0 -0
  117. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/physical/__init__.py +0 -0
  118. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/physical/_exporter.py +0 -0
  119. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/physical/_unverified.py +0 -0
  120. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/models/physical/_verified.py +0 -0
  121. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/transformers/__init__.py +0 -0
  122. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/transformers/_base.py +0 -0
  123. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/transformers/_mapping.py +0 -0
  124. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/transformers/_union_conceptual.py +0 -0
  125. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_data_model/transformers/_verification.py +0 -0
  126. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/__init__.py +0 -0
  127. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/_shared.py +0 -0
  128. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/_tracking/__init__.py +0 -0
  129. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/_tracking/base.py +0 -0
  130. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/_tracking/log.py +0 -0
  131. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
  132. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/examples/Knowledge-Graph-Nordic44.xml +0 -0
  133. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/examples/__init__.py +0 -0
  134. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
  135. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/__init__.py +0 -0
  136. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_base.py +0 -0
  137. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_classic_cdf/__init__.py +0 -0
  138. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_classic_cdf/_assets.py +0 -0
  139. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_classic_cdf/_base.py +0 -0
  140. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_classic_cdf/_classic.py +0 -0
  141. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_classic_cdf/_data_sets.py +0 -0
  142. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_classic_cdf/_events.py +0 -0
  143. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_classic_cdf/_files.py +0 -0
  144. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_classic_cdf/_labels.py +0 -0
  145. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_classic_cdf/_relationships.py +0 -0
  146. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_classic_cdf/_sequences.py +0 -0
  147. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_classic_cdf/_timeseries.py +0 -0
  148. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_dict.py +0 -0
  149. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_dms.py +0 -0
  150. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_dms_graph.py +0 -0
  151. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_mock_graph_generator.py +0 -0
  152. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_raw.py +0 -0
  153. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/extractors/_rdf_file.py +0 -0
  154. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/loaders/__init__.py +0 -0
  155. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/loaders/_base.py +0 -0
  156. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/loaders/_rdf2dms.py +0 -0
  157. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/loaders/_rdf_to_instance_space.py +0 -0
  158. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/queries/__init__.py +0 -0
  159. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/queries/_base.py +0 -0
  160. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/queries/_queries.py +0 -0
  161. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/queries/_select.py +0 -0
  162. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/queries/_update.py +0 -0
  163. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/transformers/__init__.py +0 -0
  164. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/transformers/_base.py +0 -0
  165. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/transformers/_classic_cdf.py +0 -0
  166. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/transformers/_prune_graph.py +0 -0
  167. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/transformers/_rdfpath.py +0 -0
  168. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_instances/transformers/_value_type.py +0 -0
  169. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/__init__.py +0 -0
  170. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/_base.py +0 -0
  171. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/errors/__init__.py +0 -0
  172. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/errors/_external.py +0 -0
  173. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/errors/_general.py +0 -0
  174. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/errors/_properties.py +0 -0
  175. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/errors/_resources.py +0 -0
  176. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/errors/_wrapper.py +0 -0
  177. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/formatters.py +0 -0
  178. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/warnings/_external.py +0 -0
  179. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/warnings/_general.py +0 -0
  180. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/warnings/_properties.py +0 -0
  181. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/warnings/_resources.py +0 -0
  182. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_issues/warnings/user_modeling.py +0 -0
  183. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_shared.py +0 -0
  184. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_store/__init__.py +0 -0
  185. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_store/_data_model.py +0 -0
  186. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_store/_provenance.py +0 -0
  187. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_store/exceptions.py +0 -0
  188. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_utils/__init__.py +0 -0
  189. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_utils/auth.py +0 -0
  190. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_utils/collection_.py +0 -0
  191. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_utils/graph_transformations_report.py +0 -0
  192. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_utils/io_.py +0 -0
  193. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_utils/rdf_.py +0 -0
  194. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_utils/reader/__init__.py +0 -0
  195. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_utils/reader/_base.py +0 -0
  196. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_utils/spreadsheet.py +0 -0
  197. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_utils/tarjan.py +0 -0
  198. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_utils/text.py +0 -0
  199. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_utils/time_.py +0 -0
  200. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_utils/upload.py +0 -0
  201. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/core/_utils/xml_.py +0 -0
  202. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/plugins/__init__.py +0 -0
  203. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/plugins/_issues.py +0 -0
  204. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/plugins/_manager.py +0 -0
  205. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/plugins/data_model/__init__.py +0 -0
  206. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/plugins/data_model/importers/__init__.py +0 -0
  207. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/plugins/data_model/importers/_base.py +0 -0
  208. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/py.typed +0 -0
  209. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/__init__.py +0 -0
  210. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_collector.py +0 -0
  211. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_drop.py +0 -0
  212. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_experimental.py +0 -0
  213. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_explore.py +0 -0
  214. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_fix.py +0 -0
  215. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_inspect.py +0 -0
  216. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_mapping.py +0 -0
  217. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_plugin.py +0 -0
  218. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_prepare.py +0 -0
  219. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_read.py +0 -0
  220. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_set.py +0 -0
  221. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_show.py +0 -0
  222. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_state/README.md +0 -0
  223. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_subset.py +0 -0
  224. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_template.py +0 -0
  225. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_to.py +0 -0
  226. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/_wizard.py +0 -0
  227. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/engine/__init__.py +0 -0
  228. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/engine/_import.py +0 -0
  229. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/engine/_interface.py +0 -0
  230. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/engine/_load.py +0 -0
  231. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/cognite/neat/session/exceptions.py +0 -0
  232. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/dev.py +0 -0
  233. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/DataModelCDF.PNG +0 -0
  234. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/DataModelInstancesCDF.PNG +0 -0
  235. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/DataModelInstancesVizCDF.PNG +0 -0
  236. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/aml-dm-cdf.png +0 -0
  237. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/aml-dm.png +0 -0
  238. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/aml-instances-cdf.png +0 -0
  239. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/aml-instances-full.png +0 -0
  240. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations.png +0 -0
  241. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_dms.png +0 -0
  242. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_dms_typed.png +0 -0
  243. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_populated.png +0 -0
  244. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_populated_with_typed.png +0 -0
  245. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/authorship.png +0 -0
  246. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/base-components.png +0 -0
  247. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/bid_capacity_data_model.png +0 -0
  248. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/change_validate_step.png +0 -0
  249. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/connecting_metadata_dm.png +0 -0
  250. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/connecting_metadata_populated.png +0 -0
  251. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/connecting_metadata_published_dm.png +0 -0
  252. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/container_spec.png +0 -0
  253. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/core_extension.png +0 -0
  254. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/core_extension_excel.png +0 -0
  255. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/core_extension_no_connection.png +0 -0
  256. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/core_extension_with_properties.png +0 -0
  257. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/data-exploration.gif +0 -0
  258. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/data-model-nordic44.png +0 -0
  259. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/data-modeling-flow.png +0 -0
  260. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/dexpi-dm-cdf.png +0 -0
  261. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/dexpi-dm-viz.png +0 -0
  262. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/dexpi-graph-viz.png +0 -0
  263. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/dexpi-instance-cdf.png +0 -0
  264. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/dexpi-transformed-graph-viz.png +0 -0
  265. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/dm-classes.png +0 -0
  266. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/dm-object-shapes.png +0 -0
  267. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/dm-prefixes.png +0 -0
  268. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/dm-source-to-solution-mapping.png +0 -0
  269. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/dm2cdf-asset.png +0 -0
  270. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/dm2cdf-mapping.png +0 -0
  271. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/execution-history.gif +0 -0
  272. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/export_dms_config.png +0 -0
  273. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/export_dms_executed.png +0 -0
  274. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/export_dms_workflow.png +0 -0
  275. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/features.png +0 -0
  276. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/graph-etl-flow.png +0 -0
  277. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/high-level-io.png +0 -0
  278. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/instances-nordic44.png +0 -0
  279. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/instances-sheet.png +0 -0
  280. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/key-aspects-of-neat.png +0 -0
  281. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/knowledge-graph-viz-filtering.gif +0 -0
  282. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/knowledge-graph-viz.gif +0 -0
  283. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/life_cycle_analitic_solution_export_dms.png +0 -0
  284. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/life_cycle_converter_model_analytic_solution_model.png +0 -0
  285. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/life_cycle_download_reference_model_analytic_soluteion_model.png +0 -0
  286. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/life_cycle_download_reference_model_analytic_solution_model_export.png +0 -0
  287. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/logo.png +0 -0
  288. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/metadata-sheet.png +0 -0
  289. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/multi-hop.png +0 -0
  290. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/neat-high-level.png +0 -0
  291. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/neat-two_flows.png +0 -0
  292. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/neat_shift_tab.png +0 -0
  293. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/neat_tab.png +0 -0
  294. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/prefixes-sheet.png +0 -0
  295. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/pump_hello_world_published.png +0 -0
  296. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/rdf-in-nutshell.png +0 -0
  297. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/rdf2cdf-graph-change.jpg +0 -0
  298. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/rdf2cdf-graph-resurrect.jpg +0 -0
  299. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/rdf2cdf-graph.jpg +0 -0
  300. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/rdf2cdf-init-run-step1.jpg +0 -0
  301. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/rdf2cdf-init-run-step2.png +0 -0
  302. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/rdf2cdf-init-run.jpg +0 -0
  303. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/rdf2cdf-post-init.jpg +0 -0
  304. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/run_workflow.png +0 -0
  305. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/sheet2cdf-asset-hierarchy.png +0 -0
  306. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/sheet2cdf-running-workflow.gif +0 -0
  307. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/sheet2cdf-transformation-rules-ui.png +0 -0
  308. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/sheet2cdf-upload-rules.gif +0 -0
  309. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/sheet2cdf-workflow-steps.png +0 -0
  310. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/sheet2cdf-workflow.gif +0 -0
  311. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/sheet2cdf-workflow.png +0 -0
  312. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/step-configurables.png +0 -0
  313. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/step-metrics.png +0 -0
  314. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/tutorial-notebooks-part-2_graph-capturing-sheet.gif +0 -0
  315. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/validate_workflow.png +0 -0
  316. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/wf-ephemeral-mode.png +0 -0
  317. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/wf-overview.gif +0 -0
  318. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/wf-persistent-blocking-mode.png +0 -0
  319. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/wf-persistent-non-blocking.png +0 -0
  320. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/wf-start-mode-ui.png +0 -0
  321. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/wind_farm_classic_knowledge_graph.png +0 -0
  322. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/wind_farm_data_product_instances.png +0 -0
  323. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/work-in-progress.png +0 -0
  324. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/workflow-context.jpg +0 -0
  325. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/working_with_metadata_provenance.png +0 -0
  326. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/figs/working_with_metadata_published_dm.png +0 -0
  327. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/rules/cdf-dms-architect-alice.xlsx +0 -0
  328. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/rules/dms-addition-svein-harald.xlsx +0 -0
  329. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/rules/dms-analytics-olav.xlsx +0 -0
  330. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/rules/dms-architect-rules-raw-filter-example.xlsx +0 -0
  331. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/rules/dms-architect-rules-template.xlsx +0 -0
  332. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/rules/dms-rebuild-olav.xlsx +0 -0
  333. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/rules/domain-expert-rules-template.xlsx +0 -0
  334. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/rules/expert-grid-emma.xlsx +0 -0
  335. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/rules/expert-wind-energy-jon.xlsx +0 -0
  336. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/rules/information-addition-svein-harald.xlsx +0 -0
  337. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/rules/information-analytics-olav-ref.xlsx +0 -0
  338. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/rules/information-analytics-olav.xlsx +0 -0
  339. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/rules/information-architect-david.xlsx +0 -0
  340. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/rules/information-architect-rules-template.xlsx +0 -0
  341. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/videos/tutorial-1-defining-data-model.mp4 +0 -0
  342. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/videos/tutorial-1-download-rules-template.mp4 +0 -0
  343. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/videos/tutorial-1-upload-gql-schema-to-cdf.mp4 +0 -0
  344. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/videos/tutorial-2-graph-capturing-sheet.mp4 +0 -0
  345. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/videos/tutorial-3-asset-hierarchy.mp4 +0 -0
  346. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/videos/tutorial-3-decommissioning.mp4 +0 -0
  347. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/videos/tutorial-3-relationships.mp4 +0 -0
  348. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/videos/tutorial-3-resurrection.mp4 +0 -0
  349. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/artifacts/videos/tutorial-4-asset-hierarchy.mp4 +0 -0
  350. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/data-modeling-principles.md +0 -0
  351. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/excel_data_modeling/conceptual/overview.md +0 -0
  352. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/excel_data_modeling/conceptual/reference.md +0 -0
  353. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/excel_data_modeling/data_model.md +0 -0
  354. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/excel_data_modeling/physical/enum.md +0 -0
  355. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/excel_data_modeling/physical/overview.md +0 -0
  356. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/excel_data_modeling/physical/properties.md +0 -0
  357. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/excel_data_modeling/physical/reference.md +0 -0
  358. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/excel_data_modeling/physical/views.md +0 -0
  359. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/excel_data_modeling/units.md +0 -0
  360. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/gettingstarted/installation.md +0 -0
  361. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/gettingstarted/why-neat.md +0 -0
  362. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/index.md +0 -0
  363. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/reference/NeatSession/base.md +0 -0
  364. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/reference/NeatSession/drop.md +0 -0
  365. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/reference/NeatSession/fix.md +0 -0
  366. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/reference/NeatSession/inspect.md +0 -0
  367. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/reference/NeatSession/mapping.md +0 -0
  368. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/reference/NeatSession/prepare.md +0 -0
  369. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/reference/NeatSession/read.md +0 -0
  370. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/reference/NeatSession/set.md +0 -0
  371. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/reference/NeatSession/show.md +0 -0
  372. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/reference/NeatSession/subset.md +0 -0
  373. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/reference/NeatSession/template.md +0 -0
  374. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/reference/NeatSession/to.md +0 -0
  375. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/reference/issues/base.md +0 -0
  376. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/reference/issues/errors.md +0 -0
  377. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/reference/issues/user_model_warnings.md +0 -0
  378. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/reference/issues/warnings.md +0 -0
  379. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/reference/overview.md +0 -0
  380. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/tutorials/data-modeling/cold_start.ipynb +0 -0
  381. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/tutorials/data-modeling/figs/data-modeling-flow.png +0 -0
  382. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/tutorials/data-modeling/files/wind_farm_prospecting_conceptual_data_model.xlsx +0 -0
  383. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/tutorials/data-modeling/files/wind_farm_prospecting_conceptual_data_model_expanded.xlsx +0 -0
  384. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/tutorials/data-modeling/files/wind_farm_prospecting_physical_data_model.xlsx +0 -0
  385. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/tutorials/data-modeling/from-conceptual-to-physical-via-CDM.ipynb +0 -0
  386. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/tutorials/data-modeling/http_purl.org_cognite_neat_data-model_verified_conceptual_wind_energy_WindFarmProspecting_v1.html +0 -0
  387. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/tutorials/data-modeling/http_purl.org_cognite_neat_data-model_verified_conceptual_wind_energy_WindFarmProspecting_v1_implements.html +0 -0
  388. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/tutorials/data-modeling/http_purl.org_cognite_neat_data-model_verified_physical_neat_playground_NeatHelloWorld_v1.html +0 -0
  389. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/tutorials/data-modeling/my_first_model.xlsx +0 -0
  390. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/tutorials/data-modeling/physical-data-model.xlsx +0 -0
  391. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/docs/tutorials/introduction/introduction.ipynb +0 -0
  392. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/mkdocs.yml +0 -0
  393. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/clean_space.py +0 -0
  394. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/core_classic_mapping.xlsx +0 -0
  395. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/create_classic_core_mapping_yaml.py +0 -0
  396. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/dependency_profiler.py +0 -0
  397. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/docs_generate_reference.py +0 -0
  398. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/docs_generate_unit.py +0 -0
  399. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/generate_steps_md.py +0 -0
  400. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/.gitignore +0 -0
  401. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/README.md +0 -0
  402. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/config.dev.yaml +0 -0
  403. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/neat_integration_runner/README.md +0 -0
  404. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/neat_integration_runner/auth/neat_cicd_testing.group.yaml +0 -0
  405. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/lift_pumps/classic/lift_pump_stations_root.Asset.csv +0 -0
  406. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/lift_pumps/data_sets/hierarchies.DataSet.yaml +0 -0
  407. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/lift_pumps/raw/collections_pump.Table.csv +0 -0
  408. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/lift_pumps/raw/collections_pump.Table.yaml +0 -0
  409. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/classic/Measurement.Asset.yaml +0 -0
  410. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/classic/Measurement.Label.yaml +0 -0
  411. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/classic/MetMast.Asset.yaml +0 -0
  412. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/classic/PowerGeneratingUnit.Label.yaml +0 -0
  413. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/classic/Utsira.Asset.yaml +0 -0
  414. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-01.Asset.yaml +0 -0
  415. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-01_to_MetMast.Relationship.yaml +0 -0
  416. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-02.Asset.yaml +0 -0
  417. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-02_to_MetMast.Relationship.yaml +0 -0
  418. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/classic/WindTurbine.Label.yaml +0 -0
  419. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/classic/metMast.Label.yaml +0 -0
  420. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/classic/planned_WT-01_2022-01-01.Event.yaml +0 -0
  421. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/classic/power_curve_manufacturer1.Sequence.yaml +0 -0
  422. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/data_sets/maintenance.DataSet.yaml +0 -0
  423. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/data_sets/source_ds.DataSet.yaml +0 -0
  424. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/data_sets/usecase_01.DataSet.yaml +0 -0
  425. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/files/WT-01_datasheet.FileMetadata.yaml +0 -0
  426. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/files/WT-01_datasheet.txt +0 -0
  427. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-01_forecast.TimeSeries.yaml +0 -0
  428. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-01_production.TimeSeries.yaml +0 -0
  429. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-02_forecast.TimeSeries.yaml +0 -0
  430. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-02_production.TimeSeries.yaml +0 -0
  431. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/manual_test_dms_importer.py +0 -0
  432. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/migration.py +0 -0
  433. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/oxi_remote/README.md +0 -0
  434. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/oxi_remote/docker-compose.yaml +0 -0
  435. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/test_lookup_table.csv +0 -0
  436. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/scripts/windfarm_to_toolkit.py +0 -0
  437. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/__init__.py +0 -0
  438. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/config.py +0 -0
  439. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/conftest.py +0 -0
  440. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_graph/aml-raw-graph.ttl +0 -0
  441. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_graph/aml_example.aml +0 -0
  442. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_graph/dexpi-raw-graph.ttl +0 -0
  443. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_graph/dexpi_example.xml +0 -0
  444. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_graph/iodd_Piab-piCOMPACT10X-20230509-IODD1.1.xml +0 -0
  445. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_graph/low-quality-graph.ttl +0 -0
  446. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_instances/asset_centric_cdf/assets.yaml +0 -0
  447. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_instances/asset_centric_cdf/events.yaml +0 -0
  448. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_instances/asset_centric_cdf/files.yaml +0 -0
  449. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_instances/asset_centric_cdf/labels.yaml +0 -0
  450. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_instances/asset_centric_cdf/relationships.yaml +0 -0
  451. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_instances/asset_centric_cdf/sequence_rows.yaml +0 -0
  452. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_instances/asset_centric_cdf/sequences.yaml +0 -0
  453. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_instances/asset_centric_cdf/timeseries.yaml +0 -0
  454. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_instances/classic_windfarm.py +0 -0
  455. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/conceptual/broken_concepts.xlsx +0 -0
  456. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/conceptual/dangling-properties.xlsx +0 -0
  457. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/conceptual/info_with_cdm_ref.xlsx +0 -0
  458. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/conceptual/information-unknown-value-type.xlsx +0 -0
  459. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/conceptual/only_concepts.xlsx +0 -0
  460. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/conceptual/ontology.ttl +0 -0
  461. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/conversion/single_concept.conceptual.yaml +0 -0
  462. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/conversion/single_concept.physical.yaml +0 -0
  463. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/non_neat/cognite_core_v1.zip +0 -0
  464. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/non_neat/referencing_core/MyDescribable.container.yaml +0 -0
  465. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/non_neat/referencing_core/MyDescribable.view.yaml +0 -0
  466. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/non_neat/referencing_core/enterprise.datamodel.yaml +0 -0
  467. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/non_neat/windturbine.py +0 -0
  468. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/partial-model/complete.xlsx +0 -0
  469. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/partial-model/part1.xlsx +0 -0
  470. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/partial-model/part2.ttl +0 -0
  471. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/partial-model/part3.yaml +0 -0
  472. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/car_dms_rules_deprecated.xlsx +0 -0
  473. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/dm_raw_filter.xlsx +0 -0
  474. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/dm_view_space_different.xlsx +0 -0
  475. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/dms-unknown-value-type.xlsx +0 -0
  476. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/isa_plus_cdm.xlsx +0 -0
  477. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/missing-in-model-value.xlsx +0 -0
  478. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/mixed-up-version.xlsx +0 -0
  479. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/physical_singleton_issue.xlsx +0 -0
  480. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/pump_example_duplicated_resources.xlsx +0 -0
  481. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/pump_example_with_missing_cells.xlsx +0 -0
  482. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/pump_example_with_missing_cells_raise_issues.xlsx +0 -0
  483. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/1.Production.container.yaml +0 -0
  484. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/10.SimNode.container.yaml +0 -0
  485. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/12.SimSubNode.container.yaml +0 -0
  486. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/13.SimEdge.container.yaml +0 -0
  487. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/14.Property.container.yaml +0 -0
  488. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/15.Coordinate.container.yaml +0 -0
  489. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/16.Coordinates.container.yaml +0 -0
  490. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/17.ModelExecutionEnvironment.view.yaml +0 -0
  491. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/18.Coordinate.view.yaml +0 -0
  492. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/19.Coordinates.view.yaml +0 -0
  493. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/2.SimulationModel.container.yaml +0 -0
  494. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/20.SimEdge.view.yaml +0 -0
  495. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/21.ProductionTimeseries.view.yaml +0 -0
  496. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/22.SimNode.view.yaml +0 -0
  497. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/23.Production.view.yaml +0 -0
  498. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/24.SimSubNode.view.yaml +0 -0
  499. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/25.SimulationResultFile.view.yaml +0 -0
  500. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/26.InputProperty.view.yaml +0 -0
  501. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/28.OutputProperty.view.yaml +0 -0
  502. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/29.Property.view.yaml +0 -0
  503. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/3.strongly-coupled-model.datamodel.yaml +0 -0
  504. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/30.SimulationModel.view.yaml +0 -0
  505. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/31.SimNodeAndEdge.view.yaml +0 -0
  506. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/5.my.space.yaml +0 -0
  507. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/6.ModelExecutionEnvironment.container.yaml +0 -0
  508. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/7.ProductionTimeseries.container.yaml +0 -0
  509. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/8.SimNodeAndEdge.container.yaml +0 -0
  510. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical/strongly_connected_model/data_models/9.SimulationResultFile.container.yaml +0 -0
  511. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical_invalid/inconsistent_container_dms_rules.xlsx +0 -0
  512. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical_invalid/invalid_metadata.xlsx +0 -0
  513. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical_invalid/invalid_property_dms_rules.xlsx +0 -0
  514. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical_invalid/missing_view_container_dms_rules.xlsx +0 -0
  515. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical_invalid/too_many_containers_per_view.xlsx +0 -0
  516. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical_yamls/invalid_indices.expected_issues.yaml +0 -0
  517. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical_yamls/invalid_indices.yaml +0 -0
  518. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical_yamls/invalid_yaml.expected_issues.yaml +0 -0
  519. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical_yamls/invalid_yaml.yaml +0 -0
  520. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical_yamls/multiple_indices_on_property.yaml +0 -0
  521. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical_yamls/reverse_direct_relation_missing_target.expected_issues.yaml +0 -0
  522. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/data/_schema/physical_yamls/reverse_direct_relation_missing_target.yaml +0 -0
  523. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_end_to_end/__init__.py +0 -0
  524. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_end_to_end/test_rules_flow/test_cdm_extension_verification.yaml +0 -0
  525. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_end_to_end/test_rules_flow/test_excel_importer_to_yaml.yml +0 -0
  526. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_end_to_end/test_rules_flow/test_ontology_importer_to_yaml.yml +0 -0
  527. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_end_to_end/test_rules_flow/test_to_extension_transformer.yml +0 -0
  528. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/__init__.py +0 -0
  529. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/conftest.py +0 -0
  530. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_api/__init__.py +0 -0
  531. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_api/test_conversion.py +0 -0
  532. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_api/test_validate_rules.py +0 -0
  533. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_client_available.py +0 -0
  534. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_graph/__init__.py +0 -0
  535. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_graph/test_loaders/__init__.py +0 -0
  536. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_graph/test_loaders/test_dms_loader.py +0 -0
  537. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_neat_client/__init__.py +0 -0
  538. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_neat_client/test_cdf_loaders.py +0 -0
  539. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_neat_client/test_statistics.py +0 -0
  540. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_rules/__init__.py +0 -0
  541. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_rules/test_exporters/__init__.py +0 -0
  542. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_rules/test_exporters/test_dms_exporters.py +0 -0
  543. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_rules/test_importers/__init__.py +0 -0
  544. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_session/__init__.py +0 -0
  545. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_session/test_create_enterprise.py +0 -0
  546. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_session/test_data_model_prepare_fix/test_prefix_dms_rules_entities.yml +0 -0
  547. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_session/test_data_model_prepare_fix/test_prefix_info_rules_entities.yml +0 -0
  548. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_session/test_data_model_prepare_fix/test_standardize_space_and_version.yml +0 -0
  549. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_session/test_data_model_prepare_fix.py +0 -0
  550. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_session/test_data_model_to/test_raw_filter.yml +0 -0
  551. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_session/test_data_model_to.py +0 -0
  552. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_session/test_graph_flow/test_aml_to_dms.yml +0 -0
  553. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_session/test_graph_flow/test_create_extension_template.yml +0 -0
  554. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_session/test_graph_flow/test_dexpi_to_dms.yml +0 -0
  555. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_session/test_graph_flow/test_snapshot_workflow_ids_to_python.yml +0 -0
  556. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_session/test_graph_flow/test_snapshot_workflow_to_python.yml +0 -0
  557. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_session/test_graph_flow/test_uplift_workflow_to_python.yml +0 -0
  558. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_session/test_graph_flow.py +0 -0
  559. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_session/test_read/test_read_model_referencing_core.yml +0 -0
  560. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_session/test_read.py +0 -0
  561. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_utils/__init__.py +0 -0
  562. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_integration/test_utils/test_reader.py +0 -0
  563. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/__init__.py +0 -0
  564. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/__init__.py +0 -0
  565. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_extractors/__init__.py +0 -0
  566. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_extractors/test_asset_extractor.py +0 -0
  567. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_extractors/test_dms_extractor.py +0 -0
  568. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_extractors/test_dms_graph_extractor.py +0 -0
  569. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_extractors/test_events_extractor.py +0 -0
  570. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_extractors/test_files_extractor.py +0 -0
  571. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_extractors/test_labels_extractor.py +0 -0
  572. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_extractors/test_raw_extractor.py +0 -0
  573. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_extractors/test_relationship_extractor.py +0 -0
  574. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_extractors/test_sequences_extractor.py +0 -0
  575. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_extractors/test_timeseries_extractor.py +0 -0
  576. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_graph_read.py +0 -0
  577. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_loaders/__init__.py +0 -0
  578. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_loaders/test_dms_loader.py +0 -0
  579. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_loaders/test_rdf2dms.py +0 -0
  580. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_loaders/test_rdf_to_instance_space.py +0 -0
  581. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_provenance.py +0 -0
  582. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_transformers/__init__.py +0 -0
  583. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_transformers/test_asset_depth_transformer.py +0 -0
  584. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_transformers/test_asset_event_connector_transformer.py +0 -0
  585. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_transformers/test_asset_file_connector_transformer.py +0 -0
  586. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_transformers/test_asset_relationship_connector_transformer.py +0 -0
  587. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_transformers/test_asset_sequence_connector_transformer.py +0 -0
  588. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_transformers/test_asset_ts_connector_transformer.py +0 -0
  589. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_transformers/test_attach_property_from_target2source.py +0 -0
  590. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_transformers/test_connection_to_literal.py +0 -0
  591. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_transformers/test_make_connection_on_exact_match.py +0 -0
  592. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_transformers/test_prune_graph.py +0 -0
  593. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_graph/test_transformers/test_split_multi_value_property_transformer.py +0 -0
  594. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_issues/__init__.py +0 -0
  595. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_issues/test_formatters.py +0 -0
  596. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_issues/test_issue_behavior.py +0 -0
  597. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_issues/test_issues_metatests.py +0 -0
  598. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_neat_client/__init__.py +0 -0
  599. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_neat_client/test_instances.py +0 -0
  600. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_neat_client/test_loaders.py +0 -0
  601. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_neat_client/test_schema.py +0 -0
  602. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_neat_package_metadata.py +0 -0
  603. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_plugins.py +0 -0
  604. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/__init__.py +0 -0
  605. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_analysis.py +0 -0
  606. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_exporters/__init__.py +0 -0
  607. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_exporters/test_exporters_meta.py +0 -0
  608. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_exporters/test_rules2dms.py +0 -0
  609. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_exporters/test_rules2excel.py +0 -0
  610. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_exporters/test_rules2ontology.py +0 -0
  611. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_exporters/test_rules2yaml.py +0 -0
  612. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_importers/__init__.py +0 -0
  613. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_importers/constants.py +0 -0
  614. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_importers/test_dms_importer.py +0 -0
  615. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_importers/test_inference_importer.py +0 -0
  616. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_importers/test_subinference_importer.py +0 -0
  617. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_models/__init__.py +0 -0
  618. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_models/test_asset_rules.py +0 -0
  619. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_models/test_base_rules.py +0 -0
  620. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_models/test_data_types.py +0 -0
  621. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_models/test_dms_schema.py +0 -0
  622. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_models/test_entities.py +0 -0
  623. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_models/test_input_rules.py +0 -0
  624. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_models/test_physical_data_model.py +0 -0
  625. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_models/test_wrapped_entities.py +0 -0
  626. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_models/utils.py +0 -0
  627. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_transformers/__init__.py +0 -0
  628. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_transformers/test_converters.py +0 -0
  629. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_transformers/test_mapping.py +0 -0
  630. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_transformers/test_transformer_meta.py +0 -0
  631. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_rules/test_transformers/test_union_conceptual.py +0 -0
  632. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_session/__init__.py +0 -0
  633. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_session/test_flows.py +0 -0
  634. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_session/test_meta.py +0 -0
  635. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_session/test_plugin.py +0 -0
  636. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_session/test_read.py +0 -0
  637. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_session/test_to_yaml.py +0 -0
  638. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_store/__init__.py +0 -0
  639. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_store/test_select_queries.py +0 -0
  640. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_store/tests_rules_store/test_import_export.yml +0 -0
  641. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_store/tests_rules_store.py +0 -0
  642. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_utils/__init__.py +0 -0
  643. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_utils/test_auxiliary.py +0 -0
  644. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_utils/test_cdf_classes.py +0 -0
  645. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_utils/test_rdf.py +0 -0
  646. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_utils/test_reader.py +0 -0
  647. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_utils/test_tarjan.py +0 -0
  648. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_utils/test_text.py +0 -0
  649. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/tests_unit/test_utils/test_utils.py +0 -0
  650. {cognite_neat-0.123.17 → cognite_neat-0.123.19}/tests/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cognite-neat
3
- Version: 0.123.17
3
+ Version: 0.123.19
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/
@@ -0,0 +1,2 @@
1
+ __version__ = "0.123.19"
2
+ __engine__ = "^2.0.4"
@@ -5,13 +5,13 @@ from cognite.neat.core._data_model.models import (
5
5
  ConceptualDataModel,
6
6
  PhysicalDataModel,
7
7
  )
8
+ from cognite.neat.core._data_model.models._import_contexts import ImportContext
8
9
  from cognite.neat.core._data_model.models.conceptual._unverified import (
9
10
  UnverifiedConceptualDataModel,
10
11
  )
11
12
  from cognite.neat.core._data_model.models.physical._unverified import (
12
13
  UnverifiedPhysicalDataModel,
13
14
  )
14
- from cognite.neat.core._utils.spreadsheet import SpreadsheetRead
15
15
 
16
16
  VerifiedDataModel: TypeAlias = ConceptualDataModel | PhysicalDataModel
17
17
 
@@ -32,7 +32,7 @@ class ImportedDataModel(Generic[T_UnverifiedDataModel]):
32
32
  """
33
33
 
34
34
  unverified_data_model: T_UnverifiedDataModel | None
35
- context: dict[str, SpreadsheetRead]
35
+ context: ImportContext | None = None
36
36
 
37
37
  @classmethod
38
38
  def display_type_name(cls) -> str:
@@ -1,6 +1,7 @@
1
1
  from ._base import BaseImporter
2
2
  from ._dict2data_model import DictImporter
3
3
  from ._dms2data_model import DMSImporter
4
+ from ._graph2data_model import GraphImporter
4
5
  from ._rdf import InferenceImporter, OWLImporter, SubclassInferenceImporter
5
6
  from ._spreadsheet2data_model import ExcelImporter
6
7
 
@@ -9,13 +10,20 @@ __all__ = [
9
10
  "DMSImporter",
10
11
  "DictImporter",
11
12
  "ExcelImporter",
13
+ "GraphImporter",
12
14
  "InferenceImporter",
13
15
  "OWLImporter",
14
16
  "SubclassInferenceImporter",
15
17
  ]
16
18
 
17
19
  DataModelImporters = (
18
- OWLImporter | DMSImporter | ExcelImporter | DictImporter | InferenceImporter | SubclassInferenceImporter
20
+ OWLImporter
21
+ | DMSImporter
22
+ | ExcelImporter
23
+ | DictImporter
24
+ | InferenceImporter
25
+ | SubclassInferenceImporter
26
+ | GraphImporter
19
27
  )
20
28
 
21
29
 
@@ -128,4 +128,4 @@ class DictImporter(BaseImporter[T_UnverifiedDataModel]):
128
128
  if self._read_issues.has_errors:
129
129
  raise MultiValueError(self._read_issues.errors)
130
130
 
131
- return ImportedDataModel[T_UnverifiedDataModel](data_model, {})
131
+ return ImportedDataModel[T_UnverifiedDataModel](data_model)
@@ -276,7 +276,7 @@ class DMSImporter(BaseImporter[UnverifiedPhysicalDataModel]):
276
276
  self.issue_list.trigger_warnings()
277
277
  if self.issue_list.has_errors:
278
278
  raise MultiValueError(self.issue_list.errors)
279
- return ImportedDataModel(user_data_model, {})
279
+ return ImportedDataModel(user_data_model, None)
280
280
 
281
281
  def _create_data_model_components(
282
282
  self,
@@ -0,0 +1,299 @@
1
+ import itertools
2
+ import urllib.parse
3
+ import warnings
4
+ from collections import defaultdict
5
+ from collections.abc import Iterable
6
+ from dataclasses import dataclass
7
+ from datetime import datetime, timezone
8
+ from typing import cast
9
+
10
+ from cognite.client.data_classes.data_modeling import DataModelId, DataModelIdentifier
11
+ from rdflib import RDF, RDFS, Namespace, URIRef
12
+ from rdflib import Literal as RdfLiteral
13
+ from rdflib.query import ResultRow
14
+
15
+ from cognite.neat.core._config import GLOBAL_CONFIG
16
+ from cognite.neat.core._constants import NEAT
17
+ from cognite.neat.core._data_model._shared import ImportedDataModel
18
+ from cognite.neat.core._data_model.models import UnverifiedConceptualDataModel
19
+ from cognite.neat.core._data_model.models._import_contexts import GraphContext
20
+ from cognite.neat.core._data_model.models.conceptual import (
21
+ UnverifiedConcept,
22
+ UnverifiedConceptualMetadata,
23
+ UnverifiedConceptualProperty,
24
+ )
25
+ from cognite.neat.core._data_model.models.entities import UnknownEntity
26
+ from cognite.neat.core._issues.errors import NeatValueError
27
+ from cognite.neat.core._issues.warnings import NeatValueWarning
28
+ from cognite.neat.core._store import NeatInstanceStore
29
+ from cognite.neat.core._utils.collection_ import iterate_progress_bar
30
+ from cognite.neat.core._utils.rdf_ import split_uri
31
+
32
+ from ._base import BaseImporter
33
+
34
+
35
+ # Internal helper class
36
+ @dataclass
37
+ class _ReadProperties:
38
+ type_uri: URIRef
39
+ property_uri: URIRef
40
+ value_type: URIRef
41
+ parent_uri: URIRef | None
42
+ max_occurrence: int
43
+ instance_count: int
44
+
45
+
46
+ class GraphImporter(BaseImporter[UnverifiedConceptualDataModel]):
47
+ """Infers a data model from the triples in a Graph Store.
48
+ Args:
49
+ store: The graph store to read from.
50
+ data_model_id: The data model id to be used for the imported rules.
51
+ """
52
+
53
+ _ORDERED_CONCEPTS_QUERY = """SELECT DISTINCT ?concept (count(?s) as ?instances )
54
+ WHERE { ?s a ?concept }
55
+ group by ?concept order by DESC(?instances)"""
56
+
57
+ _TYPE_PARENT_QUERY = f"""SELECT ?parent ?type
58
+ WHERE {{ ?s a ?type .
59
+ ?type <{RDFS.subClassOf}> ?parent }}"""
60
+
61
+ _PROPERTIES_QUERY = """SELECT DISTINCT ?property ?valueType
62
+ WHERE {{
63
+ ?s a <{type}> .
64
+ ?s ?property ?object .
65
+ OPTIONAL {{ ?object a ?objectType }}
66
+ BIND(
67
+ IF(
68
+ isLiteral(?object), datatype(?object),
69
+ IF(BOUND(?objectType), ?objectType, <{unknown_type}>)
70
+ ) AS ?valueType
71
+ )
72
+ }}"""
73
+
74
+ _MAX_OCCURRENCE_QUERY = """SELECT (MAX(?count) AS ?maxCount)
75
+ WHERE {{
76
+ {{
77
+ SELECT ?subject (COUNT(?object) AS ?count)
78
+ WHERE {{
79
+ ?subject a <{type}> .
80
+ ?subject <{property}> ?object .
81
+ }}
82
+ GROUP BY ?subject
83
+ }}
84
+ }}"""
85
+
86
+ def __init__(
87
+ self,
88
+ store: NeatInstanceStore,
89
+ data_model_id: DataModelIdentifier = ("neat_space", "NeatInferredDataModel", "v1"),
90
+ ) -> None:
91
+ self.store = store
92
+ self.data_model_id = DataModelId.load(data_model_id)
93
+ if self.data_model_id.version is None:
94
+ raise NeatValueError("Version is required when setting a Data Model ID")
95
+
96
+ def to_data_model(self) -> ImportedDataModel[UnverifiedConceptualDataModel]:
97
+ metadata = self._create_default_metadata()
98
+ if not self.store.queries.select.has_data():
99
+ warnings.warn(NeatValueWarning("Cannot infer data model. No data found in the graph."), stacklevel=2)
100
+ return ImportedDataModel(UnverifiedConceptualDataModel(metadata, [], [], {}), None)
101
+
102
+ parent_by_child = self._read_parent_by_child_from_graph()
103
+ count_by_type = self._read_types_with_counts_from_graph()
104
+ if not count_by_type:
105
+ warnings.warn(
106
+ NeatValueWarning("Cannot infer data model. No RDF.type triples found in the graph."), stacklevel=2
107
+ )
108
+ return ImportedDataModel(UnverifiedConceptualDataModel(metadata, [], [], {}), None)
109
+
110
+ read_properties = self._read_concept_properties_from_graph(count_by_type, parent_by_child)
111
+
112
+ prefixes: dict[str, Namespace] = {}
113
+ concepts, properties = self._create_concepts_properties(read_properties, prefixes)
114
+
115
+ return ImportedDataModel(
116
+ UnverifiedConceptualDataModel(
117
+ metadata=metadata,
118
+ concepts=concepts,
119
+ properties=properties,
120
+ prefixes=prefixes,
121
+ ),
122
+ context=GraphContext({"inferred_from": count_by_type}),
123
+ )
124
+
125
+ def _read_parent_by_child_from_graph(self) -> dict[URIRef, URIRef]:
126
+ parent_by_child: dict[URIRef, URIRef] = {}
127
+ for result_row in self.store.dataset.query(self._TYPE_PARENT_QUERY):
128
+ parent_uri, child_uri = cast(tuple[URIRef, URIRef], result_row)
129
+ parent_by_child[child_uri] = parent_uri
130
+ return parent_by_child
131
+
132
+ def _read_types_with_counts_from_graph(self) -> dict[URIRef, int]:
133
+ count_by_type: dict[URIRef, int] = {}
134
+ # Reads all types and their instance counts from the graph
135
+ for result_row in self.store.dataset.query(self._ORDERED_CONCEPTS_QUERY):
136
+ type_uri, instance_count_literal = cast(tuple[URIRef, RdfLiteral], result_row)
137
+ count_by_type[type_uri] = instance_count_literal.toPython()
138
+ return count_by_type
139
+
140
+ def _read_concept_properties_from_graph(
141
+ self, count_by_type: dict[URIRef, int], parent_by_child: dict[URIRef, URIRef]
142
+ ) -> list[_ReadProperties]:
143
+ read_properties: list[_ReadProperties] = []
144
+
145
+ total_instance_count = sum(count_by_type.values())
146
+ iterable = count_by_type.items()
147
+ if GLOBAL_CONFIG.use_iterate_bar_threshold and total_instance_count > GLOBAL_CONFIG.use_iterate_bar_threshold:
148
+ iterable = iterate_progress_bar(iterable, len(count_by_type), "Inferring types...") # type: ignore[assignment]
149
+
150
+ for type_uri, instance_count in iterable:
151
+ property_query = self._PROPERTIES_QUERY.format(type=type_uri, unknown_type=NEAT.UnknownType)
152
+ for result_row in self.store.dataset.query(property_query):
153
+ property_uri, value_type_uri = cast(tuple[URIRef, URIRef], result_row)
154
+ if property_uri == RDF.type:
155
+ continue
156
+ occurrence_query = self._MAX_OCCURRENCE_QUERY.format(type=type_uri, property=property_uri)
157
+ max_occurrence = 1 # default value
158
+ # We know that the _MAX_OCCURRENCE_QUERY will return a ResultRow
159
+ occurrence_results = list(cast(ResultRow, self.store.dataset.query(occurrence_query)))
160
+ if occurrence_results and occurrence_results[0] and occurrence_results[0][0]:
161
+ max_occurrence_literal = cast(RdfLiteral, occurrence_results[0][0])
162
+ max_occurrence = int(max_occurrence_literal.toPython())
163
+ read_properties.append(
164
+ _ReadProperties(
165
+ type_uri=type_uri,
166
+ property_uri=property_uri,
167
+ parent_uri=parent_by_child.get(type_uri),
168
+ value_type=value_type_uri,
169
+ max_occurrence=max_occurrence,
170
+ instance_count=instance_count,
171
+ )
172
+ )
173
+ return read_properties
174
+
175
+ def _create_concepts_properties(
176
+ self, read_properties: list[_ReadProperties], prefixes: dict[str, Namespace]
177
+ ) -> tuple[list[UnverifiedConcept], list[UnverifiedConceptualProperty]]:
178
+ concepts: list[UnverifiedConcept] = []
179
+ properties: list[UnverifiedConceptualProperty] = []
180
+
181
+ # Help for IDE
182
+ type_uri: URIRef
183
+ parent_uri: URIRef
184
+ for parent_uri, parent_concepts_properties_iterable in itertools.groupby(
185
+ sorted(read_properties, key=lambda x: x.parent_uri or NEAT.EmptyType),
186
+ key=lambda x: x.parent_uri or NEAT.EmptyType,
187
+ ):
188
+ parent_str: str | None = None
189
+ if parent_uri != NEAT.EmptyType:
190
+ parent_str, parent_cls = self._create_concept(parent_uri, set_instance_source=False, prefixes=prefixes)
191
+ concepts.append(parent_cls)
192
+
193
+ properties_by_concept_by_property = self._get_properties_by_concept_by_property(
194
+ parent_concepts_properties_iterable
195
+ )
196
+ for type_uri, properties_by_property_uri in properties_by_concept_by_property.items():
197
+ concept_str, concept = self._create_concept(
198
+ type_uri, set_instance_source=True, prefixes=prefixes, implements=parent_str
199
+ )
200
+ concepts.append(concept)
201
+ for property_uri, read_properties in properties_by_property_uri.items():
202
+ namespace, property_suffix = split_uri(property_uri)
203
+ (self._add_uri_namespace_to_prefixes(namespace, prefixes),)
204
+ properties.append(
205
+ self._create_property(
206
+ read_properties, concept_str, property_uri, urllib.parse.unquote(property_suffix), prefixes
207
+ )
208
+ )
209
+ return concepts, properties
210
+
211
+ @staticmethod
212
+ def _get_properties_by_concept_by_property(
213
+ parent_concept_properties_iterable: Iterable[_ReadProperties],
214
+ ) -> dict[URIRef, dict[URIRef, list[_ReadProperties]]]:
215
+ properties_by_concept_by_property: dict[URIRef, dict[URIRef, list[_ReadProperties]]] = {}
216
+ for concept_uri, concept_properties_iterable in itertools.groupby(
217
+ sorted(parent_concept_properties_iterable, key=lambda x: x.type_uri), key=lambda x: x.type_uri
218
+ ):
219
+ properties_by_concept_by_property[concept_uri] = defaultdict(list)
220
+ for read_prop in concept_properties_iterable:
221
+ properties_by_concept_by_property[concept_uri][read_prop.property_uri].append(read_prop)
222
+ return properties_by_concept_by_property
223
+
224
+ @classmethod
225
+ def _create_concept(
226
+ cls, type_uri: URIRef, set_instance_source: bool, prefixes: dict[str, Namespace], implements: str | None = None
227
+ ) -> tuple[str, UnverifiedConcept]:
228
+ namespace, suffix = split_uri(type_uri)
229
+ cls._add_uri_namespace_to_prefixes(namespace, prefixes)
230
+ concept_str = urllib.parse.unquote(suffix)
231
+ return concept_str, UnverifiedConcept(
232
+ concept=concept_str, implements=implements, instance_source=type_uri if set_instance_source else None
233
+ )
234
+
235
+ def _create_property(
236
+ self,
237
+ read_properties: list[_ReadProperties],
238
+ concept_str: str,
239
+ property_uri: URIRef,
240
+ property_id: str,
241
+ prefixes: dict[str, Namespace],
242
+ ) -> UnverifiedConceptualProperty:
243
+ first = read_properties[0]
244
+ value_type = self._get_value_type(read_properties, prefixes)
245
+ return UnverifiedConceptualProperty(
246
+ concept=concept_str,
247
+ property_=property_id,
248
+ max_count=first.max_occurrence,
249
+ value_type=value_type,
250
+ instance_source=[property_uri],
251
+ )
252
+
253
+ @classmethod
254
+ def _get_value_type(
255
+ cls, read_properties: list[_ReadProperties], prefixes: dict[str, Namespace]
256
+ ) -> str | UnknownEntity:
257
+ value_types = {prop.value_type for prop in read_properties}
258
+ if len(value_types) == 1:
259
+ uri_ref = value_types.pop()
260
+ if uri_ref == NEAT.UnknownType:
261
+ return UnknownEntity()
262
+ namespace, suffix = split_uri(uri_ref)
263
+ cls._add_uri_namespace_to_prefixes(namespace, prefixes)
264
+ return suffix
265
+ uri_refs: list[str] = []
266
+ for uri_ref in value_types:
267
+ if uri_ref == NEAT.UnknownType:
268
+ return UnknownEntity()
269
+ namespace, suffix = split_uri(uri_ref)
270
+ cls._add_uri_namespace_to_prefixes(namespace, prefixes)
271
+ uri_refs.append(suffix)
272
+ # Sort the URIs to ensure deterministic output
273
+ return ", ".join(sorted(uri_refs))
274
+
275
+ def _create_default_metadata(self) -> UnverifiedConceptualMetadata:
276
+ now = datetime.now(timezone.utc)
277
+ name = self.data_model_id.external_id.replace("_", " ").title()
278
+ return UnverifiedConceptualMetadata(
279
+ space=self.data_model_id.space,
280
+ external_id=self.data_model_id.external_id,
281
+ # Validated in the constructor
282
+ version=cast(str, self.data_model_id.version),
283
+ name=name,
284
+ creator="NEAT",
285
+ created=now,
286
+ updated=now,
287
+ description="Inferred model from knowledge graph",
288
+ )
289
+
290
+ @classmethod
291
+ def _add_uri_namespace_to_prefixes(cls, namespace: str, prefixes: dict[str, Namespace]) -> None:
292
+ """Add URI to prefixes dict if not already present
293
+
294
+ Args:
295
+ URI: URI from which namespace is being extracted
296
+ prefixes: Dict of prefixes and namespaces
297
+ """
298
+ if Namespace(namespace) not in prefixes.values():
299
+ prefixes[f"prefix_{len(prefixes) + 1}"] = Namespace(namespace)
@@ -130,7 +130,7 @@ class BaseRDFImporter(BaseImporter[UnverifiedConceptualDataModel]):
130
130
 
131
131
  data_model = UnverifiedConceptualDataModel.load(data_model_dict)
132
132
  self.issue_list.trigger_warnings()
133
- return ImportedDataModel(data_model, {})
133
+ return ImportedDataModel(data_model)
134
134
 
135
135
  def _to_data_model_components(self) -> dict:
136
136
  raise NotImplementedError()
@@ -22,6 +22,7 @@ from cognite.neat.core._data_model.models import (
22
22
  RoleTypes,
23
23
  SchemaCompleteness,
24
24
  )
25
+ from cognite.neat.core._data_model.models._import_contexts import SpreadsheetContext
25
26
  from cognite.neat.core._issues import IssueList, MultiValueError
26
27
  from cognite.neat.core._issues.errors import (
27
28
  FileMissingRequiredFieldError,
@@ -271,7 +272,7 @@ class ExcelImporter(BaseImporter[T_UnverifiedDataModel]):
271
272
  raise MultiValueError(issue_list.errors)
272
273
 
273
274
  if user_read is None:
274
- return ImportedDataModel(None, {})
275
+ return ImportedDataModel(None, None)
275
276
 
276
277
  sheets = user_read.sheets
277
278
  original_role = user_read.role
@@ -287,7 +288,7 @@ class ExcelImporter(BaseImporter[T_UnverifiedDataModel]):
287
288
  except Exception as e:
288
289
  issue_list.append(FileReadError(self.filepath, f"Failed to delete temporary file: {e}"))
289
290
 
290
- return ImportedDataModel(data_model, read_info_by_sheet)
291
+ return ImportedDataModel(data_model, SpreadsheetContext(read_info_by_sheet))
291
292
 
292
293
  @property
293
294
  def description(self) -> str:
@@ -0,0 +1,82 @@
1
+ from collections.abc import Hashable, ItemsView, Iterator, KeysView, Mapping, ValuesView
2
+ from typing import TypeVar
3
+
4
+ from rdflib import URIRef
5
+
6
+ from cognite.neat.core._utils.spreadsheet import SpreadsheetRead
7
+
8
+ T_Key = TypeVar("T_Key", bound=Hashable)
9
+ T_Value = TypeVar("T_Value")
10
+
11
+
12
+ class ImportContext(dict, Mapping[T_Key, T_Value]):
13
+ def __init__(self, data: Mapping[T_Key, T_Value] | None = None) -> None:
14
+ super().__init__(data or {})
15
+
16
+ # The below methods are included to make better type hints in the IDE
17
+ def __getitem__(self, k: T_Key) -> T_Value:
18
+ return super().__getitem__(k)
19
+
20
+ def __setitem__(self, k: T_Key, v: T_Value) -> None:
21
+ super().__setitem__(k, v)
22
+
23
+ def __delitem__(self, k: T_Key) -> None:
24
+ super().__delitem__(k)
25
+
26
+ def __iter__(self) -> Iterator[T_Key]:
27
+ return super().__iter__()
28
+
29
+ def keys(self) -> KeysView[T_Key]: # type: ignore[override]
30
+ return super().keys()
31
+
32
+ def values(self) -> ValuesView[T_Value]: # type: ignore[override]
33
+ return super().values()
34
+
35
+ def items(self) -> ItemsView[T_Key, T_Value]: # type: ignore[override]
36
+ return super().items()
37
+
38
+ def get(self, __key: T_Key, __default: T_Value | None = None) -> T_Value: # type: ignore[override]
39
+ return super().get(__key, __default)
40
+
41
+ def pop(self, __key: T_Key, __default: T_Value | None = None) -> T_Value: # type: ignore[override]
42
+ return super().pop(__key, __default)
43
+
44
+ def popitem(self) -> tuple[T_Key, T_Value]:
45
+ return super().popitem()
46
+
47
+
48
+ class SpreadsheetContext(ImportContext[str, SpreadsheetRead]):
49
+ def __init__(self, data: dict[str, SpreadsheetRead] | None = None) -> None:
50
+ """Initialize the SpreadsheetContext with a dictionary of SpreadsheetRead objects.
51
+
52
+ Args:
53
+ data (dict[str, SpreadsheetRead]): A dictionary where keys are sheet names and values are
54
+ SpreadsheetRead objects containing the read data.
55
+ """
56
+ super().__init__(data or {})
57
+ for k, v in self.items():
58
+ if not isinstance(k, str):
59
+ raise TypeError(f"Expected string key, got {type(k).__name__}")
60
+ if not isinstance(v, SpreadsheetRead):
61
+ raise TypeError(f"Expected SpreadsheetRead for key '{k}', got {type(v).__name__}")
62
+
63
+
64
+ class GraphContext(ImportContext[str, Mapping[URIRef, int]]):
65
+ def __init__(self, data: dict[str, Mapping[URIRef, int]] | None = None) -> None:
66
+ """Initialize the GraphContext with a dictionary of mappings from URIRef to int.
67
+
68
+ Args:
69
+ data (dict[str, Mapping[URIRef, int]]): A dictionary where keys are graph names and values are
70
+ mappings of URIRef to integer identifiers.
71
+ """
72
+ super().__init__(data or {})
73
+ for k, v in self.items():
74
+ if not isinstance(k, str):
75
+ raise TypeError(f"Expected string key, got {type(k).__name__}")
76
+ if not isinstance(v, Mapping):
77
+ raise TypeError(f"Expected Mapping[URIRef, int] for key '{k}', got {type(v).__name__}")
78
+ for uri, value in v.items():
79
+ if not isinstance(uri, URIRef):
80
+ raise TypeError(f"Expected URIRef key in mapping for '{k}', got {type(uri).__name__}")
81
+ if not isinstance(value, int):
82
+ raise TypeError(f"Expected int value in mapping for '{k}', got {type(value).__name__}")
@@ -3,6 +3,7 @@ from collections import Counter, defaultdict
3
3
 
4
4
  from cognite.neat.core._constants import get_base_concepts
5
5
  from cognite.neat.core._data_model._constants import PATTERNS, EntityTypes
6
+ from cognite.neat.core._data_model.models._import_contexts import ImportContext, SpreadsheetContext
6
7
  from cognite.neat.core._data_model.models.entities import ConceptEntity, UnknownEntity
7
8
  from cognite.neat.core._data_model.models.entities._multi_value import MultiValueTypeInfo
8
9
  from cognite.neat.core._issues import IssueList
@@ -13,6 +14,7 @@ from cognite.neat.core._issues.errors._resources import (
13
14
  )
14
15
  from cognite.neat.core._issues.warnings._models import (
15
16
  ConceptOnlyDataModelWarning,
17
+ ConversionToPhysicalModelImpossibleWarning,
16
18
  DanglingPropertyWarning,
17
19
  UndefinedConceptWarning,
18
20
  )
@@ -20,7 +22,6 @@ from cognite.neat.core._issues.warnings._resources import (
20
22
  ResourceNotDefinedWarning,
21
23
  ResourceRegexViolationWarning,
22
24
  )
23
- from cognite.neat.core._utils.spreadsheet import SpreadsheetRead
24
25
  from cognite.neat.core._utils.text import humanize_collection
25
26
 
26
27
  from ._verified import ConceptualDataModel
@@ -33,14 +34,14 @@ class ConceptualValidation:
33
34
  def __init__(
34
35
  self,
35
36
  data_model: ConceptualDataModel,
36
- read_info_by_spreadsheet: dict[str, SpreadsheetRead] | None = None,
37
+ context: ImportContext | None = None,
37
38
  ):
38
39
  # import here to avoid circular import issues
39
40
  from cognite.neat.core._data_model.analysis._base import DataModelAnalysis
40
41
 
41
42
  self.data_model = data_model
42
43
  self.analysis = DataModelAnalysis(self.data_model)
43
- self._read_info_by_spreadsheet = read_info_by_spreadsheet or {}
44
+ self._read_info_by_spreadsheet = context if isinstance(context, SpreadsheetContext) else SpreadsheetContext({})
44
45
  self._metadata = data_model.metadata
45
46
  self._properties = data_model.properties
46
47
  self._concepts = data_model.concepts
@@ -61,9 +62,30 @@ class ConceptualValidation:
61
62
 
62
63
  self._concept_only_data_model()
63
64
  self._regex_compliance_with_physical_data_model()
65
+ self._physical_data_model_conversion()
64
66
 
65
67
  return self.issue_list
66
68
 
69
+ def _physical_data_model_conversion(self) -> None:
70
+ """Check if the conceptual data model has issues that will likely lead
71
+ to problems when converting to a physical data model."""
72
+ warning_types_preventing_conversion = [
73
+ ConceptOnlyDataModelWarning,
74
+ ResourceRegexViolationWarning,
75
+ ResourceNotDefinedWarning,
76
+ UndefinedConceptWarning,
77
+ DanglingPropertyWarning,
78
+ ]
79
+
80
+ if seen_warnings := frozenset(
81
+ [
82
+ warning_type.__name__
83
+ for warning_type in warning_types_preventing_conversion
84
+ if self.issue_list.has_warning_type(warning_type)
85
+ ]
86
+ ):
87
+ self.issue_list.append_if_not_exist(ConversionToPhysicalModelImpossibleWarning(issue_types=seen_warnings))
88
+
67
89
  def _concept_only_data_model(self) -> None:
68
90
  """Check if the data model only consists of concepts without any properties."""
69
91
  if not self._properties:
@@ -21,7 +21,9 @@ from cognite.neat.core._constants import (
21
21
  COGNITE_SPACES,
22
22
  DMS_CONTAINER_PROPERTY_SIZE_LIMIT,
23
23
  DMS_VIEW_CONTAINER_SIZE_LIMIT,
24
+ get_base_concepts,
24
25
  )
26
+ from cognite.neat.core._data_model.models._import_contexts import ImportContext, SpreadsheetContext
25
27
  from cognite.neat.core._data_model.models.data_types import DataType
26
28
  from cognite.neat.core._data_model.models.entities import ContainerEntity, RawFilter
27
29
  from cognite.neat.core._data_model.models.entities._single_value import (
@@ -47,12 +49,12 @@ from cognite.neat.core._issues.warnings import (
47
49
  UndefinedViewWarning,
48
50
  user_modeling,
49
51
  )
52
+ from cognite.neat.core._issues.warnings._models import ViewWithoutPropertiesWarning
50
53
  from cognite.neat.core._issues.warnings.user_modeling import (
51
54
  ContainerPropertyLimitWarning,
52
55
  DirectRelationMissingSourceWarning,
53
56
  NotNeatSupportedFilterWarning,
54
57
  )
55
- from cognite.neat.core._utils.spreadsheet import SpreadsheetRead
56
58
  from cognite.neat.core._utils.text import humanize_collection
57
59
 
58
60
  from ._verified import PhysicalDataModel, PhysicalProperty
@@ -81,15 +83,23 @@ class PhysicalValidation:
81
83
  self,
82
84
  data_model: PhysicalDataModel,
83
85
  client: NeatClient | None = None,
84
- read_info_by_spreadsheet: dict[str, SpreadsheetRead] | None = None,
86
+ context: ImportContext | None = None,
85
87
  ) -> None:
88
+ # import here to avoid circular import issues
89
+ from cognite.neat.core._data_model.analysis._base import DataModelAnalysis
90
+
86
91
  self._data_model = data_model
87
92
  self._client = client
88
93
  self._metadata = data_model.metadata
89
94
  self._properties = data_model.properties
90
95
  self._containers = data_model.containers
91
96
  self._views = data_model.views
92
- self._read_info_by_spreadsheet = read_info_by_spreadsheet or {}
97
+ self._read_info_by_spreadsheet = context if isinstance(context, SpreadsheetContext) else SpreadsheetContext()
98
+
99
+ self.analysis = DataModelAnalysis(physical=self._data_model)
100
+ self._cdf_concepts = {
101
+ ViewEntity.load(concept_as_string) for concept_as_string in get_base_concepts(base_model="CogniteCore")
102
+ }
93
103
 
94
104
  def imported_views_and_containers_ids(
95
105
  self, include_views_with_no_properties: bool = True
@@ -170,6 +180,9 @@ class PhysicalValidation:
170
180
  # Validated for duplicated resource
171
181
  issue_list.extend(self._duplicated_resources())
172
182
 
183
+ # Validate if views are defined (i.e. have at least one property defined, or inherited)
184
+ issue_list.extend(self._views_without_properties_exist())
185
+
173
186
  # Neat DMS classes Validation
174
187
  # These are errors that can only happen due to the format of the Neat DMS classes
175
188
  issue_list.extend(self._validate_raw_filter())
@@ -192,6 +205,23 @@ class PhysicalValidation:
192
205
  issue_list.extend(self._same_space_views_and_data_model())
193
206
  return issue_list
194
207
 
208
+ def _views_without_properties_exist(self) -> IssueList:
209
+ """Check if there are views that do not have any properties defined directly or inherited."""
210
+ issue_list = IssueList()
211
+ views = {view.view for view in self._views}
212
+ ancestors_by_view = self.analysis.implements_by_view(include_ancestors=True, include_different_space=True)
213
+ views_with_properties = self.analysis.defined_views().union(self._cdf_concepts)
214
+
215
+ if candidate_views := views.difference(views_with_properties):
216
+ for view in candidate_views:
217
+ # Here we check if at least one of the ancestors of the view has properties
218
+ if (ancestors := ancestors_by_view.get(view)) and ancestors.intersection(views_with_properties):
219
+ continue
220
+
221
+ issue_list.append_if_not_exist(ViewWithoutPropertiesWarning(view_id=view.as_id()))
222
+
223
+ return issue_list
224
+
195
225
  def _same_space_views_and_data_model(self) -> IssueList:
196
226
  issue_list = IssueList()
197
227