cognite-neat 0.83.0__tar.gz → 0.84.1__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 (317) hide show
  1. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/PKG-INFO +1 -1
  2. cognite_neat-0.84.1/cognite/neat/_shared.py +35 -0
  3. cognite_neat-0.84.1/cognite/neat/_version.py +1 -0
  4. cognite_neat-0.84.1/cognite/neat/graph/loaders/_rdf2asset.py +123 -0
  5. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/loaders/_rdf2dms.py +2 -2
  6. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/stores/_base.py +7 -3
  7. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/exporters/_base.py +7 -2
  8. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/exporters/_rules2dms.py +100 -92
  9. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/importers/_base.py +3 -3
  10. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/_rdfpath.py +41 -2
  11. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/asset/_rules.py +5 -2
  12. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/information/_converter.py +27 -0
  13. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/information/_rules.py +6 -1
  14. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/utils/cdf_loaders/_base.py +1 -9
  15. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/utils/cdf_loaders/_data_modeling.py +2 -1
  16. cognite_neat-0.84.1/cognite/neat/utils/upload.py +126 -0
  17. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/current/rules_exporter.py +5 -5
  18. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/pyproject.toml +5 -5
  19. cognite_neat-0.83.0/cognite/neat/_version.py +0 -1
  20. cognite_neat-0.83.0/cognite/neat/utils/upload.py +0 -86
  21. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/LICENSE +0 -0
  22. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/README.md +0 -0
  23. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/__init__.py +0 -0
  24. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/__init__.py +0 -0
  25. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/asgi/metrics.py +0 -0
  26. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/configuration.py +0 -0
  27. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/context_manager/__init__.py +0 -0
  28. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/context_manager/manager.py +0 -0
  29. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/data_classes/__init__.py +0 -0
  30. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/data_classes/rest.py +0 -0
  31. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/explorer.py +0 -0
  32. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/routers/configuration.py +0 -0
  33. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/routers/core.py +0 -0
  34. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/routers/crud.py +0 -0
  35. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/routers/data_exploration.py +0 -0
  36. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/routers/metrics.py +0 -0
  37. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/routers/rules.py +0 -0
  38. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/routers/workflows.py +0 -0
  39. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/utils/__init__.py +0 -0
  40. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/utils/data_mapping.py +0 -0
  41. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/utils/logging.py +0 -0
  42. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/api/utils/query_templates.py +0 -0
  43. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/main.py +0 -0
  44. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/monitoring/__init__.py +0 -0
  45. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/monitoring/metrics.py +0 -0
  46. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/index.html +0 -0
  47. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/neat-app/.gitignore +0 -0
  48. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/neat-app/README.md +0 -0
  49. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/neat-app/build/asset-manifest.json +0 -0
  50. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/neat-app/build/favicon.ico +0 -0
  51. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/neat-app/build/img/architect-icon.svg +0 -0
  52. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/neat-app/build/img/developer-icon.svg +0 -0
  53. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/neat-app/build/img/sme-icon.svg +0 -0
  54. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/neat-app/build/index.html +0 -0
  55. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/neat-app/build/logo192.png +0 -0
  56. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/neat-app/build/manifest.json +0 -0
  57. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/neat-app/build/robots.txt +0 -0
  58. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/neat-app/build/static/css/main.38a62222.css +0 -0
  59. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/neat-app/build/static/css/main.38a62222.css.map +0 -0
  60. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/neat-app/build/static/js/main.ec7f72e2.js +0 -0
  61. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/neat-app/build/static/js/main.ec7f72e2.js.LICENSE.txt +0 -0
  62. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/neat-app/build/static/js/main.ec7f72e2.js.map +0 -0
  63. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/app/ui/neat-app/build/static/media/logo.8093b84df9ed36a174c629d6fe0b730d.svg +0 -0
  64. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/config.py +0 -0
  65. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/constants.py +0 -0
  66. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/exceptions.py +0 -0
  67. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/__init__.py +0 -0
  68. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/_shared.py +0 -0
  69. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/_tracking/__init__.py +0 -0
  70. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/_tracking/base.py +0 -0
  71. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/_tracking/log.py +0 -0
  72. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
  73. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/examples/Knowledge-Graph-Nordic44.xml +0 -0
  74. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/examples/__init__.py +0 -0
  75. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
  76. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/exceptions.py +0 -0
  77. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/extractors/__init__.py +0 -0
  78. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/extractors/_base.py +0 -0
  79. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/extractors/_classic_cdf/__init__.py +0 -0
  80. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/extractors/_classic_cdf/_assets.py +0 -0
  81. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/extractors/_classic_cdf/_events.py +0 -0
  82. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/extractors/_classic_cdf/_files.py +0 -0
  83. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/extractors/_classic_cdf/_labels.py +0 -0
  84. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/extractors/_classic_cdf/_relationships.py +0 -0
  85. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/extractors/_classic_cdf/_sequences.py +0 -0
  86. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/extractors/_classic_cdf/_timeseries.py +0 -0
  87. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/extractors/_dexpi.py +0 -0
  88. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/extractors/_mock_graph_generator.py +0 -0
  89. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/extractors/_rdf_file.py +0 -0
  90. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/issues/__init__.py +0 -0
  91. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/issues/loader.py +0 -0
  92. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/loaders/__init__.py +0 -0
  93. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/loaders/_base.py +0 -0
  94. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/models.py +0 -0
  95. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/queries/__init__.py +0 -0
  96. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/queries/_base.py +0 -0
  97. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/queries/_construct.py +0 -0
  98. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/queries/_shared.py +0 -0
  99. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/stores/__init__.py +0 -0
  100. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/stores/_oxrdflib.py +0 -0
  101. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/stores/_provenance.py +0 -0
  102. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/transformers/__init__.py +0 -0
  103. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/transformers/_base.py +0 -0
  104. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/graph/transformers/_classic_cdf.py +0 -0
  105. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/issues.py +0 -0
  106. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/__init__.py +0 -0
  107. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/__init__.py +0 -0
  108. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
  109. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/examples/Knowledge-Graph-Nordic44.xml +0 -0
  110. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/examples/__init__.py +0 -0
  111. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
  112. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/exceptions.py +0 -0
  113. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/extractors/__init__.py +0 -0
  114. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/extractors/_base.py +0 -0
  115. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/extractors/_dexpi.py +0 -0
  116. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/extractors/_graph_capturing_sheet.py +0 -0
  117. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/extractors/_mock_graph_generator.py +0 -0
  118. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/loaders/__init__.py +0 -0
  119. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/loaders/_asset_loader.py +0 -0
  120. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/loaders/_base.py +0 -0
  121. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/loaders/_exceptions.py +0 -0
  122. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/loaders/core/__init__.py +0 -0
  123. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/loaders/core/labels.py +0 -0
  124. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/loaders/core/models.py +0 -0
  125. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/loaders/core/rdf_to_assets.py +0 -0
  126. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/loaders/core/rdf_to_relationships.py +0 -0
  127. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/loaders/rdf_to_dms.py +0 -0
  128. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/loaders/validator.py +0 -0
  129. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/models.py +0 -0
  130. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/stores/__init__.py +0 -0
  131. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/stores/_base.py +0 -0
  132. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/stores/_graphdb_store.py +0 -0
  133. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/stores/_memory_store.py +0 -0
  134. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/stores/_oxigraph_store.py +0 -0
  135. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/stores/_oxrdflib.py +0 -0
  136. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/stores/_rdf_to_graph.py +0 -0
  137. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/transformations/__init__.py +0 -0
  138. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/transformations/entity_matcher.py +0 -0
  139. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/transformations/query_generator/__init__.py +0 -0
  140. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/transformations/query_generator/sparql.py +0 -0
  141. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/graph/transformations/transformer.py +0 -0
  142. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/__init__.py +0 -0
  143. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/analysis.py +0 -0
  144. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/examples/Rules-Nordic44-to-TNT.xlsx +0 -0
  145. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/examples/Rules-Nordic44-to-graphql.xlsx +0 -0
  146. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/examples/__init__.py +0 -0
  147. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/examples/power-grid-containers.yaml +0 -0
  148. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/examples/power-grid-example.xlsx +0 -0
  149. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/examples/power-grid-model.yaml +0 -0
  150. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/examples/rules-template.xlsx +0 -0
  151. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/examples/sheet2cdf-transformation-rules.xlsx +0 -0
  152. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/examples/skos-rules.xlsx +0 -0
  153. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/examples/source-to-solution-mapping-rules.xlsx +0 -0
  154. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/examples/wind-energy.owl +0 -0
  155. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/exceptions.py +0 -0
  156. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/exporters/__init__.py +0 -0
  157. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/exporters/_base.py +0 -0
  158. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/exporters/_core/__init__.py +0 -0
  159. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/exporters/_core/rules2labels.py +0 -0
  160. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/exporters/_rules2dms.py +0 -0
  161. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/exporters/_rules2excel.py +0 -0
  162. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/exporters/_rules2graphql.py +0 -0
  163. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/exporters/_rules2ontology.py +0 -0
  164. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/exporters/_rules2pydantic_models.py +0 -0
  165. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/exporters/_rules2rules.py +0 -0
  166. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/exporters/_rules2triples.py +0 -0
  167. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/exporters/_validation.py +0 -0
  168. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/importers/__init__.py +0 -0
  169. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/importers/_base.py +0 -0
  170. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/importers/_dict2rules.py +0 -0
  171. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/importers/_dms2rules.py +0 -0
  172. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/importers/_graph2rules.py +0 -0
  173. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/importers/_json2rules.py +0 -0
  174. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/importers/_owl2rules/__init__.py +0 -0
  175. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/importers/_owl2rules/_owl2classes.py +0 -0
  176. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/importers/_owl2rules/_owl2metadata.py +0 -0
  177. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/importers/_owl2rules/_owl2properties.py +0 -0
  178. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/importers/_owl2rules/_owl2rules.py +0 -0
  179. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/importers/_spreadsheet2rules.py +0 -0
  180. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/importers/_xsd2rules.py +0 -0
  181. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/importers/_yaml2rules.py +0 -0
  182. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/models/__init__.py +0 -0
  183. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/models/_base.py +0 -0
  184. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/models/raw_rules.py +0 -0
  185. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/models/rdfpath.py +0 -0
  186. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/models/rules.py +0 -0
  187. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/models/tables.py +0 -0
  188. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/rules/models/value_types.py +0 -0
  189. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/workflows/examples/Export_DMS/workflow.yaml +0 -0
  190. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/workflows/examples/Export_Rules_to_Ontology/workflow.yaml +0 -0
  191. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/workflows/examples/Extract_DEXPI_Graph_and_Export_Rules/workflow.yaml +0 -0
  192. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/workflows/examples/Extract_RDF_Graph_and_Generate_Assets/workflow.yaml +0 -0
  193. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/workflows/examples/Import_DMS/workflow.yaml +0 -0
  194. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/workflows/examples/Ontology_to_Data_Model/workflow.yaml +0 -0
  195. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/workflows/examples/Validate_Rules/workflow.yaml +0 -0
  196. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/workflows/examples/Validate_Solution_Model/workflow.yaml +0 -0
  197. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/workflows/examples/Visualize_Data_Model_Using_Mock_Graph/workflow.yaml +0 -0
  198. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/legacy/workflows/examples/Visualize_Semantic_Data_Model/workflow.yaml +0 -0
  199. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/py.typed +0 -0
  200. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/__init__.py +0 -0
  201. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/_shared.py +0 -0
  202. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/analysis/__init__.py +0 -0
  203. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/analysis/_base.py +0 -0
  204. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/analysis/_information_rules.py +0 -0
  205. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/examples/__init__.py +0 -0
  206. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/examples/wind-energy.owl +0 -0
  207. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/exceptions.py +0 -0
  208. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/exporters/__init__.py +0 -0
  209. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/exporters/_rules2excel.py +0 -0
  210. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/exporters/_rules2ontology.py +0 -0
  211. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/exporters/_rules2yaml.py +0 -0
  212. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/exporters/_validation.py +0 -0
  213. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/importers/__init__.py +0 -0
  214. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/importers/_dms2rules.py +0 -0
  215. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/importers/_dtdl2rules/__init__.py +0 -0
  216. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/importers/_dtdl2rules/_unit_lookup.py +0 -0
  217. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/importers/_dtdl2rules/dtdl_converter.py +0 -0
  218. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/importers/_dtdl2rules/dtdl_importer.py +0 -0
  219. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/importers/_dtdl2rules/spec.py +0 -0
  220. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/importers/_inference2rules.py +0 -0
  221. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/importers/_owl2rules/__init__.py +0 -0
  222. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/importers/_owl2rules/_owl2classes.py +0 -0
  223. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/importers/_owl2rules/_owl2metadata.py +0 -0
  224. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/importers/_owl2rules/_owl2properties.py +0 -0
  225. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/importers/_owl2rules/_owl2rules.py +0 -0
  226. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/importers/_spreadsheet2rules.py +0 -0
  227. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/importers/_yaml2rules.py +0 -0
  228. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/issues/__init__.py +0 -0
  229. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/issues/base.py +0 -0
  230. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/issues/dms.py +0 -0
  231. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/issues/fileread.py +0 -0
  232. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/issues/formatters.py +0 -0
  233. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/issues/importing.py +0 -0
  234. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/issues/spreadsheet.py +0 -0
  235. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/issues/spreadsheet_file.py +0 -0
  236. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/__init__.py +0 -0
  237. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/_base.py +0 -0
  238. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/_constants.py +0 -0
  239. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/_types/__init__.py +0 -0
  240. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/_types/_base.py +0 -0
  241. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/_types/_field.py +0 -0
  242. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/asset/__init__.py +0 -0
  243. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/asset/_converter.py +0 -0
  244. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/asset/_rules_input.py +0 -0
  245. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/asset/_serializer.py +0 -0
  246. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/asset/_validation.py +0 -0
  247. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/data_types.py +0 -0
  248. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/dms/__init__.py +0 -0
  249. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/dms/_converter.py +0 -0
  250. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/dms/_exporter.py +0 -0
  251. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/dms/_rules.py +0 -0
  252. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/dms/_rules_input.py +0 -0
  253. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/dms/_schema.py +0 -0
  254. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/dms/_serializer.py +0 -0
  255. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/dms/_validation.py +0 -0
  256. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/domain.py +0 -0
  257. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/entities.py +0 -0
  258. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/information/__init__.py +0 -0
  259. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/information/_rules_input.py +0 -0
  260. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/information/_serializer.py +0 -0
  261. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/information/_validation.py +0 -0
  262. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/rules/models/wrapped_entities.py +0 -0
  263. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/utils/__init__.py +0 -0
  264. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/utils/auxiliary.py +0 -0
  265. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/utils/cdf.py +0 -0
  266. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/utils/cdf_classes.py +0 -0
  267. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/utils/cdf_loaders/__init__.py +0 -0
  268. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/utils/cdf_loaders/_ingestion.py +0 -0
  269. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/utils/cdf_loaders/data_classes.py +0 -0
  270. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/utils/exceptions.py +0 -0
  271. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/utils/spreadsheet.py +0 -0
  272. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/utils/text.py +0 -0
  273. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/utils/utils.py +0 -0
  274. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/utils/xml.py +0 -0
  275. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/__init__.py +0 -0
  276. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/_exceptions.py +0 -0
  277. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/base.py +0 -0
  278. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/cdf_store.py +0 -0
  279. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/examples/Export_DMS/workflow.yaml +0 -0
  280. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/examples/Export_Rules_to_Ontology/workflow.yaml +0 -0
  281. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/examples/Extract_DEXPI_Graph_and_Export_Rules/workflow.yaml +0 -0
  282. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/examples/Extract_RDF_Graph_and_Generate_Assets/workflow.yaml +0 -0
  283. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/examples/Import_DMS/workflow.yaml +0 -0
  284. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/examples/Ontology_to_Data_Model/workflow.yaml +0 -0
  285. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/examples/Validate_Rules/workflow.yaml +0 -0
  286. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/examples/Validate_Solution_Model/workflow.yaml +0 -0
  287. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/examples/Visualize_Data_Model_Using_Mock_Graph/workflow.yaml +0 -0
  288. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/examples/Visualize_Semantic_Data_Model/workflow.yaml +0 -0
  289. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/manager.py +0 -0
  290. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/migration/__init__.py +0 -0
  291. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/migration/steps.py +0 -0
  292. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/migration/wf_manifests.py +0 -0
  293. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/model.py +0 -0
  294. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/__init__.py +0 -0
  295. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/data_contracts.py +0 -0
  296. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/__init__.py +0 -0
  297. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/current/__init__.py +0 -0
  298. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/current/graph_extractor.py +0 -0
  299. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/current/graph_loader.py +0 -0
  300. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/current/graph_store.py +0 -0
  301. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/current/rules_importer.py +0 -0
  302. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/current/rules_validator.py +0 -0
  303. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/io/__init__.py +0 -0
  304. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/io/io_steps.py +0 -0
  305. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/legacy/__init__.py +0 -0
  306. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/legacy/graph_contextualization.py +0 -0
  307. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/legacy/graph_extractor.py +0 -0
  308. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/legacy/graph_loader.py +0 -0
  309. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/legacy/graph_store.py +0 -0
  310. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/legacy/graph_transformer.py +0 -0
  311. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/legacy/rules_exporter.py +0 -0
  312. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/lib/legacy/rules_importer.py +0 -0
  313. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps/step_model.py +0 -0
  314. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/steps_registry.py +0 -0
  315. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/tasks.py +0 -0
  316. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/cognite/neat/workflows/triggers.py +0 -0
  317. {cognite_neat-0.83.0 → cognite_neat-0.84.1}/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.83.0
3
+ Version: 0.84.1
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,35 @@
1
+ from abc import abstractmethod
2
+ from collections.abc import Hashable, Sequence
3
+ from dataclasses import dataclass
4
+ from typing import Any, TypeVar
5
+
6
+ import pandas as pd
7
+
8
+ T_ID = TypeVar("T_ID", bound=Hashable)
9
+
10
+
11
+ @dataclass
12
+ class NeatObject:
13
+ """A neat object can be dumped to a dictionary."""
14
+
15
+ @abstractmethod
16
+ def dump(self, aggregate: bool = True) -> dict[str, Any]:
17
+ """Return a dictionary representation of the object."""
18
+ raise NotImplementedError()
19
+
20
+
21
+ T_NeatObject = TypeVar("T_NeatObject", bound=NeatObject)
22
+
23
+
24
+ class NeatList(list, Sequence[T_NeatObject]):
25
+ """A list of neat objects."""
26
+
27
+ def dump(self) -> list[dict[str, Any]]:
28
+ """Return a list of dictionary representations of the objects."""
29
+ return [obj.dump() for obj in self]
30
+
31
+ def to_pandas(self) -> pd.DataFrame:
32
+ return pd.DataFrame(self.dump())
33
+
34
+ def _repr_html_(self) -> str:
35
+ return self.to_pandas()._repr_html_() # type: ignore[operator]
@@ -0,0 +1 @@
1
+ __version__ = "0.84.1"
@@ -0,0 +1,123 @@
1
+ from collections.abc import Sequence
2
+ from dataclasses import dataclass, fields
3
+
4
+ from cognite.client import CogniteClient
5
+ from cognite.client.data_classes import AssetWrite
6
+
7
+ from cognite.neat.graph._tracking.base import Tracker
8
+ from cognite.neat.graph._tracking.log import LogTracker
9
+ from cognite.neat.graph.stores import NeatGraphStore
10
+ from cognite.neat.issues import NeatIssue, NeatIssueList
11
+ from cognite.neat.rules.models import AssetRules
12
+
13
+ from ._base import CDFLoader
14
+
15
+
16
+ @dataclass(frozen=True)
17
+ class AssetLoaderMetadataKeys:
18
+ """Class holding mapping between NEAT metadata key names and their desired names
19
+ in CDF Asset metadata
20
+
21
+ Args:
22
+ start_time: Start time key name
23
+ end_time: End time key name
24
+ update_time: Update time key name
25
+ resurrection_time: Resurrection time key name
26
+ identifier: Identifier key name
27
+ active: Active key name
28
+ type: Type key name
29
+ """
30
+
31
+ start_time: str = "start_time"
32
+ end_time: str = "end_time"
33
+ update_time: str = "update_time"
34
+ resurrection_time: str = "resurrection_time"
35
+ identifier: str = "identifier"
36
+ active: str = "active"
37
+ type: str = "type"
38
+
39
+ def as_aliases(self) -> dict[str, str]:
40
+ return {str(field.default): getattr(self, field.name) for field in fields(self)}
41
+
42
+
43
+ class AssetLoader(CDFLoader[AssetWrite]):
44
+ def __init__(
45
+ self,
46
+ rules: AssetRules,
47
+ graph_store: NeatGraphStore,
48
+ data_set_id: int,
49
+ use_orphanage: bool = False,
50
+ use_labels: bool = False,
51
+ asset_external_id_prefix: str | None = None,
52
+ metadata_keys: AssetLoaderMetadataKeys | None = None,
53
+ create_issues: Sequence[NeatIssue] | None = None,
54
+ tracker: type[Tracker] | None = None,
55
+ ):
56
+ super().__init__(graph_store)
57
+
58
+ self.rules = rules
59
+ self.data_set_id = data_set_id
60
+ self.use_labels = use_labels
61
+ self.use_orphanage = use_orphanage
62
+
63
+ self.orphanage_external_id = (
64
+ f"{asset_external_id_prefix or ''}orphanage-{data_set_id}" if use_orphanage else None
65
+ )
66
+
67
+ self.asset_external_id_prefix = asset_external_id_prefix
68
+ self.metadata_keys = metadata_keys or AssetLoaderMetadataKeys()
69
+
70
+ self._issues = NeatIssueList[NeatIssue](create_issues or [])
71
+ self._tracker: type[Tracker] = tracker or LogTracker
72
+
73
+ @classmethod
74
+ def from_rules(
75
+ cls,
76
+ rules: AssetRules,
77
+ graph_store: NeatGraphStore,
78
+ data_set_id: int,
79
+ use_orphanage: bool = False,
80
+ use_labels: bool = False,
81
+ asset_external_id_prefix: str | None = None,
82
+ metadata_keys: AssetLoaderMetadataKeys | None = None,
83
+ ) -> "AssetLoader":
84
+ issues: list[NeatIssue] = []
85
+
86
+ return cls(
87
+ rules, graph_store, data_set_id, use_orphanage, use_labels, asset_external_id_prefix, metadata_keys, issues
88
+ )
89
+
90
+ def _create_validation_classes(self) -> None:
91
+ # need to get back class-property pairs where are definition of
92
+ # asset implementations, extend InformationRulesAnalysis make it generic
93
+
94
+ # by default if there is not explicitly stated external_id
95
+ # use rdf:type and drop the prefix
96
+
97
+ # based on those create pydantic model AssetDefinition
98
+ # which will have .to_asset_write()
99
+
100
+ raise NotImplementedError("Not implemented yet, this is placeholder")
101
+
102
+ def categorize_assets(self, client: CogniteClient) -> None:
103
+ """Categorize assets to those to be created, updated, decommissioned, or resurrected"""
104
+
105
+ raise NotImplementedError("Not implemented yet, this is placeholder")
106
+
107
+ def load_to_cdf(self, client: CogniteClient, dry_run: bool = False) -> Sequence[AssetWrite]:
108
+ # generate assets
109
+ # check for circular asset hierarchy
110
+ # check for orphaned assets
111
+ # batch upsert of assets to CDF (otherwise we will hit the API rate limit)
112
+
113
+ raise NotImplementedError("Not implemented yet, this is placeholder")
114
+
115
+ @classmethod
116
+ def _check_for_circular_asset_hierarchy(cls, assets: list[AssetWrite]) -> None:
117
+ """Check for circular references in the asset rules"""
118
+ raise NotImplementedError("Not implemented yet, this is placeholder")
119
+
120
+ @classmethod
121
+ def _check_for_orphaned_assets(cls, assets: list[AssetWrite]) -> None:
122
+ """Check for circular references in the asset rules"""
123
+ raise NotImplementedError("Not implemented yet, this is placeholder")
@@ -34,14 +34,14 @@ class DMSLoader(CDFLoader[dm.InstanceApply]):
34
34
  data_model: dm.DataModel[dm.View] | None,
35
35
  instance_space: str,
36
36
  class_by_view_id: dict[ViewId, str] | None = None,
37
- creat_issues: Sequence[NeatIssue] | None = None,
37
+ create_issues: Sequence[NeatIssue] | None = None,
38
38
  tracker: type[Tracker] | None = None,
39
39
  ):
40
40
  super().__init__(graph_store)
41
41
  self.data_model = data_model
42
42
  self.instance_space = instance_space
43
43
  self.class_by_view_id = class_by_view_id or {}
44
- self._issues = NeatIssueList[NeatIssue](creat_issues or [])
44
+ self._issues = NeatIssueList[NeatIssue](create_issues or [])
45
45
  self._tracker: type[Tracker] = tracker or LogTracker
46
46
 
47
47
  @classmethod
@@ -14,8 +14,8 @@ from cognite.neat.graph.extractors import RdfFileExtractor, TripleExtractors
14
14
  from cognite.neat.graph.models import Triple
15
15
  from cognite.neat.graph.queries import Queries
16
16
  from cognite.neat.graph.transformers import Transformers
17
+ from cognite.neat.rules.models import InformationRules
17
18
  from cognite.neat.rules.models.entities import ClassEntity
18
- from cognite.neat.rules.models.information import InformationRules
19
19
  from cognite.neat.utils.auxiliary import local_import
20
20
 
21
21
  from ._provenance import Change, Provenance
@@ -66,7 +66,8 @@ class NeatGraphStore:
66
66
 
67
67
  def add_rules(self, rules: InformationRules) -> None:
68
68
  """This method is used to add rules to the graph store and it is the only correct
69
- way to add rules to the graph store, after the graph store has been initialized."""
69
+ way to add rules to the graph store, after the graph store has been initialized.
70
+ """
70
71
 
71
72
  self.rules = rules
72
73
  self.base_namespace = self.rules.metadata.namespace
@@ -169,7 +170,10 @@ class NeatGraphStore:
169
170
  # not yet developed
170
171
 
171
172
  if not self.rules:
172
- warnings.warn("No rules found for the graph store, returning empty list.", stacklevel=2)
173
+ warnings.warn(
174
+ "No rules found for the graph store, returning empty list.",
175
+ stacklevel=2,
176
+ )
173
177
  return []
174
178
 
175
179
  class_entity = ClassEntity(prefix=self.rules.metadata.prefix, suffix=class_)
@@ -7,7 +7,7 @@ from cognite.client import CogniteClient
7
7
 
8
8
  from cognite.neat.rules._shared import Rules
9
9
  from cognite.neat.rules.models import DMSRules, InformationRules, RoleTypes
10
- from cognite.neat.utils.upload import UploadDiffsCount
10
+ from cognite.neat.utils.upload import UploadResult, UploadResultList
11
11
 
12
12
  T_Export = TypeVar("T_Export")
13
13
 
@@ -37,5 +37,10 @@ class BaseExporter(ABC, Generic[T_Export]):
37
37
 
38
38
  class CDFExporter(BaseExporter[T_Export]):
39
39
  @abstractmethod
40
- def export_to_cdf(self, rules: Rules, client: CogniteClient, dry_run: bool = False) -> Iterable[UploadDiffsCount]:
40
+ def export_to_cdf_iterable(
41
+ self, rules: Rules, client: CogniteClient, dry_run: bool = False
42
+ ) -> Iterable[UploadResult]:
41
43
  raise NotImplementedError
44
+
45
+ def export_to_cdf(self, rules: Rules, client: CogniteClient, dry_run: bool = False) -> UploadResultList:
46
+ return UploadResultList(self.export_to_cdf_iterable(rules, client, dry_run))
@@ -1,5 +1,5 @@
1
1
  import warnings
2
- from collections.abc import Collection, Iterable
2
+ from collections.abc import Collection, Hashable, Iterable, Sequence
3
3
  from pathlib import Path
4
4
  from typing import Literal, TypeAlias, cast
5
5
 
@@ -31,7 +31,7 @@ from cognite.neat.utils.cdf_loaders import (
31
31
  TransformationLoader,
32
32
  ViewLoader,
33
33
  )
34
- from cognite.neat.utils.upload import UploadDiffsCount
34
+ from cognite.neat.utils.upload import UploadResult
35
35
 
36
36
  from ._base import CDFExporter
37
37
 
@@ -123,109 +123,84 @@ class DMSExporter(CDFExporter[DMSSchema]):
123
123
  raise ValueError(f"{type(rules).__name__} cannot be exported to DMS")
124
124
  return dms_rules.as_schema(include_pipeline=self.export_pipeline, instance_space=self.instance_space)
125
125
 
126
- def delete_from_cdf(self, rules: Rules, client: CogniteClient, dry_run: bool = False) -> Iterable[UploadDiffsCount]:
127
- schema, to_export = self._prepare_schema_and_exporters(rules, client)
126
+ def delete_from_cdf(self, rules: Rules, client: CogniteClient, dry_run: bool = False) -> Iterable[UploadResult]:
127
+ to_export = self._prepare_exporters(rules, client)
128
128
 
129
129
  # we need to reverse order in which we are picking up the items to delete
130
130
  # as they are sorted in the order of creation and we need to delete them in reverse order
131
- for all_items, loader in reversed(to_export):
132
- all_item_ids = loader.get_ids(all_items)
133
- item_ids = [item_id for item_id in all_item_ids]
134
- cdf_items = loader.retrieve(item_ids)
135
- cdf_item_by_id = {loader.get_id(item): item for item in cdf_items}
136
- items = [item for item in all_items if loader.get_id(item) in item_ids]
137
- to_delete = []
138
-
139
- for item in items:
131
+ for items, loader in reversed(to_export):
132
+ item_ids = loader.get_ids(items)
133
+ existing_items = loader.retrieve(item_ids)
134
+ existing_ids = loader.get_ids(existing_items)
135
+ to_delete: list[Hashable] = []
136
+ for item_id in item_ids:
140
137
  if (
141
138
  isinstance(loader, DataModelingLoader)
142
139
  and self.include_space is not None
143
- and not loader.in_space(item, self.include_space)
140
+ and not loader.in_space(item_id, self.include_space)
144
141
  ):
145
142
  continue
146
143
 
147
- cdf_item = cdf_item_by_id.get(loader.get_id(item))
148
- if cdf_item:
149
- to_delete.append(cdf_item)
150
-
151
- deleted = len(to_delete)
152
- failed_deleted = 0
144
+ if item_id in existing_ids:
145
+ to_delete.append(item_id)
153
146
 
147
+ deleted: set[Hashable] = set()
148
+ failed_deleted: set[Hashable] = set()
154
149
  error_messages: list[str] = []
155
- if not dry_run:
156
- if to_delete:
157
- try:
158
- loader.delete(to_delete)
159
- except CogniteAPIError as e:
160
- failed_deleted = len(e.failed) + len(e.unknown)
161
- deleted -= failed_deleted
162
- error_messages.append(f"Failed delete: {e.message}")
150
+ if dry_run:
151
+ deleted.update(to_delete)
152
+ elif to_delete:
153
+ try:
154
+ loader.delete(to_delete)
155
+ except CogniteAPIError as e:
156
+ failed_deleted.update(loader.get_id(item) for item in e.failed + e.unknown)
157
+ deleted.update(loader.get_id(item) for item in e.successful)
158
+ error_messages.append(f"Failed delete: {e.message}")
159
+ else:
160
+ deleted.update(to_delete)
163
161
 
164
- yield UploadDiffsCount(
162
+ yield UploadResult(
165
163
  name=loader.resource_name,
166
164
  deleted=deleted,
167
- skipped=0,
168
165
  failed_deleted=failed_deleted,
169
166
  error_messages=error_messages,
170
167
  )
171
168
 
172
- def export_to_cdf(self, rules: Rules, client: CogniteClient, dry_run: bool = False) -> Iterable[UploadDiffsCount]:
173
- schema, to_export = self._prepare_schema_and_exporters(rules, client)
169
+ def export_to_cdf_iterable(
170
+ self, rules: Rules, client: CogniteClient, dry_run: bool = False
171
+ ) -> Iterable[UploadResult]:
172
+ to_export = self._prepare_exporters(rules, client)
174
173
 
175
- # The conversion from DMS to GraphQL does not seem to be triggered even if the views
176
- # are changed. This is a workaround to force the conversion.
177
174
  redeploy_data_model = False
175
+ for items, loader in to_export:
176
+ # The conversion from DMS to GraphQL does not seem to be triggered even if the views
177
+ # are changed. This is a workaround to force the conversion.
178
+ is_redeploying = loader is DataModelingLoader and redeploy_data_model
178
179
 
179
- for all_items, loader in to_export:
180
- issue_list = IssueList()
181
- all_item_ids = loader.get_ids(all_items)
182
- item_ids = [item_id for item_id in all_item_ids]
183
- cdf_items = loader.retrieve(item_ids)
184
- cdf_item_by_id = {loader.get_id(item): item for item in cdf_items}
185
- items = [item for item in all_items if loader.get_id(item) in item_ids]
186
- to_create, to_update, unchanged, to_delete = [], [], [], []
187
- is_redeploying = loader.resource_name == "data_models" and redeploy_data_model
188
- for item in items:
189
- if (
190
- isinstance(loader, DataModelingLoader)
191
- and self.include_space is not None
192
- and not loader.in_space(item, self.include_space)
193
- ):
194
- continue
195
-
196
- cdf_item = cdf_item_by_id.get(loader.get_id(item))
197
- if cdf_item is None:
198
- to_create.append(item)
199
- elif is_redeploying:
200
- to_update.append(item)
201
- to_delete.append(cdf_item)
202
- elif loader.are_equal(item, cdf_item):
203
- unchanged.append(item)
204
- else:
205
- to_update.append(item)
206
-
207
- created = len(to_create)
208
- failed_created = 0
209
- skipped = 0
210
-
211
- if self.existing_handling in ["update", "force"]:
212
- changed = len(to_update)
213
- failed_changed = 0
214
- elif self.existing_handling == "skip":
215
- changed = 0
216
- failed_changed = 0
217
- skipped += len(to_update)
218
- elif self.existing_handling == "fail":
219
- failed_changed = len(to_update)
220
- changed = 0
221
- else:
222
- raise ValueError(f"Unsupported existing_handling {self.existing_handling}")
180
+ to_create, to_delete, to_update, unchanged = self._categorize_items_for_upload(
181
+ loader, items, is_redeploying
182
+ )
223
183
 
184
+ issue_list = IssueList()
224
185
  warning_list = self._validate(loader, items)
225
186
  issue_list.extend(warning_list)
226
187
 
188
+ created: set[Hashable] = set()
189
+ skipped: set[Hashable] = set()
190
+ changed: set[Hashable] = set()
191
+ failed_created: set[Hashable] = set()
192
+ failed_changed: set[Hashable] = set()
227
193
  error_messages: list[str] = []
228
- if not dry_run:
194
+ if dry_run:
195
+ if self.existing_handling in ["update", "force"]:
196
+ changed.update(loader.get_id(item) for item in to_update)
197
+ elif self.existing_handling == "skip":
198
+ skipped.update(loader.get_id(item) for item in to_update)
199
+ elif self.existing_handling == "fail":
200
+ failed_changed.update(loader.get_id(item) for item in to_update)
201
+ else:
202
+ raise ValueError(f"Unsupported existing_handling {self.existing_handling}")
203
+ else:
229
204
  if to_delete:
230
205
  try:
231
206
  loader.delete(to_delete)
@@ -238,23 +213,31 @@ class DMSExporter(CDFExporter[DMSSchema]):
238
213
  try:
239
214
  loader.create(to_create)
240
215
  except CogniteAPIError as e:
241
- failed_created = len(e.failed) + len(e.unknown)
242
- created -= failed_created
216
+ failed_created.update(loader.get_id(item) for item in e.failed + e.unknown)
217
+ created.update(loader.get_id(item) for item in e.successful)
243
218
  error_messages.append(e.message)
219
+ else:
220
+ created.update(loader.get_id(item) for item in to_create)
244
221
 
245
222
  if self.existing_handling in ["update", "force"]:
246
223
  try:
247
224
  loader.update(to_update)
248
225
  except CogniteAPIError as e:
249
- failed_changed = len(e.failed) + len(e.unknown)
250
- changed -= failed_changed
226
+ failed_changed.update(loader.get_id(item) for item in e.failed + e.unknown)
227
+ changed.update(loader.get_id(item) for item in e.successful)
251
228
  error_messages.append(e.message)
252
-
253
- yield UploadDiffsCount(
229
+ else:
230
+ changed.update(loader.get_id(item) for item in to_update)
231
+ elif self.existing_handling == "skip":
232
+ skipped.update(loader.get_id(item) for item in to_update)
233
+ elif self.existing_handling == "fail":
234
+ failed_changed.update(loader.get_id(item) for item in to_update)
235
+
236
+ yield UploadResult(
254
237
  name=loader.resource_name,
255
238
  created=created,
256
239
  changed=changed,
257
- unchanged=len(unchanged),
240
+ unchanged={loader.get_id(item) for item in unchanged},
258
241
  skipped=skipped,
259
242
  failed_created=failed_created,
260
243
  failed_changed=failed_changed,
@@ -262,12 +245,37 @@ class DMSExporter(CDFExporter[DMSSchema]):
262
245
  issues=issue_list,
263
246
  )
264
247
 
265
- if loader.resource_name == "views" and (created or changed) and not redeploy_data_model:
248
+ if loader is ViewLoader and (created or changed):
266
249
  redeploy_data_model = True
267
250
 
268
- def _prepare_schema_and_exporters(
269
- self, rules, client
270
- ) -> tuple[DMSSchema, list[tuple[CogniteResourceList, ResourceLoader]]]:
251
+ def _categorize_items_for_upload(
252
+ self, loader: ResourceLoader, items: Sequence[CogniteResource], is_redeploying
253
+ ) -> tuple[list[CogniteResource], list[CogniteResource], list[CogniteResource], list[CogniteResource]]:
254
+ item_ids = loader.get_ids(items)
255
+ cdf_items = loader.retrieve(item_ids)
256
+ cdf_item_by_id = {loader.get_id(item): item for item in cdf_items}
257
+ to_create, to_update, unchanged, to_delete = [], [], [], []
258
+ for item in items:
259
+ if (
260
+ isinstance(loader, DataModelingLoader)
261
+ and self.include_space is not None
262
+ and not loader.in_space(item, self.include_space)
263
+ ):
264
+ continue
265
+
266
+ cdf_item = cdf_item_by_id.get(loader.get_id(item))
267
+ if cdf_item is None:
268
+ to_create.append(item)
269
+ elif is_redeploying:
270
+ to_update.append(item)
271
+ to_delete.append(cdf_item)
272
+ elif loader.are_equal(item, cdf_item):
273
+ unchanged.append(item)
274
+ else:
275
+ to_update.append(item)
276
+ return to_create, to_delete, to_update, unchanged
277
+
278
+ def _prepare_exporters(self, rules, client) -> list[tuple[CogniteResourceList, ResourceLoader]]:
271
279
  schema = self.export(rules)
272
280
  to_export: list[tuple[CogniteResourceList, ResourceLoader]] = []
273
281
  if self.export_components.intersection({"all", "spaces"}):
@@ -282,9 +290,9 @@ class DMSExporter(CDFExporter[DMSSchema]):
282
290
  to_export.append((schema.databases, RawDatabaseLoader(client)))
283
291
  to_export.append((schema.raw_tables, RawTableLoader(client)))
284
292
  to_export.append((schema.transformations, TransformationLoader(client)))
285
- return schema, to_export
293
+ return to_export
286
294
 
287
- def _validate(self, loader: ResourceLoader, items: list[CogniteResource]) -> IssueList:
295
+ def _validate(self, loader: ResourceLoader, items: CogniteResourceList) -> IssueList:
288
296
  issue_list = IssueList()
289
297
  if isinstance(loader, DataModelLoader):
290
298
  models = cast(list[DataModelApply], items)
@@ -11,7 +11,7 @@ from rdflib import Namespace
11
11
 
12
12
  from cognite.neat.rules._shared import Rules
13
13
  from cognite.neat.rules.issues.base import IssueList, NeatValidationError, ValidationWarning
14
- from cognite.neat.rules.models import DMSRules, InformationRules, RoleTypes
14
+ from cognite.neat.rules.models import AssetRules, DMSRules, InformationRules, RoleTypes
15
15
 
16
16
 
17
17
  class BaseImporter(ABC):
@@ -48,9 +48,9 @@ class BaseImporter(ABC):
48
48
 
49
49
  if rules.metadata.role is role or role is None:
50
50
  output = rules
51
- elif isinstance(rules, DMSRules) and role is RoleTypes.information_architect:
51
+ elif isinstance(rules, DMSRules) or isinstance(rules, AssetRules) and role is RoleTypes.information_architect:
52
52
  output = rules.as_information_architect_rules()
53
- elif isinstance(rules, InformationRules) and role is RoleTypes.dms_architect:
53
+ elif isinstance(rules, InformationRules) or isinstance(rules, AssetRules) and role is RoleTypes.dms_architect:
54
54
  output = rules.as_dms_architect_rules()
55
55
  else:
56
56
  raise NotImplementedError(f"Role {role} is not supported for {type(rules).__name__} rules")
@@ -6,7 +6,7 @@ from collections import Counter
6
6
  from functools import total_ordering
7
7
  from typing import ClassVar, Literal
8
8
 
9
- from pydantic import BaseModel, field_validator
9
+ from pydantic import BaseModel, field_validator, model_serializer
10
10
 
11
11
  from cognite.neat.rules import exceptions
12
12
 
@@ -82,6 +82,7 @@ TABLE_REGEX_COMPILED = re.compile(
82
82
 
83
83
  StepDirection = Literal["source", "target", "origin"]
84
84
  _direction_by_symbol: dict[str, StepDirection] = {"->": "target", "<-": "source"}
85
+ _symbol_by_direction: dict[StepDirection, str] = {"source": "<-", "target": "->"}
85
86
 
86
87
  Undefined = type(object())
87
88
  Unknown = type(object())
@@ -196,10 +197,29 @@ class Step(BaseModel):
196
197
  msg += " ->prefix:suffix, <-prefix:suffix, ->prefix:suffix(prefix:suffix) or <-prefix:suffix(prefix:suffix)"
197
198
  raise ValueError(msg)
198
199
 
200
+ def __str__(self) -> str:
201
+ if self.property:
202
+ return f"{self.class_}({self.property})"
203
+ else:
204
+ return f"{_symbol_by_direction[self.direction]}{self.class_}"
205
+
206
+ def __repr__(self) -> str:
207
+ return self.__str__()
208
+
199
209
 
200
210
  class Traversal(BaseModel):
201
211
  class_: Entity
202
212
 
213
+ def __str__(self) -> str:
214
+ return f"{self.class_}"
215
+
216
+ def __repr__(self) -> str:
217
+ return self.__str__()
218
+
219
+ @model_serializer(when_used="unless-none", return_type=str)
220
+ def as_str(self) -> str:
221
+ return str(self)
222
+
203
223
 
204
224
  class SingleProperty(Traversal):
205
225
  property: Entity
@@ -208,6 +228,9 @@ class SingleProperty(Traversal):
208
228
  def from_string(cls, class_: str, property_: str) -> Self:
209
229
  return cls(class_=Entity.from_string(class_), property=Entity.from_string(property_))
210
230
 
231
+ def __str__(self) -> str:
232
+ return f"{self.class_}({self.property})"
233
+
211
234
 
212
235
  class AllReferences(Traversal):
213
236
  @classmethod
@@ -220,6 +243,9 @@ class AllProperties(Traversal):
220
243
  def from_string(cls, class_: str) -> Self:
221
244
  return cls(class_=Entity.from_string(class_))
222
245
 
246
+ def __str__(self) -> str:
247
+ return f"{self.class_}(*)"
248
+
223
249
 
224
250
  class Origin(BaseModel):
225
251
  class_: Entity
@@ -245,6 +271,9 @@ class Hop(Traversal):
245
271
  ),
246
272
  )
247
273
 
274
+ def __str__(self) -> str:
275
+ return f"{self.class_}{''.join([str(step) for step in self.traversal])}"
276
+
248
277
 
249
278
  class TableLookup(BaseModel):
250
279
  name: str
@@ -261,7 +290,17 @@ class Query(BaseModel):
261
290
 
262
291
 
263
292
  class RDFPath(Rule):
264
- traversal: Traversal | Query
293
+ traversal: SingleProperty | AllProperties | AllReferences | Hop
294
+
295
+ def __str__(self) -> str:
296
+ return f"{self.traversal}"
297
+
298
+ def __repr__(self) -> str:
299
+ return self.__str__()
300
+
301
+ @model_serializer(when_used="unless-none", return_type=str)
302
+ def as_str(self) -> str:
303
+ return str(self)
265
304
 
266
305
 
267
306
  class RawLookup(RDFPath):
@@ -148,9 +148,12 @@ class AssetRules(BaseRules):
148
148
  def as_domain_rules(self) -> DomainRules:
149
149
  from ._converter import _AssetRulesConverter
150
150
 
151
- return _AssetRulesConverter(cast(InformationRules, self)).as_domain_rules()
151
+ return _AssetRulesConverter(self.as_information_architect_rules()).as_domain_rules()
152
152
 
153
153
  def as_dms_architect_rules(self) -> "DMSRules":
154
154
  from ._converter import _AssetRulesConverter
155
155
 
156
- return _AssetRulesConverter(cast(InformationRules, self)).as_dms_architect_rules()
156
+ return _AssetRulesConverter(self.as_information_architect_rules()).as_dms_architect_rules()
157
+
158
+ def as_information_architect_rules(self) -> InformationRules:
159
+ return InformationRules.model_validate(self.model_dump())