cognite-neat 0.77.6__tar.gz → 0.77.8__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 (282) hide show
  1. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/PKG-INFO +1 -1
  2. cognite_neat-0.77.8/cognite/neat/_version.py +1 -0
  3. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/issues/importing.py +17 -0
  4. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/_types/_field.py +11 -17
  5. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/dms/_validation.py +4 -1
  6. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/information/_converter.py +75 -51
  7. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/current/rules_exporter.py +0 -1
  8. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/pyproject.toml +1 -1
  9. cognite_neat-0.77.6/cognite/neat/_version.py +0 -1
  10. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/LICENSE +0 -0
  11. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/README.md +0 -0
  12. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/__init__.py +0 -0
  13. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/__init__.py +0 -0
  14. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/asgi/metrics.py +0 -0
  15. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/configuration.py +0 -0
  16. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/context_manager/__init__.py +0 -0
  17. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/context_manager/manager.py +0 -0
  18. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/data_classes/__init__.py +0 -0
  19. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/data_classes/rest.py +0 -0
  20. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/explorer.py +0 -0
  21. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/routers/configuration.py +0 -0
  22. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/routers/core.py +0 -0
  23. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/routers/crud.py +0 -0
  24. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/routers/data_exploration.py +0 -0
  25. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/routers/metrics.py +0 -0
  26. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/routers/rules.py +0 -0
  27. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/routers/workflows.py +0 -0
  28. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/utils/__init__.py +0 -0
  29. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/utils/data_mapping.py +0 -0
  30. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/utils/logging.py +0 -0
  31. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/api/utils/query_templates.py +0 -0
  32. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/main.py +0 -0
  33. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/monitoring/__init__.py +0 -0
  34. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/monitoring/metrics.py +0 -0
  35. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/index.html +0 -0
  36. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/neat-app/.gitignore +0 -0
  37. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/neat-app/README.md +0 -0
  38. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/neat-app/build/asset-manifest.json +0 -0
  39. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/neat-app/build/favicon.ico +0 -0
  40. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/neat-app/build/img/architect-icon.svg +0 -0
  41. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/neat-app/build/img/developer-icon.svg +0 -0
  42. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/neat-app/build/img/sme-icon.svg +0 -0
  43. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/neat-app/build/index.html +0 -0
  44. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/neat-app/build/logo192.png +0 -0
  45. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/neat-app/build/manifest.json +0 -0
  46. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/neat-app/build/robots.txt +0 -0
  47. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/neat-app/build/static/css/main.38a62222.css +0 -0
  48. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/neat-app/build/static/css/main.38a62222.css.map +0 -0
  49. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/neat-app/build/static/js/main.ec7f72e2.js +0 -0
  50. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/neat-app/build/static/js/main.ec7f72e2.js.LICENSE.txt +0 -0
  51. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/neat-app/build/static/js/main.ec7f72e2.js.map +0 -0
  52. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/app/ui/neat-app/build/static/media/logo.8093b84df9ed36a174c629d6fe0b730d.svg +0 -0
  53. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/config.py +0 -0
  54. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/constants.py +0 -0
  55. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/exceptions.py +0 -0
  56. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/graph/__init__.py +0 -0
  57. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/graph/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
  58. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/graph/examples/Knowledge-Graph-Nordic44.xml +0 -0
  59. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/graph/examples/__init__.py +0 -0
  60. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/graph/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
  61. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/graph/exceptions.py +0 -0
  62. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/graph/extractors/__init__.py +0 -0
  63. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/graph/extractors/_base.py +0 -0
  64. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/graph/extractors/_mock_graph_generator.py +0 -0
  65. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/graph/models.py +0 -0
  66. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/graph/stores/__init__.py +0 -0
  67. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/graph/stores/_base.py +0 -0
  68. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/graph/stores/_graphdb_store.py +0 -0
  69. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/graph/stores/_memory_store.py +0 -0
  70. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/graph/stores/_oxigraph_store.py +0 -0
  71. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/graph/stores/_oxrdflib.py +0 -0
  72. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/graph/stores/_rdf_to_graph.py +0 -0
  73. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/__init__.py +0 -0
  74. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/__init__.py +0 -0
  75. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
  76. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/examples/Knowledge-Graph-Nordic44.xml +0 -0
  77. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/examples/__init__.py +0 -0
  78. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
  79. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/exceptions.py +0 -0
  80. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/extractors/__init__.py +0 -0
  81. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/extractors/_base.py +0 -0
  82. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/extractors/_dexpi.py +0 -0
  83. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/extractors/_graph_capturing_sheet.py +0 -0
  84. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/extractors/_mock_graph_generator.py +0 -0
  85. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/loaders/__init__.py +0 -0
  86. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/loaders/_asset_loader.py +0 -0
  87. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/loaders/_base.py +0 -0
  88. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/loaders/_exceptions.py +0 -0
  89. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/loaders/core/__init__.py +0 -0
  90. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/loaders/core/labels.py +0 -0
  91. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/loaders/core/models.py +0 -0
  92. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/loaders/core/rdf_to_assets.py +0 -0
  93. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/loaders/core/rdf_to_relationships.py +0 -0
  94. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/loaders/rdf_to_dms.py +0 -0
  95. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/loaders/validator.py +0 -0
  96. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/models.py +0 -0
  97. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/stores/__init__.py +0 -0
  98. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/stores/_base.py +0 -0
  99. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/stores/_graphdb_store.py +0 -0
  100. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/stores/_memory_store.py +0 -0
  101. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/stores/_oxigraph_store.py +0 -0
  102. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/stores/_oxrdflib.py +0 -0
  103. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/stores/_rdf_to_graph.py +0 -0
  104. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/transformations/__init__.py +0 -0
  105. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/transformations/entity_matcher.py +0 -0
  106. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/transformations/query_generator/__init__.py +0 -0
  107. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/transformations/query_generator/sparql.py +0 -0
  108. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/graph/transformations/transformer.py +0 -0
  109. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/__init__.py +0 -0
  110. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/analysis.py +0 -0
  111. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/examples/Rules-Nordic44-to-TNT.xlsx +0 -0
  112. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/examples/Rules-Nordic44-to-graphql.xlsx +0 -0
  113. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/examples/__init__.py +0 -0
  114. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/examples/power-grid-containers.yaml +0 -0
  115. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/examples/power-grid-example.xlsx +0 -0
  116. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/examples/power-grid-model.yaml +0 -0
  117. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/examples/rules-template.xlsx +0 -0
  118. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/examples/sheet2cdf-transformation-rules.xlsx +0 -0
  119. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/examples/skos-rules.xlsx +0 -0
  120. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/examples/source-to-solution-mapping-rules.xlsx +0 -0
  121. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/examples/wind-energy.owl +0 -0
  122. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/exceptions.py +0 -0
  123. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/exporters/__init__.py +0 -0
  124. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/exporters/_base.py +0 -0
  125. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/exporters/_core/__init__.py +0 -0
  126. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/exporters/_core/rules2labels.py +0 -0
  127. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/exporters/_rules2dms.py +0 -0
  128. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/exporters/_rules2excel.py +0 -0
  129. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/exporters/_rules2graphql.py +0 -0
  130. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/exporters/_rules2ontology.py +0 -0
  131. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/exporters/_rules2pydantic_models.py +0 -0
  132. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/exporters/_rules2rules.py +0 -0
  133. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/exporters/_rules2triples.py +0 -0
  134. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/exporters/_validation.py +0 -0
  135. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/importers/__init__.py +0 -0
  136. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/importers/_base.py +0 -0
  137. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/importers/_dict2rules.py +0 -0
  138. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/importers/_dms2rules.py +0 -0
  139. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/importers/_graph2rules.py +0 -0
  140. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/importers/_json2rules.py +0 -0
  141. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/importers/_owl2rules/__init__.py +0 -0
  142. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/importers/_owl2rules/_owl2classes.py +0 -0
  143. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/importers/_owl2rules/_owl2metadata.py +0 -0
  144. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/importers/_owl2rules/_owl2properties.py +0 -0
  145. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/importers/_owl2rules/_owl2rules.py +0 -0
  146. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/importers/_spreadsheet2rules.py +0 -0
  147. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/importers/_xsd2rules.py +0 -0
  148. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/importers/_yaml2rules.py +0 -0
  149. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/models/__init__.py +0 -0
  150. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/models/_base.py +0 -0
  151. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/models/raw_rules.py +0 -0
  152. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/models/rdfpath.py +0 -0
  153. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/models/rules.py +0 -0
  154. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/models/tables.py +0 -0
  155. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/rules/models/value_types.py +0 -0
  156. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/workflows/examples/Export_DMS/workflow.yaml +0 -0
  157. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/workflows/examples/Export_Rules_to_Ontology/workflow.yaml +0 -0
  158. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/workflows/examples/Extract_DEXPI_Graph_and_Export_Rules/workflow.yaml +0 -0
  159. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/workflows/examples/Extract_RDF_Graph_and_Generate_Assets/workflow.yaml +0 -0
  160. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/workflows/examples/Import_DMS/workflow.yaml +0 -0
  161. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/workflows/examples/Ontology_to_Data_Model/workflow.yaml +0 -0
  162. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/workflows/examples/Validate_Rules/workflow.yaml +0 -0
  163. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/workflows/examples/Validate_Solution_Model/workflow.yaml +0 -0
  164. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/workflows/examples/Visualize_Data_Model_Using_Mock_Graph/workflow.yaml +0 -0
  165. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/legacy/workflows/examples/Visualize_Semantic_Data_Model/workflow.yaml +0 -0
  166. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/py.typed +0 -0
  167. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/__init__.py +0 -0
  168. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/_shared.py +0 -0
  169. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/analysis/__init__.py +0 -0
  170. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/analysis/_base.py +0 -0
  171. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/analysis/_information_rules.py +0 -0
  172. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/examples/__init__.py +0 -0
  173. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/examples/wind-energy.owl +0 -0
  174. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/exceptions.py +0 -0
  175. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/exporters/__init__.py +0 -0
  176. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/exporters/_base.py +0 -0
  177. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/exporters/_models.py +0 -0
  178. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/exporters/_rules2dms.py +0 -0
  179. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/exporters/_rules2excel.py +0 -0
  180. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/exporters/_rules2ontology.py +0 -0
  181. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/exporters/_rules2yaml.py +0 -0
  182. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/exporters/_validation.py +0 -0
  183. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/importers/__init__.py +0 -0
  184. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/importers/_base.py +0 -0
  185. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/importers/_dms2rules.py +0 -0
  186. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/importers/_dtdl2rules/__init__.py +0 -0
  187. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/importers/_dtdl2rules/_unit_lookup.py +0 -0
  188. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/importers/_dtdl2rules/dtdl_converter.py +0 -0
  189. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/importers/_dtdl2rules/dtdl_importer.py +0 -0
  190. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/importers/_dtdl2rules/spec.py +0 -0
  191. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/importers/_owl2rules/__init__.py +0 -0
  192. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/importers/_owl2rules/_owl2classes.py +0 -0
  193. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/importers/_owl2rules/_owl2metadata.py +0 -0
  194. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/importers/_owl2rules/_owl2properties.py +0 -0
  195. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/importers/_owl2rules/_owl2rules.py +0 -0
  196. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/importers/_spreadsheet2rules.py +0 -0
  197. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/importers/_yaml2rules.py +0 -0
  198. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/issues/__init__.py +0 -0
  199. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/issues/base.py +0 -0
  200. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/issues/dms.py +0 -0
  201. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/issues/fileread.py +0 -0
  202. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/issues/formatters.py +0 -0
  203. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/issues/spreadsheet.py +0 -0
  204. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/issues/spreadsheet_file.py +0 -0
  205. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/__init__.py +0 -0
  206. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/_base.py +0 -0
  207. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/_rdfpath.py +0 -0
  208. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/_types/__init__.py +0 -0
  209. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/_types/_base.py +0 -0
  210. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/data_types.py +0 -0
  211. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/dms/__init__.py +0 -0
  212. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/dms/_converter.py +0 -0
  213. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/dms/_exporter.py +0 -0
  214. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/dms/_rules.py +0 -0
  215. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/dms/_rules_input.py +0 -0
  216. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/dms/_schema.py +0 -0
  217. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/dms/_serializer.py +0 -0
  218. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/domain.py +0 -0
  219. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/entities.py +0 -0
  220. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/information/__init__.py +0 -0
  221. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/information/_rules.py +0 -0
  222. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/information/_rules_input.py +0 -0
  223. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/information/_serializer.py +0 -0
  224. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/information/_validation.py +0 -0
  225. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/rules/models/wrapped_entities.py +0 -0
  226. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/utils/__init__.py +0 -0
  227. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/utils/auxiliary.py +0 -0
  228. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/utils/cdf.py +0 -0
  229. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/utils/cdf_classes.py +0 -0
  230. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/utils/cdf_loaders/__init__.py +0 -0
  231. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/utils/cdf_loaders/_base.py +0 -0
  232. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/utils/cdf_loaders/_data_modeling.py +0 -0
  233. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/utils/cdf_loaders/_ingestion.py +0 -0
  234. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/utils/cdf_loaders/data_classes.py +0 -0
  235. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/utils/exceptions.py +0 -0
  236. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/utils/spreadsheet.py +0 -0
  237. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/utils/text.py +0 -0
  238. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/utils/utils.py +0 -0
  239. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/utils/xml.py +0 -0
  240. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/__init__.py +0 -0
  241. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/_exceptions.py +0 -0
  242. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/base.py +0 -0
  243. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/cdf_store.py +0 -0
  244. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/examples/Export_DMS/workflow.yaml +0 -0
  245. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/examples/Export_Rules_to_Ontology/workflow.yaml +0 -0
  246. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/examples/Extract_DEXPI_Graph_and_Export_Rules/workflow.yaml +0 -0
  247. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/examples/Extract_RDF_Graph_and_Generate_Assets/workflow.yaml +0 -0
  248. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/examples/Import_DMS/workflow.yaml +0 -0
  249. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/examples/Ontology_to_Data_Model/workflow.yaml +0 -0
  250. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/examples/Validate_Rules/workflow.yaml +0 -0
  251. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/examples/Validate_Solution_Model/workflow.yaml +0 -0
  252. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/examples/Visualize_Data_Model_Using_Mock_Graph/workflow.yaml +0 -0
  253. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/examples/Visualize_Semantic_Data_Model/workflow.yaml +0 -0
  254. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/manager.py +0 -0
  255. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/migration/__init__.py +0 -0
  256. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/migration/steps.py +0 -0
  257. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/migration/wf_manifests.py +0 -0
  258. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/model.py +0 -0
  259. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/__init__.py +0 -0
  260. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/data_contracts.py +0 -0
  261. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/__init__.py +0 -0
  262. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/current/__init__.py +0 -0
  263. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/current/graph_extractor.py +0 -0
  264. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/current/graph_loader.py +0 -0
  265. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/current/graph_store.py +0 -0
  266. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/current/rules_importer.py +0 -0
  267. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/current/rules_validator.py +0 -0
  268. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/io/__init__.py +0 -0
  269. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/io/io_steps.py +0 -0
  270. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/legacy/__init__.py +0 -0
  271. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/legacy/graph_contextualization.py +0 -0
  272. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/legacy/graph_extractor.py +0 -0
  273. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/legacy/graph_loader.py +0 -0
  274. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/legacy/graph_store.py +0 -0
  275. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/legacy/graph_transformer.py +0 -0
  276. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/legacy/rules_exporter.py +0 -0
  277. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/lib/legacy/rules_importer.py +0 -0
  278. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps/step_model.py +0 -0
  279. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/steps_registry.py +0 -0
  280. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/tasks.py +0 -0
  281. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/triggers.py +0 -0
  282. {cognite_neat-0.77.6 → cognite_neat-0.77.8}/cognite/neat/workflows/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cognite-neat
3
- Version: 0.77.6
3
+ Version: 0.77.8
4
4
  Summary: Knowledge graph transformation
5
5
  Home-page: https://cognite-neat.readthedocs-hosted.com/
6
6
  License: Apache-2.0
@@ -0,0 +1 @@
1
+ __version__ = "0.77.8"
@@ -16,6 +16,7 @@ __all__ = [
16
16
  "MultipleDataModelsWarning",
17
17
  "UnknownPropertyTypeWarning",
18
18
  "FailedToInferValueTypeWarning",
19
+ "MoreThanOneNonAlphanumericCharacterWarning",
19
20
  "UnknownContainerConstraintWarning",
20
21
  "NoDataModelError",
21
22
  "ModelImportError",
@@ -275,6 +276,22 @@ class FailedImportWarning(ModelImportWarning):
275
276
  return {"identifier": list(self.identifier)}
276
277
 
277
278
 
279
+ @dataclass(frozen=True)
280
+ class MoreThanOneNonAlphanumericCharacterWarning(ModelImportWarning):
281
+ description = """This warning is raised when doing regex validation of strings which either represent class ids,
282
+ property ids, prefix, data model name, that contain more than one non-alphanumeric character,
283
+ such as for example '_' or '-'."""
284
+
285
+ field_name: str
286
+ value: str
287
+
288
+ def message(self) -> str:
289
+ return f"Field {self.field_name} with value {self.value} contains more than one non-alphanumeric character!"
290
+
291
+ def dump(self) -> dict[str, str]:
292
+ return {"field_name": self.field_name, "value": self.value}
293
+
294
+
278
295
  @dataclass(frozen=True)
279
296
  class ModelImportError(NeatValidationError, ABC):
280
297
  description = "An error was raised during importing."
@@ -1,4 +1,5 @@
1
1
  import re
2
+ import warnings
2
3
  from collections.abc import Callable
3
4
  from typing import Annotated, Any, cast
4
5
 
@@ -17,6 +18,7 @@ from pydantic.functional_serializers import PlainSerializer
17
18
  from pydantic_core import PydanticCustomError
18
19
 
19
20
  from cognite.neat.rules import exceptions
21
+ from cognite.neat.rules.issues.importing import MoreThanOneNonAlphanumericCharacterWarning
20
22
 
21
23
  from ._base import (
22
24
  MORE_THAN_ONE_NONE_ALPHANUMERIC_REGEX,
@@ -50,7 +52,6 @@ StrOrListType = Annotated[
50
52
  ),
51
53
  ]
52
54
 
53
-
54
55
  StrListType = Annotated[
55
56
  list[str],
56
57
  BeforeValidator(lambda value: [entry.strip() for entry in value.split(",")] if isinstance(value, str) else value),
@@ -96,19 +97,12 @@ VersionType = Annotated[
96
97
  ]
97
98
 
98
99
 
99
- PropertyType = Annotated[
100
- str,
101
- AfterValidator(
102
- lambda value: (
103
- _raise(exceptions.MoreThanOneNonAlphanumericCharacter("property", value).to_pydantic_custom_error())
104
- if re.search(MORE_THAN_ONE_NONE_ALPHANUMERIC_REGEX, value)
105
- else (
106
- value
107
- if re.match(PROPERTY_ID_COMPLIANCE_REGEX, value)
108
- else _raise(
109
- exceptions.PropertyIDRegexViolation(value, PROPERTY_ID_COMPLIANCE_REGEX).to_pydantic_custom_error()
110
- )
111
- )
112
- )
113
- ),
114
- ]
100
+ def _property_validation(value: str) -> str:
101
+ if not re.match(PROPERTY_ID_COMPLIANCE_REGEX, value):
102
+ _raise(exceptions.PropertyIDRegexViolation(value, PROPERTY_ID_COMPLIANCE_REGEX).to_pydantic_custom_error())
103
+ if re.search(MORE_THAN_ONE_NONE_ALPHANUMERIC_REGEX, value):
104
+ warnings.warn(MoreThanOneNonAlphanumericCharacterWarning("property", value), stacklevel=2)
105
+ return value
106
+
107
+
108
+ PropertyType = Annotated[str, AfterValidator(_property_validation)]
@@ -57,7 +57,10 @@ class DMSPostValidation:
57
57
  container_id = container.as_id()
58
58
  row_numbers = {prop_no for prop_no, _ in properties}
59
59
  value_types = {prop.value_type for _, prop in properties if prop.value_type}
60
- if len(value_types) > 1:
60
+ # The container type 'direct' is an exception. On a container the type direct can point to any
61
+ # node. The value type is typically set on the view.
62
+ is_all_direct = all(prop.connection == "direct" for _, prop in properties)
63
+ if len(value_types) > 1 and not is_all_direct:
61
64
  errors.append(
62
65
  issues.spreadsheet.MultiValueTypeError(
63
66
  container_id,
@@ -1,5 +1,6 @@
1
1
  import re
2
- from collections import defaultdict
2
+ from collections import Counter, defaultdict
3
+ from collections.abc import Collection
3
4
  from typing import TYPE_CHECKING, Literal
4
5
 
5
6
  from cognite.neat.rules.models._base import (
@@ -40,7 +41,6 @@ class _InformationRulesConverter:
40
41
  self.last_classes = {class_.class_: class_ for class_ in self.rules.last.classes}
41
42
  else:
42
43
  self.last_classes = {}
43
- self._created_classes_from: dict[ClassEntity, ClassEntity] = {}
44
44
 
45
45
  def as_domain_rules(self) -> DomainRules:
46
46
  raise NotImplementedError("DomainRules not implemented yet")
@@ -58,11 +58,13 @@ class _InformationRulesConverter:
58
58
  default_space = self._to_space(info_metadata.prefix)
59
59
  metadata = self._convert_metadata_to_dms(info_metadata)
60
60
 
61
- properties_by_class: dict[str, list[DMSProperty]] = defaultdict(list)
61
+ properties_by_class: dict[ClassEntity, list[DMSProperty]] = defaultdict(list)
62
+ referenced_containers: dict[ContainerEntity, Counter[ClassEntity]] = defaultdict(Counter)
62
63
  for prop in self.rules.properties:
63
- properties_by_class[prop.class_.versioned_id].append(
64
- self._as_dms_property(prop, default_space, default_version)
65
- )
64
+ dms_property = self._as_dms_property(prop, default_space, default_version)
65
+ properties_by_class[prop.class_].append(dms_property)
66
+ if dms_property.container:
67
+ referenced_containers[dms_property.container][prop.class_] += 1
66
68
 
67
69
  views: list[DMSView] = [
68
70
  DMSView(
@@ -76,41 +78,37 @@ class _InformationRulesConverter:
76
78
  for cls_ in self.rules.classes
77
79
  ]
78
80
 
79
- classes_without_properties: set[str] = set()
80
- for class_ in self.rules.classes:
81
- properties: list[DMSProperty] = properties_by_class.get(class_.class_.versioned_id, [])
82
- if not properties or all(
83
- isinstance(prop.value_type, ViewPropertyEntity) and prop.connection != "direct" for prop in properties
84
- ):
85
- classes_without_properties.add(class_.class_.versioned_id)
81
+ last_dms_rules = self.rules.last.as_dms_architect_rules() if self.rules.last else None
82
+ ref_dms_rules = self.rules.reference.as_dms_architect_rules() if self.rules.reference else None
86
83
 
87
84
  containers: list[DMSContainer] = []
88
- classes = list(self.rules.classes)
89
- for new_class_entity, created_from in self._created_classes_from.items():
90
- # We create new classes in case metadata is set to addition or reshape
91
- # and the class was present in the last schema to avoid creating
92
- # a changed container and instead create a new one.
93
- created_class = self.last_classes[created_from].copy(deep=True)
94
- created_class.class_ = new_class_entity
95
- classes.append(created_class)
96
-
97
- for class_ in classes:
98
- if class_.class_.versioned_id in classes_without_properties:
85
+ class_by_entity = {cls_.class_: cls_ for cls_ in self.rules.classes}
86
+ if self.rules.last:
87
+ for cls_ in self.rules.last.classes:
88
+ if cls_.class_ not in class_by_entity:
89
+ class_by_entity[cls_.class_] = cls_
90
+
91
+ existing_containers: set[ContainerEntity] = set()
92
+ for rule_set in [last_dms_rules, ref_dms_rules]:
93
+ if rule_set:
94
+ existing_containers.update({c.container for c in rule_set.containers or []})
95
+
96
+ for container_entity, class_entities in referenced_containers.items():
97
+ if container_entity in existing_containers:
99
98
  continue
100
- containers.append(
101
- DMSContainer(
102
- class_=class_.class_,
103
- name=class_.name,
104
- container=class_.class_.as_container_entity(default_space),
105
- description=class_.description,
106
- constraint=[
107
- parent.as_container_entity(default_space)
108
- for parent in class_.parent or []
109
- if parent.versioned_id not in classes_without_properties
110
- ]
111
- or None,
112
- )
99
+ constrains = self._create_container_constraint(
100
+ class_entities, default_space, class_by_entity, referenced_containers
101
+ )
102
+ most_used_class_entity = class_entities.most_common(1)[0][0]
103
+ class_ = class_by_entity[most_used_class_entity]
104
+ container = DMSContainer(
105
+ class_=class_.class_,
106
+ container=container_entity,
107
+ name=class_.name,
108
+ description=class_.description,
109
+ constraint=constrains or None,
113
110
  )
111
+ containers.append(container)
114
112
 
115
113
  return DMSRules(
116
114
  metadata=metadata,
@@ -119,10 +117,26 @@ class _InformationRulesConverter:
119
117
  ),
120
118
  views=SheetList[DMSView](data=views),
121
119
  containers=SheetList[DMSContainer](data=containers),
122
- last=self.rules.last.as_dms_architect_rules() if self.rules.last else None,
123
- reference=self.rules.reference.as_dms_architect_rules() if self.rules.reference else None,
120
+ last=last_dms_rules,
121
+ reference=ref_dms_rules,
124
122
  )
125
123
 
124
+ @staticmethod
125
+ def _create_container_constraint(
126
+ class_entities: Counter[ClassEntity],
127
+ default_space: str,
128
+ class_by_entity: dict[ClassEntity, InformationClass],
129
+ referenced_containers: Collection[ContainerEntity],
130
+ ) -> list[ContainerEntity]:
131
+ constrains: list[ContainerEntity] = []
132
+ for entity in class_entities:
133
+ class_ = class_by_entity[entity]
134
+ for parent in class_.parent or []:
135
+ parent_entity = parent.as_container_entity(default_space)
136
+ if parent_entity in referenced_containers:
137
+ constrains.append(parent_entity)
138
+ return constrains
139
+
126
140
  @classmethod
127
141
  def _convert_metadata_to_dms(cls, metadata: InformationMetadata) -> "DMSMetadata":
128
142
  from cognite.neat.rules.models.dms._rules import (
@@ -211,25 +225,35 @@ class _InformationRulesConverter:
211
225
  elif (self.is_addition or self.is_reshape) and prop.class_ in self.last_classes:
212
226
  # We need to create a new container for the property, as we cannot change
213
227
  # the existing container in the last schema
214
- class_entity = prop.class_.copy()
215
- class_entity.suffix = self._bump_suffix(class_entity.suffix)
216
- if class_entity not in self._created_classes_from:
217
- self._created_classes_from[class_entity] = prop.class_
218
- return class_entity.as_container_entity(default_space), prop.property_
228
+ container_entity = prop.class_.as_container_entity(default_space)
229
+ container_entity.suffix = self._bump_suffix(container_entity.suffix)
230
+ return container_entity, prop.property_
219
231
  else:
220
232
  return prop.class_.as_container_entity(default_space), prop.property_
221
233
 
222
- @classmethod
223
- def _get_view_implements(cls, cls_: InformationClass, metadata: InformationMetadata) -> list[ViewEntity]:
234
+ def _get_view_implements(self, cls_: InformationClass, metadata: InformationMetadata) -> list[ViewEntity]:
224
235
  if isinstance(cls_.reference, ReferenceEntity) and cls_.reference.prefix != metadata.prefix:
225
236
  # We use the reference for implements if it is in a different namespace
226
- implements = [
227
- cls_.reference.as_view_entity(metadata.prefix, metadata.version),
228
- ]
237
+ if self.rules.reference and cls_.reference.prefix == self.rules.reference.metadata.prefix:
238
+ implements = [
239
+ cls_.reference.as_view_entity(
240
+ self.rules.reference.metadata.prefix, self.rules.reference.metadata.version
241
+ )
242
+ ]
243
+ else:
244
+ implements = [
245
+ cls_.reference.as_view_entity(metadata.prefix, metadata.version),
246
+ ]
229
247
  else:
230
248
  implements = []
231
-
232
- implements.extend([parent.as_view_entity(metadata.prefix, metadata.version) for parent in cls_.parent or []])
249
+ for parent in cls_.parent or []:
250
+ if self.rules.reference and parent.prefix == self.rules.reference.metadata.prefix:
251
+ view_entity = parent.as_view_entity(
252
+ self.rules.reference.metadata.prefix, self.rules.reference.metadata.version
253
+ )
254
+ else:
255
+ view_entity = parent.as_view_entity(metadata.prefix, metadata.version)
256
+ implements.append(view_entity)
233
257
  return implements
234
258
 
235
259
  @staticmethod
@@ -281,7 +281,6 @@ class RulesToExcel(Step):
281
281
  value="",
282
282
  label="If you chose Dump Format 'reference', the provided ID will be use in the new medata sheet. "
283
283
  "Expected format 'sp_space:my_external_id'.",
284
- options=list(exporters.ExcelExporter.dump_options),
285
284
  ),
286
285
  Configurable(
287
286
  name="File path",
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "cognite-neat"
3
- version = "0.77.6"
3
+ version = "0.77.8"
4
4
  readme = "README.md"
5
5
  description = "Knowledge graph transformation"
6
6
  authors = [
@@ -1 +0,0 @@
1
- __version__ = "0.77.6"
File without changes
File without changes